You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Azure Key Vault中的密钥传入Kubernetes部署文件?

从Azure Key Vault往AKS Deployment注入环境变量的两种方案

方案一:Azure Pipeline里直接替换Deployment文件的占位符

这是最贴合你当前流水线流程的方式,步骤简单直接:

  1. 把Key Vault里的密钥拉到Pipeline变量中
    在Pipeline的YAML里添加AzureKeyVault任务,配置你的Azure订阅、Key Vault名称,指定要拉取的目标密钥(也可以直接拉取全部)。示例配置:
    - task: AzureKeyVault@2
      inputs:
        azureSubscription: '你的Azure订阅服务连接'
        KeyVaultName: '你的Key Vault名称'
        SecretsFilter: 'Development_variableFromAzure,URLS_variableFromAzure' # 精准拉取需要的密钥
        RunAsPreJob: false
    
  2. 替换Deployment.yaml里的占位符
    用Pipeline的Replace Tokens插件即可,配置目标文件为**/deployment.yaml,令牌格式设为自定义的${开头、}结尾,插件会自动把Pipeline中从Key Vault拉取到的变量值替换进去。
    要是不想用插件,写个PowerShell脚本也能搞定:
    (Get-Content ./deployment.yaml) -replace '${Development_variableFromAzure}', "$(Development_variableFromAzure)" `
                                    -replace '${URLS_variableFromAzure}', "$(URLS_variableFromAzure)" | Set-Content ./deployment.yaml
    
  3. 正常部署到AKS
    接着用Azure CLI任务执行kubectl apply -f deployment.yaml即可,替换后的部署文件里已经是真实的密钥值。

方案二:用AKS的Key Vault Secrets Provider(生产环境推荐)

这种方式不用在Pipeline里触碰敏感数据,让AKS直接和Key Vault对接,安全性更高:

  1. 给AKS启用Secrets Provider附加组件
    用Azure CLI执行以下命令:
    az aks enable-addons --addons azure-keyvault-secrets-provider --name 你的AKS集群名 --resource-group 你的资源组名
    
  2. 创建SecretProviderClass资源
    这个资源用来定义AKS需要从Key Vault同步哪些密钥,注意要给AKS的托管身份配置Key Vault的密钥读取权限。示例YAML:
    apiVersion: secrets-store.csi.x-k8s.io/v1
    kind: SecretProviderClass
    metadata:
      name: azure-kv-secrets
    spec:
      provider: azure
      parameters:
        useVMManagedIdentity: "true"
        userAssignedIdentityID: "你的AKS托管身份ID"
        keyvaultName: "你的Key Vault名称"
        objects: |
          array:
            - |
              objectName: Development_variableFromAzure
              objectType: secret
            - |
              objectName: URLS_variableFromAzure
              objectType: secret
        tenantId: "你的Azure租户ID"
    
  3. 修改Deployment.yaml引用同步的密钥
    不用再写占位符,直接通过valueFrom引用同步过来的密钥:
    containers:
      - name: 你的应用容器名
        env:
          - name: ASPNETCORE_ENVIRONMENT
            valueFrom:
              secretKeyRef:
                name: azure-kv-secrets
                key: Development_variableFromAzure
          - name: ASPNETCORE_URLS
            valueFrom:
              secretKeyRef:
                name: azure-kv-secrets
                key: URLS_variableFromAzure
        volumeMounts:
          - name: secrets-store-inline
            mountPath: "/mnt/secrets-store"
            readOnly: true
    volumes:
      - name: secrets-store-inline
        csi:
          driver: secrets-store.csi.k8s.io
          readOnly: true
          volumeAttributes:
            secretProviderClass: "azure-kv-secrets"
    
    这样应用启动时会直接从Key Vault获取密钥,全程无需在Pipeline里处理敏感数据。

内容的提问来源于stack exchange,提问作者kenik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 18:41:14