Azure Arc ile etkinleştirilen SQL Yönetilen Örneğini, Kubernetes araçları kullanarak dağıtın.

Bu makalede Kubernetes araçlarıyla Azure Arc için Azure SQL Yönetilen Örneği dağıtma adımları gösterilmektedir.

Önkoşullar

Zaten bir veri denetleyicisi oluşturmuş olmanız gerekir.

Kubernetes araçlarını kullanarak SQL yönetilen örneği oluşturmak için Kubernetes araçlarının yüklü olması gerekir. Bu makaledeki örneklerde kubectl kullanılacaktır, ancak Kubernetes dashboard’u, oc veya helm gibi diğer Kubernetes araçlarıyla, bu araçlar ve Kubernetes yaml/json hakkında bilginiz varsa, benzer yaklaşımlar kullanılabilir.

kubectl aracını yükleme

Genel bakış

SQL Yönetilen Örnek oluşturmak için yapmanız gerekenler:

  1. Sistem yöneticinizin oturum açma bilgilerini ve parolasını güvenli bir şekilde depolamak için bir Kubernetes gizli anahtarı oluşturun.
  2. SqlManagedInstance özel kaynak tanımına dayanan bir SQL Yönetilen Örneği özel kaynağı oluşturun

Bu öğelerin her ikisini de bir yaml dosyasında tanımlayın.

Yaml dosyası oluşturma

Şablon yaml dosyasını başlangıç noktası olarak kullanarak kendi özel SQL yönetilen örneği yaml dosyanızı oluşturun. Bu dosyayı yerel bilgisayarınıza indirin ve bir metin düzenleyicisinde açın. Yaml dosyaları için söz dizimi vurgulama ve lint özelliklerini destekleyen VS Code gibi bir metin düzenleyicisi kullanın.

Not

2022'nin Şubat ayından itibaren, yedeklemeler için ReadWriteMany (RWX) özellikli depolama sınıfı belirtilmelidir. Erişim modları hakkında daha fazla bilgi edinin. Yedeklemeler için depolama sınıfı belirtilmezse Kubernetes'teki varsayılan depolama sınıfı kullanılır. Varsayılan RWX özellikli değilse, SQL Yönetilen Örnek kurulumu başarılı olmayabilir.

Örnek yaml dosyası

Aşağıdaki yaml dosyası örneğine bakın:

apiVersion: v1
data:
  password: <your base64 encoded password>
  username: <your base64 encoded username>
kind: Secret
metadata:
  name: sql1-login-secret
type: Opaque
---
apiVersion: sql.arcdata.microsoft.com/v12
kind: SqlManagedInstance
metadata:
  name: sql1
  annotations:
    exampleannotation1: exampleannotationvalue1
    exampleannotation2: exampleannotationvalue2
  labels:
    examplelabel1: examplelabelvalue1
    examplelabel2: examplelabelvalue2
spec:
  dev: true #options: [true, false]
  licenseType: LicenseIncluded #options: [LicenseIncluded, BasePrice].  BasePrice is used for Azure Hybrid Benefits.
  tier: GeneralPurpose #options: [GeneralPurpose, BusinessCritical]
  security:
    adminLoginSecret: sql1-login-secret
  scheduling:
    default:
      resources:
        limits:
          cpu: "2"
          memory: 4Gi
        requests:
          cpu: "1"
          memory: 2Gi
  services:
    primary:
      type: LoadBalancer
  storage:
    #backups:
    #  volumes:
    #  - className: azurefile # Backup volumes require a ReadWriteMany (RWX) capable storage class
    #    size: 5Gi
    data:
      volumes:
      - className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
        size: 5Gi
    datalogs:
      volumes:
      - className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
        size: 5Gi
    logs:
      volumes:
      - className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
        size: 5Gi

Oturum açma bilgilerini ve parolayı özelleştirme

Kubernetes gizli dizisi, biri kullanıcı adı ve diğeri parola için olmak üzere base64 ile kodlanmış bir dize olarak depolanır. Bir sistem yöneticisinin oturum açma bilgilerini ve parolasını base64 ile kodlamanız ve bunları data.password ve data.username konumundaki yer tutuculara yerleştirmeniz gerekir. Şablonda sağlanan < ve > simgelerini eklemeyin.

Not

En iyi güvenlik için, oturum açma için değerinin sa kullanılmasına izin verilmez. Parola karmaşıklığı ilkesini izleyin.

İstediğiniz kullanıcı adını ve parolayı base64 kodlamak için çevrimiçi bir araç kullanabilir veya platformunuza bağlı olarak CLI araçlarını kullanabilirsiniz.

PowerShell

[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('<your string to encode here>'))

#Example
#[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('example'))

Linux/macOS

echo -n '<your string to encode here>' | base64

#Example
# echo -n 'example' | base64

Adı özelleştirme

Şablonun name özniteliği için değeri sql1 vardır. Bu değeri değiştirebilirsiniz, ancak DNS adlandırma standartlarına uyan karakterler içermelidir. Ayrıca sırrın adını da eşleşecek şekilde değiştirmeniz gerekir. Örneğin, SQL yönetilen örneğinin adını sql2 olarak değiştirirseniz, gizlinin adını sql1-login-secret'den sql2-login-secret'ye değiştirmelisiniz.

Kaynak gereksinimlerini özelleştirme

Kaynak gereksinimlerini (RAM ve çekirdek sınırları ve istekleri) gerektiği gibi değiştirebilirsiniz.

Not

Kubernetes kaynak idaresi hakkında daha fazla bilgi edinebilirsiniz.

Kaynak sınırları ve istekleri için gereksinimler:

  • Çekirdek sınırı değeri faturalama amacıyla gereklidir .
  • Kaynak isteklerinin ve sınırlarının geri kalanı isteğe bağlıdır.
  • Çekirdek sınırı ve isteği, belirtilmişse pozitif bir tamsayı değeri olmalıdır.
  • Belirtilmişse çekirdek isteği için en az 1 çekirdek gereklidir.
  • Bellek değeri biçimi Kubernetes gösterim notasyonunu izler.
  • Belirtilirse bellek isteği için en az 2 GB gerekir.
  • Genel bir kılavuz olarak, üretim kullanım örnekleri için her 1 çekirdek için 4 GB RAM'e sahip olmanız gerekir.

Hizmet türünü özelleştirme

İsterseniz hizmet türü NodePort olarak değiştirilebilir. Rastgele bir bağlantı noktası numarası atanır.

Depolamayı özelleştirme

Depolama için depolama sınıflarını ortamınızla eşleşecek şekilde özelleştirebilirsiniz. Hangi depolama sınıflarının kullanılabilir olduğundan emin değilseniz, bunları görüntülemek için komutunu kubectl get storageclass çalıştırın.

Şablonun varsayılan değeri vardır default.

Örneğin:

storage:
    data:
      volumes:
      - className: default 

Bu örnek, adlı default bir depolama sınıfı olduğu anlamına gelir. Varsayılan olan bir depolama sınıfı olmadığı anlamına gelir. İsterseniz depolama alanınızın boyutunu da değiştirebilirsiniz. Daha fazla bilgi için bkz . depolama yapılandırması.

SQL yönetilen örneği oluşturma

Artık SQL Yönetilen Örneği YAML dosyasını özelleştirdiğinize göre, aşağıdaki komutu çalıştırarak SQL Yönetilen Örneğini oluşturabilirsiniz.

kubectl create -n <your target namespace> -f <path to your yaml file>

#Example
#kubectl create -n arc -f C:\arc-data-services\sqlmi.yaml

Oluşturma durumunu izleme

SQL yönetilen örneğinin oluşturulması birkaç dakika sürer. Aşağıdaki komutlarla başka bir terminal penceresinde ilerleme durumunu izleyebilirsiniz:

Not

Aşağıdaki örnek komutlarda, adı sql1 olan bir SQL yönetilen örneği ve adı arc olan bir Kubernetes ad alanı oluşturduğunuz varsayılır. Farklı bir ad alanı/SQL yönetilen örneği adı kullandıysanız, arc ve sqlmi öğelerini adlarınızla değiştirebilirsiniz.

kubectl get sqlmi/sql1 --namespace arc
kubectl get pods --namespace arc

Ayrıca belirli bir podun oluşturma durumunu da de kontrol edebilirsiniz. kubectl describe pod ...'i çalıştırın. Sorunları gidermek için bu komutu kullanın. Örneğin:

kubectl describe pod/<pod name> --namespace arc

#Example:
#kubectl describe pod/sql1-0 --namespace arc

Dağıtım sorunlarını giderme

Dağıtımda herhangi bir sorunla karşılaşırsanız lütfen sorun giderme kılavuzuna bakın.

Azure Arc tarafından etkinleştirilen SQL Yönetilen Örneğine bağlanın