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

使用akv2k8s同步AKV密钥到K8s时出现secret-inject@azurekeyvault无限等待问题

问题原因
  • 首先AKVS(AzureKeyVaultSecret)资源同步失败,从kubectl get akvs的输出可以看到SYNCHED列为空,说明控制器没有成功将Azure Key Vault中的密钥同步为Kubernetes Secret,导致后续引用该Secret的Pod无法启动。
  • AKVS配置与实际资源不匹配:
    1. 配置中声明的密钥保管库名称为akv2k8s-butfa,但实际查询到的关联保管库为akv2k8s-test-butfa
    2. 配置中声明的密钥对象名为myusername,但实际查询到的关联密钥对象为mysecret
  • 命名空间不匹配:AKVS资源创建在akv-test-butfa命名空间,但查询命令使用的是-n akv-test,控制器可能无法正确识别跨命名空间的资源权限。
  • Deployment配置逻辑矛盾,同时混用了akv2k8s的两种使用方式:
    1. 既使用了xxx@azurekeyvault的直接注入语法,但引用的AKVS名称secret-inject与实际创建的secret-sync不符
    2. 又配置了envFrom引用未生成的my-secret-from-butfa Secret,且标记为非可选(Optional: false),Secret不存在时Pod会直接启动失败
  • 测试镜像spvest/akv2k8s-env-test:2.0.1要求TEST_SECRET环境变量必须存在有效值,否则会直接退出报错,触发CrashLoopBackOff。
解决方法
  1. 修正AKVS资源配置
    调整AzureKeyVaultSecret的yaml文件,保证所有字段和实际资源匹配:
apiVersion: spv.no/v2beta1
kind: AzureKeyVaultSecret
metadata:
  name: secret-sync 
  namespace: akv-test-butfa
spec:
  vault:
    name: akv2k8s-test-butfa # 修正为实际的密钥保管库名称
    object:
      name: mysecret # 修正为实际的密钥对象名称
      type: secret
  output: 
    secret: 
      name: my-secret-from-butfa
      dataKey: secret-value

重新应用配置:

kubectl apply -f <your-akvs-yaml-file-path> -n akv-test-butfa
  1. 验证AKVS同步状态
    执行以下命令查看同步状态,等待SYNCHED列显示为True再进行后续操作:
kubectl get akvs -n akv-test-butfa

如果长期未同步成功,查看akv2k8s控制器日志排查权限问题:

kubectl logs -l app.kubernetes.io/name=akv2k8s-controller -n akv2k8s
  1. 修正Deployment配置,二选一使用akv2k8s能力
    不要混用两种密钥获取方式,选择其中一种即可:
  • 方案A:使用同步生成的Kubernetes Secret
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: akvs-secret-app
      namespace: akv-test-butfa
      labels:
        app: akvs-secret-app
    spec:
      selector:
        matchLabels:
          app: akvs-secret-app
      template:
        metadata:
          labels:
            app: akvs-secret-app
        spec:
          containers:
          - name: akv2k8s-env-test
            image: spvest/akv2k8s-env-test:2.0.1
            args: ["TEST_SECRET"]
            env:
            - name: TEST_SECRET
              valueFrom:
                secretKeyRef:
                  name: my-secret-from-butfa
                  key: secret-value
    
  • 方案B:使用akv2k8s直接环境变量注入(无需提前创建AKVS资源)
    首先开启目标命名空间的注入开关:
    kubectl label namespace akv-test-butfa azure-key-vault-env-injection=enabled
    
    调整Deployment配置:
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: akvs-secret-app
      namespace: akv-test-butfa
      labels:
        app: akvs-secret-app
    spec:
      selector:
        matchLabels:
          app: akvs-secret-app
      template:
        metadata:
          labels:
            app: akvs-secret-app
        spec:
          containers:
          - name: akv2k8s-env-test
            image: spvest/akv2k8s-env-test:2.0.1
            args: ["TEST_SECRET"]
            env:
            - name: TEST_SECRET
              value: "mysecret@azurekeyvault?vault=akv2k8s-test-butfa"
    
  1. 重新部署验证
    应用修改后的Deployment配置,查看Pod状态:
kubectl apply -f <your-deployment-yaml-path> -n akv-test-butfa
kubectl get pods -n akv-test-butfa

内容的提问来源于stack exchange,提问作者Thanh Nguyen Van

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 02:54:01