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.
Gambaran Umum
Untuk membuat SQL Managed Instance, Anda perlu:
- Buat rahasia Kubernetes untuk menyimpan login dan kata sandi administrator sistem Anda dengan aman
- 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