Azure AKS集成KeyVault:Terraform azurerm 2.75.0插件配置报错求助
问题原因
你使用的Terraform AzureRM Provider 2.75.0版本不支持key_vault_secrets_provider这个add-on配置块——该配置块是在AzureRM Provider 3.0.0及以上版本才正式引入的,用于直接管理AKS的Azure Key Vault Secrets Provider插件。
解决方案
有两种可行的解决方式,根据你的环境需求选择:
方案一:升级AzureRM Provider版本到3.x以上
这是最直接的方式,升级后可以直接通过addon_profile配置插件:
- 更新Provider版本约束
修改Terraform配置中的provider版本声明:
terraform { required_providers { azurerm = { source = "hashicorp/azurerm" version = ">=3.0.0" # 推荐使用稳定的新版本,比如3.70.0 } azuread = { source = "hashicorp/azuread" version = "=2.6.0" } } }
- 在AKS的addon_profile中添加key_vault_secrets_provider块
修改azurerm_kubernetes_cluster资源的addon_profile部分,加入以下配置:
addon_profile { ingress_application_gateway { enabled = true gateway_name = var.appgw_name subnet_id = var.appgw_subnet_id } oms_agent { enabled = "true" log_analytics_workspace_id = azurerm_log_analytics_workspace.aks.id } http_application_routing { enabled = "false" } # 添加Key Vault Secrets Provider配置 key_vault_secrets_provider { enabled = true secret_rotation_enabled = true } }
注意:升级到3.x版本后,部分AzureRM资源的语法可能有变更,需根据官方提示调整配置(若遇到兼容性问题)。
方案二:不升级Provider,通过Helm部署插件
如果无法升级Provider,可以使用Terraform的Helm Provider直接部署Azure Key Vault Secrets Provider插件:
- 添加Helm Provider配置
在Terraform配置中加入Helm Provider的声明和配置:
terraform { required_providers { azurerm = { source = "hashicorp/azurerm" version = "=2.75.0" } azuread = { source = "hashicorp/azuread" version = "=2.6.0" } helm = { source = "hashicorp/helm" version = ">=2.0.0" } } } provider "helm" { kubernetes { host = azurerm_kubernetes_cluster.aks.kube_config.0.host client_certificate = base64decode(azurerm_kubernetes_cluster.aks.kube_config.0.client_certificate) client_key = base64decode(azurerm_kubernetes_cluster.aks.kube_config.0.client_key) cluster_ca_certificate = base64decode(azurerm_kubernetes_cluster.aks.kube_config.0.cluster_ca_certificate) } }
- 部署Helm Chart
添加helm_release资源来部署插件:
resource "helm_release" "akv_secrets_provider" { name = "csi-secrets-store-provider-azure" repository = "https://azure.github.io/secrets-store-csi-driver-provider-azure/charts" chart = "csi-secrets-store-provider-azure" namespace = "kube-system" # 启用密钥自动旋转 set { name = "secrets-store-csi-driver.enableSecretRotation" value = "true" } }
额外说明
你已经为AKS服务主体配置KeyVault访问策略的步骤是正确的,确保该服务主体的object_id确实指向AKS的托管服务主体或你指定的服务账户即可。
内容的提问来源于stack exchange,提问作者biswajit sahu
相关产品推荐
相关产品推荐

