Share via


使用 Kubernetes 工具部署 Azure Arc 所啟用的 SQL 受控執行個體

本文示範如何使用 Kubernetes 工具部署適用於 Azure Arc 的 Azure SQL 受控執行個體。

必要條件

您應該已經建立資料控制器

若要使用 Kubernetes 工具來建立 SQL 受控執行個體,您必須安裝 Kubernetes 工具。 本文中的範例會使用 kubectl,但您可以使用類似的方法搭配其他 Kubernetes 工具,例如 Kubernetes 儀表板、ochelm (如果您熟悉這些工具和 Kubernetes yaml/json)。

安裝 kubectl 工具

概觀

若要建立 SQL 受控執行個體,您需要:

  1. 建立 Kubernetes 祕密以安全地儲存系統管理員登入和密碼
  2. 根據 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.passworddata.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 受控執行個體名稱,則可以將 arcsqlmi 取代為您的名稱。

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

部署問題的疑難排解

如果您在部署時遇到問題,請參閱疑難排解指南

連線到 Azure Arc 所啟用的 SQL 受控執行個體