Membuat SQL Managed Instance dengan dukungan Azure Arc menggunakan alat Kubernetes

Artikel ini menunjukkan cara menyebarkan Azure SQL Managed Instance untuk Azure Arc dengan alat Kubernetes.

Prasyarat

Anda seharusnya sudah membuat pengontrol data.

Untuk membuat instans terkelola SQL menggunakan alat Kube, Anda harus memasang alat Kube. Contoh dalam artikel ini akan menggunakan kubectl, tetapi pendekatan serupa dapat digunakan dengan alat Kube lainnya seperti dasbor Kube, oc, atau helm jika Anda terbiasa dengan alat-alat tersebut dan Kube yaml/json.

Pasang alat kubectl

Gambaran Umum

Untuk membuat SQL Managed Instance, Anda perlu:

  1. Buat rahasia Kubernetes untuk menyimpan login dan kata sandi administrator sistem Anda dengan aman
  2. Membuat sumber daya kustom SQL Managed Instance berdasarkan SqlManagedInstance definisi sumber daya kustom

Tentukan kedua item ini dalam file yaml.

Membuat file yaml

Gunakan file yaml templat sebagai titik awal untuk membuat file yaml instans terkelola SQL kustom Anda sendiri. Unduh file ini ke komputer lokal Anda lalu buka di editor teks. Gunakan editor teks seperti Visual Studio Code yang mendukung penyorotan sintaks dan linting untuk file yaml.

Catatan

Dimulai dengan rilis Februari 2022, ReadWriteMany kelas penyimpanan berkemampuan (RWX) perlu ditentukan untuk cadangan. Pelajari selengkapnya tentang mode akses. Jika tidak ada kelas penyimpanan yang ditentukan untuk cadangan, kelas penyimpanan default di Kubernetes akan digunakan. Jika defaultnya tidak mampu RWX, penginstalan SQL Managed Instance mungkin tidak berhasil.

Contoh file yaml

Lihat contoh file yaml berikut:

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/v5
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

Mengkustomisasi log masuk dan kata sandi

Rahasia Kube disimpan sebagai untai (karakter) yang dikodekan base64 - satu untuk nama pengguna dan satu untuk kata sandi. Anda harus mengodekan base64 kata sandi dan log masuk administrator sistem lalu menempatkannya di lokasi tempat penampung di data.password dan data.username. Jangan sertakan simbol < dan > yang disediakan dalam templat.

Catatan

Untuk keamanan optimal, menggunakan nilai sa tidak diizinkan untuk masuk . Mengikuti kebijakan kompleksitas kata sandi.

Anda dapat menggunakan alat online untuk menyandikan nama pengguna dan kata sandi base64 yang Anda inginkan atau Anda dapat menggunakan alat CLI bawaan tergantung pada platform Anda.

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

Mengkustomisasi nama

Templat memiliki nilai sql1 untuk atribut nama. Anda dapat mengubah nilai ini, tetapi harus menyertakan karakter yang mengikuti standar penamaan DNS. Anda juga harus mengubah nama rahasia agar sesuai. Misalnya, jika Anda mengubah nama instans terkelola SQL menjadi sql2, Anda harus mengubah nama rahasia dari sql1-login-secret menjadi sql2-login-secret

Menyesuaikan persyaratan sumber daya

Anda dapat mengubah persyaratan sumber daya - permintaan dan batas RAM dan core - sesuai kebutuhan.

Catatan

Anda dapat mempelajari selengkapnya tentang tata kelola sumber daya Kube.

Persyaratan untuk batas dan permintaan sumber daya:

  • Nilai batas core diperlukan untuk tujuan tagihan.
  • Sisa permintaan dan batas sumber daya lainnya bersifat opsional.
  • Batas dan permintaan core harus merupakan nilai bilangan bulat positif, jika ditentukan.
  • Minimum 1 inti diperlukan untuk permintaan core, jika ditentukan.
  • Format nilai memori mengikuti notasi Kube.
  • Minimal 2 Gi diperlukan untuk permintaan memori, jika ditentukan.
  • Sebagai pedoman umum, Anda harus memiliki RAM 4 GB untuk setiap 1 inti untuk kasus penggunaan produksi.

Menyesuaikan jenis layanan

Jenis layanan dapat diubah ke NodePort jika diperlukan. Nomor port acak akan ditetapkan.

Menyesuaikan penyimpanan

Anda dapat menyesuaikan kelas penyimpanan agar penyimpanan sesuai dengan lingkungan Anda. Jika tidak yakin kelas penyimpanan mana yang tersedia, Anda dapat menjalankan perintah kubectl get storageclass untuk melihatnya.

Templat memiliki nilai default default.

Misalnya

storage:
    data:
      volumes:
      - className: default 

Contoh ini berarti bahwa ada kelas penyimpanan bernama default - bukan berarti ada kelas penyimpanan yang merupakan default. Anda juga dapat secara opsional mengubah ukuran penyimpanan Anda. Untuk informasi selengkapnya, lihat konfigurasi penyimpanan.

Membuat instans terkelola SQL

Sekarang setelah Anda mengkustomisasi file yaml instans terkelola SQL, Anda dapat membuat instans terkelola SQL dengan menjalankan perintah berikut:

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

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

Memantau status pembuatan

Membuat instans terkelola SQL akan memakan waktu beberapa menit hingga selesai. Anda dapat memantau kemajuan ini di jendela terminal lain dengan perintah berikut:

Catatan

Contoh perintah di bawah ini mengasumsikan bahwa Anda membuat instans terkelola SQL bernama sql1 dan namespace Layanan Kubernetes dengan nama arc. Jika Anda menggunakan nama namespace layanan/instans terkelola SQL yang berbeda, Anda dapat mengganti arc dan sqlmi dengan nama Anda.

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

Anda juga dapat memeriksa status pembuatan pod tertentu. Jalankan kubectl describe pod .... Gunakan perintah ini untuk memecahkan masalah apa pun. Contohnya:

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

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

Memecahkan masalah penyebaran

Jika Anda mengalami masalah dengan penyebaran, silakan lihat panduan pemecahan masalah.

Langkah berikutnya

Menghubungkan ke SQL Managed Instance dengan dukungan Azure Arc