Azure Kubernetes Service Üzerinde SQL Server Deployment

Merhaba, “Azure Kubernetes Service” makale serisine devam ediyoruz. Bu makalemizde AKS üzerinde SQL Server deployment adımlarını beraber inceleyeceğiz. ASK üzerinde bir servisi veya uygulamayı dakikalar içersinde hazır hale getirmek çok kolay ve hızlı. Şimdi hızlıca deployment adımlarına geçelim.

İlk makalede AKS deployment’ını yapmıştık ancak SQL deployment yaparken dikkat etmeniz gereken en önemli şey seçeceğiniz node’un kapasitesi. Ben 8 core altındaki node’lara deployment yapamadım bu yüzden aşağıdaki görseldeki node’u seçtim ve AKS deployment’ı buna göre yaptım.

İlk olarak “sa” kullanıcısı için bir parola oluşturuyorum.

kubectl create secret generic mssql --from-literal=MSSQL_SA_PASSWORD="C0ZumP@rk42*!"

İkinci adımda bir stroage oluşturuyorum. Burada çok önemli iki kavram var Persistent volume (Pv) ve Persistent volume Claim (Pvc) bu kavramları başka bir makalede daha detaylı inceleyeceğiz.

Aşağıdaki kod bloğunu “.yaml” uzantılı kaydediyoruz.

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
     name: azure-disk
provisioner: kubernetes.io/azure-disk
parameters:
  storageaccounttype: Standard_LRS
  kind: Managed
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: mssql-data
  annotations:
    volume.beta.kubernetes.io/storage-class: azure-disk
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 8Gi
kubectl apply -f pvc.yaml

Stroge kullanım için hazıır.

kubectl describe pvc mssql-data

Sırada SQL deployment için “.yaml” dosyasını oluşturuyorum. Deployment sırasında istediğiniz sürümü ve edition’ı seçebiliyoruz (“ EnterpriseStandard,Express” ). Aşağıdaki dosya üzerinde gerekli düzenlemeleri yapıyor ve kaydediyoruz.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mssql-deployment
spec:
  replicas: 1
  selector:
     matchLabels:
       app: mssql
  template:
    metadata:
      labels:
        app: mssql
    spec:
      terminationGracePeriodSeconds: 30
      hostname: mssqlinst
      securityContext:
        fsGroup: 10001
      containers:
      - name: mssql
        image: mcr.microsoft.com/mssql/server:2019-latest
        resources:
          requests:
            memory: "2G"
            cpu: "2000m"
          limits:
            memory: "2G"
            cpu: "2000m"
        ports:
        - containerPort: 1433
        env:
        - name: MSSQL_PID
          value: "Developer"
        - name: ACCEPT_EULA
          value: "Y"
        - name: MSSQL_SA_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mssql
              key: MSSQL_SA_PASSWORD
        volumeMounts:
        - name: mssqldb
          mountPath: /var/opt/mssql
      volumes:
      - name: mssqldb
        persistentVolumeClaim:
          claimName: mssql-data
---
apiVersion: v1
kind: Service
metadata:
  name: mssql-deployment
spec:
  selector:
    app: mssql
  ports:
    - protocol: TCP
      port: 1433
      targetPort: 1433
  type: LoadBalancer
kubectl apply -f sqldeployment.yaml

Aşağıda görüldüğü gibi pod’umuz çalışır durumda.

Aşağıdaki komut ile servis bilgilerini öğreniyoruz ve external ip adresi ile SQL Server’a bağlantı sağlıyoruz.

kubectl get services

SQL Server Management Studio açıyor ve external ip adresini kullanarak erişimi sağlıyorum.

Test amaçlı “cozumpark” adında yeni bir database oluşturdum.

Aşağıda SQL versiyonunu görüyoruz.

Evet görüldüğü gibi basit bir kaç adımda AKS üzerinde SQL deployment’ı tamamlıyoruz. Keyifli okumalar,

Exit mobile version