更新 Azure Kubernetes 服务(AKS)集群的密钥保管库模式,并使用 Key Management Service (KMS) 的 etcd 加密

本文介绍如何在使用密钥管理服务(KMS)的 etcd 加密的 Azure Kubernetes Service (AKS) 群集中,将密钥保管库模式从公用模式更新为专用模式,或从专用模式更新为公用模式。

先决条件

更新密钥保管库模式

注释

若要更改具有不同模式(无论是公共还是专用)的不同密钥保管库,可以直接运行 az aks update。 若要更改附加密钥保管库的模式,必须先关闭 KMS,然后使用新的密钥保管库 ID 再次打开它。

  1. 使用 az aks update 命令带有 --disable-azure-keyvault-kms 参数关闭现有群集上的 KMS,然后释放密钥保管库。

    az aks update --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --disable-azure-keyvault-kms
    

    警告

    关闭 KMS 后,仍需要加密密钥保管库密钥。 无法删除或过期。

  2. 使用 kubectl get secrets 命令更新所有机密,以确保之前创建的机密不再加密。 对于较大的群集,可能需要按命名空间细分机密或创建更新脚本。 如果上一个更新 KMS 命令失败,仍运行以下命令以避免 KMS 插件出现意外状态。

    kubectl get secrets --all-namespaces -o json | kubectl replace -f -
    
  3. 使用命令az keyvault update并将参数--public-network-access设置为Disabled,将密钥保管库从公共更改为专用。

    az keyvault update --name $KEY_VAULT --resource-group $RESOURCE_GROUP --public-network-access Disabled
    
  4. 使用 az aks update 命令并将 --azure-keyvault-kms-key-vault-network-access 参数设置为 Private 来开启使用更新的私钥保管库的 KMS。

    az aks update \
         --name $CLUSTER_NAME \
         --resource-group $RESOURCE_GROUP  \
         --enable-azure-keyvault-kms \
         --azure-keyvault-kms-key-id $KEY_ID \
         --azure-keyvault-kms-key-vault-network-access "Private" \
         --azure-keyvault-kms-key-vault-resource-id $KEY_VAULT_RESOURCE_ID