教學課程:在 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 帳戶。 免費建立帳戶。
- 安裝 Azure CLI,然後藉由使用 az login 命令來登入 Azure CLI。
- 安裝 Docker 和 kubectl 來管理容器映像和 Kubernetes 資源。
- 對容器和 AKS 有基本了解。 從準備 AKS 的應用程式開始。
建立 Azure 資源
為本教學課程建立資源群組。
az group create \ --name MyResourceGroup \ --location eastus
使用下列命令建立 AKS 叢集,或參考教學課程。 我們會在此叢集中建立服務連線、Pod 定義,以及部署範例應用程式。
az aks create \ --resource-group MyResourceGroup \ --name MyAKSCluster \ --enable-managed-identity \ --node-count 1
使用下列命令連線至叢集。
az aks get-credentials \ --resource-group MyResourceGroup \ --name MyAKSCluster
使用下列命令建立 Azure Key Vault,或參考教學課程。 這是連線到 AKS 叢集和 CSI 驅動程式從中同步處理祕密的目標服務。
az keyvault create \ --resource-group MyResourceGroup \ --name MyKeyVault \ --location EastUS
使用下列命令在 Key Vault 中建立祕密。
az keyvault secret set \ --vault-name MyKeyVault \ --name ExampleSecret \ --value MyAKSExampleSecret
使用服務連接器在 AKS 中建立服務連線 (預覽)
使用 Azure 入口網站或 Azure CLI 建立 AKS 叢集與 Azure Key Vault 之間的服務連線。
在 Azure 入口網站中開啟您的 Kubernetes 服務,然後從左側功能表中選取 [服務連接器]。
選取 [建立],然後填入設定,如下所示。 讓其他設定保留其預設值。
設定 選擇 描述 Kubernetes 命名空間 預設值 您在叢集中需要連線的命名空間。 服務類型 Key Vault (啟用 CSI) 選擇 [Key Vault] 作為目標服務類型,然後核取啟用 CSI 的選項。 連線名稱 keyvault_conn 使用服務連接器所提供的連線名稱,或選擇您自己的連線名稱。 訂用帳戶 <MySubscription>
Azure Key Vault 目標服務的訂用帳戶。 Key vault <MyKeyVault>
您想要與其連線的目標金鑰保存庫。 用戶端類型 Python 您用來連線到目標服務的程式碼語言或架構。 建立連線之後,[服務連接器] 頁面會顯示新連線的相關資訊。
測試連線
複製範例存放庫:
git clone https://github.com/Azure-Samples/serviceconnector-aks-samples.git
移至 Azure Key Vault 的存放庫範例資料夾:
cd serviceconnector-aks-samples/azure-keyvault-csi-provider
取代
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
- 以我們建立和連線的金鑰保存庫名稱取代
使用
kubectl apply
命令將 Kubernetes 資源部署至叢集。 如果未安裝,請使用 az aks install-cli 命令,在本機安裝kubectl
。- 部署
SecretProviderClass
CRD。
kubectl apply -f secret_provider_class.yaml
- 部署
pod
。 命令會在 AKS 叢集的預設命名空間中建立名為sc-demo-keyvault-csi
的 Pod。
kubectl apply -f pod.yaml
- 部署
使用
kubectl
檢視 Pod,檢查部署是否成功。kubectl get pod/sc-demo-keyvault-csi
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 連線到服務。