使用 Kubernetes 工具部署 Azure Arc 所啟用的 SQL 受控執行個體
本文示範如何使用 Kubernetes 工具部署適用於 Azure Arc 的 Azure SQL 受控執行個體。
必要條件
您應該已經建立資料控制器。
若要使用 Kubernetes 工具來建立 SQL 受控執行個體,您必須安裝 Kubernetes 工具。 本文中的範例會使用 kubectl
,但您可以使用類似的方法搭配其他 Kubernetes 工具,例如 Kubernetes 儀表板、oc
或 helm
(如果您熟悉這些工具和 Kubernetes yaml/json)。
概觀
若要建立 SQL 受控執行個體,您需要:
- 建立 Kubernetes 祕密以安全地儲存系統管理員登入和密碼
- 根據
SqlManagedInstance
自訂資源定義建立 SQL 受控執行個體自訂資源
在 yaml 檔案中定義這兩個項目。
建立 yaml 檔案
使用範本 yaml 檔案作為起點,以建立您自己的自訂 SQL 受控執行個體 yaml 檔案。 將此檔案下載到本機電腦,並在文字編輯器中將其開啟。 使用 VS Code 之類的文字編輯器,以支援 yaml 檔案的語法醒目提示和 Lint 分析。
注意
從 2022 年 2 月版本開始,必須針對備份指定支援 ReadWriteMany
(RWX) 的儲存類別。 深入了解存取模式。
如果未針對備份指定任何儲存類別,則會使用 Kubernetes 中的預設儲存類別。 如果預設值不支援 RWX,則 SQL 受控執行個體安裝將不會成功。
範例 yaml 檔案
請參閱下列 yaml 檔案範例:
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
自訂登入和密碼
Kubernetes 祕密會儲存為 base64 編碼字串 - 一個用於使用者名稱,另一個用於密碼。 您必須將系統管理員登入和密碼編碼為 base64,並將其放在 data.password
和 data.username
的預留位置。 請勿包含在範本中提供的 <
和 >
符號。
注意
為了獲得最佳安全性,不允許使用 值 sa
進行登入。
遵循密碼複雜性原則。
您可以使用線上工具,將所需的使用者名稱和密碼編碼為 base64,也可以根據平台使用 CLI 工具。
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
自訂名稱
範本的名稱屬性具有值 sql1
。 您可以變更此值,但其包含的字元必須遵循 DNS 命名標準。 您也必須變更祕密的名稱以符合該標準。 例如,如果將 SQL 受控執行個體的名稱變更為 sql2
,則您必須將祕密的名稱從 sql1-login-secret
變更為 sql2-login-secret
自訂資源需求
您可以視需要變更資源需求 - RAM 和核心限制和要求。
注意
您可以深入了解 Kubernetes 資源治理。
資源限制和要求的需求:
- 需要填寫核心限制值才能計費。
- 其餘的資源要求和限制是選填的。
- 如果指定這些值,核心限制和要求必須是正整數值。
- 如果指定這些值,核心要求至少需要 1 個核心。
- 記憶體值格式遵循 Kubernetes 標記法。
- 如果指定這些值,記憶體要求至少需要 2 GB。
- 一般指導方針是,針對生產環境使用案例,每 1 核心都應該有 4 GB 的 RAM。
自訂服務類型
如有需要,服務類型可以變更為 NodePort。 將會指派隨機連接埠號碼。
自訂儲存體
您可以自訂儲存體的儲存類別,以配合環境。 如果您不確定有哪些儲存類別可用,請執行命令 kubectl get storageclass
來加以檢視。
範本的預設值為 default
。
例如:
storage:
data:
volumes:
- className: default
這個範例表示有名為 default
的儲存類別,而沒有預設的儲存類別。 您也可以選擇性地變更儲存體的大小。 如需詳細資訊,請參閱儲存體設定。
建立 SQL 受控執行個體
既然您已自訂 SQL 受控執行個體 yaml 檔案,您可以執行下列命令來建立 SQL 受控執行個體:
kubectl create -n <your target namespace> -f <path to your yaml file>
#Example
#kubectl create -n arc -f C:\arc-data-services\sqlmi.yaml
監視建立狀態
建立 SQL 受控執行個體需要幾分鐘的時間才能完成。 您可以使用下列命令,在另一個終端機視窗中監視進度:
注意
下列範例命令假設您已建立名為 sql1
的 SQL 受控執行個體,以及名稱為 arc
的 Kubernetes 命名空間。 如果您使用不同的命名空間/SQL 受控執行個體名稱,則可以將 arc
和 sqlmi
取代為您的名稱。
kubectl get sqlmi/sql1 --namespace arc
kubectl get pods --namespace arc
您也可以檢查任何特定 Pod 的建立狀態。 執行 kubectl describe pod ...
。 使用此命令對任何問題進行疑難排解。 例如:
kubectl describe pod/<pod name> --namespace arc
#Example:
#kubectl describe pod/sql1-0 --namespace arc
部署問題的疑難排解
如果您在部署時遇到問題,請參閱疑難排解指南。