共用方式為


教學課程:在 Azure Kubernetes Service (AKS) 叢集中使用適用於祕密存放區 CSI 驅動程式的 Azure Key Vault 提供者

了解如何使用 Azure Kubernetes Service (AKS) 叢集中的 CSI 驅動程式,透過服務連接器的協助連線到 Azure Key Vault。 在本教學課程中,您會完成下列工作:

  • 建立 AKS 叢集和 Azure Key Vault。
  • 使用服務連接器在 AKS 叢集與 Azure Key Vault 之間建立連線。
  • 建立 SecretProviderClass CRD 和 pod 取用 CSI 提供者來測試連線。
  • 清除資源。

重要

AKS 內的服務連線目前為預覽狀態。 請參閱 Microsoft Azure 預覽版增補使用規定,以了解適用於 Azure 功能 (搶鮮版 (Beta)、預覽版,或尚未正式發行的版本) 的法律條款。

警告

Microsoft 建議您使用最安全的可用驗證流程。 這個程序描述的驗證流程需要在應用程式中具備極高的信任度,且伴隨著其他流程並未面臨的風險。 請僅在其他較安全的流程 (例如受控身分識別) 皆不具可行性的情況下,才使用這個流程。

必要條件

建立 Azure 資源

  1. 為本教學課程建立資源群組。

    az group create \
        --name MyResourceGroup \
        --location eastus
    
  2. 使用下列命令建立 AKS 叢集,或參考教學課程。 我們會在此叢集中建立服務連線、Pod 定義,以及部署範例應用程式。

    az aks create \
        --resource-group MyResourceGroup \
        --name MyAKSCluster \
        --enable-managed-identity \
        --node-count 1
    
  3. 使用下列命令連線至叢集。

    az aks get-credentials \
        --resource-group MyResourceGroup \
        --name MyAKSCluster
    
  4. 使用下列命令建立 Azure Key Vault,或參考教學課程。 這是連線到 AKS 叢集和 CSI 驅動程式從中同步處理祕密的目標服務。

    az keyvault create \
        --resource-group MyResourceGroup \  
        --name MyKeyVault \
        --location EastUS
    
  5. 使用下列命令在 Key Vault 中建立祕密。

    az keyvault secret set \
        --vault-name MyKeyVault \
        --name ExampleSecret \
        --value MyAKSExampleSecret
    

使用服務連接器在 AKS 中建立服務連線 (預覽)

使用 Azure 入口網站或 Azure CLI 建立 AKS 叢集與 Azure Key Vault 之間的服務連線。

  1. 在 Azure 入口網站中開啟您的 Kubernetes 服務,然後從左側功能表中選取 [服務連接器]

  2. 選取 [建立],然後填入設定,如下所示。 讓其他設定保留其預設值。

    設定 選擇 描述
    Kubernetes 命名空間 預設值 您在叢集中需要連線的命名空間。
    服務類型 Key Vault (啟用 CSI) 選擇 [Key Vault] 作為目標服務類型,然後核取啟用 CSI 的選項。
    連線名稱 keyvault_conn 使用服務連接器所提供的連線名稱,或選擇您自己的連線名稱。
    訂用帳戶 <MySubscription> Azure Key Vault 目標服務的訂用帳戶。
    Key vault <MyKeyVault> 您想要與其連線的目標金鑰保存庫。
    用戶端類型 Python 您用來連線到目標服務的程式碼語言或架構。
  3. 建立連線之後,[服務連接器] 頁面會顯示新連線的相關資訊。

    Azure 入口網站的螢幕擷取畫面,其中檢視由服務連接器建立的 kubernetes 資源。

測試連線

  1. 複製範例存放庫:

    git clone https://github.com/Azure-Samples/serviceconnector-aks-samples.git
    
  2. 移至 Azure Key Vault 的存放庫範例資料夾:

    cd serviceconnector-aks-samples/azure-keyvault-csi-provider
    
  3. 取代 azure-keyvault-csi-provider 資料夾中 secret_provider_class.yaml 檔案的預留位置。

    • 以我們建立和連線的金鑰保存庫名稱取代 <AZURE_KEYVAULT_NAME>。 您可以從服務連接器的 Azure 入口網站取得此值。
    • 以金鑰保存庫的租用戶識別碼取代 <AZURE_KEYVAULT_TENANTID>。 您可以從服務連接器的 Azure 入口網站取得此值。
    • azureKeyvaultSecretsProvider 附加元件的身分識別用戶端識別碼取代 <AZURE_KEYVAULT_CLIENTID>。 您可以從服務連接器的 Azure 入口網站取得此值。
    • 以我們建立的金鑰保存庫祕密名稱取代 <KEYVAULT_SECRET_NAME>,例如 ExampleSecret
  4. 使用 kubectl apply 命令將 Kubernetes 資源部署至叢集。 如果未安裝,請使用 az aks install-cli 命令,在本機安裝 kubectl

    1. 部署 SecretProviderClass CRD。
    kubectl apply -f secret_provider_class.yaml
    
    1. 部署 pod。 命令會在 AKS 叢集的預設命名空間中建立名為 sc-demo-keyvault-csi 的 Pod。
    kubectl apply -f pod.yaml
    
  5. 使用 kubectl 檢視 Pod,檢查部署是否成功。

    kubectl get pod/sc-demo-keyvault-csi
    
  6. Pod 啟動之後,便可使用您在部署 YAML 中指定的磁碟區路徑上掛接的內容。 使用下列命令來驗證您的祕密,並列印測試祕密。

    • 使用下列命令來顯示祕密存放區中保存的祕密。
    kubectl exec sc-demo-keyvault-csi -- ls /mnt/secrets-store/
    
    • 使用下列命令來顯示存放區中的祕密。 此範例命令會顯示測試祕密 ExampleSecret
    kubectl exec sc-demo-keyvault-csi -- cat /mnt/secrets-store/ExampleSecret
    

清除資源

如果您不需要重複使用您在本教學課程中建立的資源,請藉由刪除資源群組來刪除您建立的所有資源。

az group delete \
    --resource-group MyResourceGroup

下一步

請閱讀下列文章,以深入了解服務連接器概念,以及其如何協助 AKS 連線到服務。