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

如何在AKS中通过External Secrets从密钥保管库拉取证书?

解决ExternalSecrets从Azure密钥保管库提取PFX证书的问题

问题背景

已将PFX证书wildcard-poc-abc-com.pfx导入Azure密钥保管库作为证书wildcard-poc-abc-com,使用ExternalSecrets能拉取普通密钥,但无法正确提取PFX证书中的tls.crt和tls.key。

错误配置分析

  1. remoteRef类型错误:将证书当作密钥(secret/前缀)拉取,Azure密钥保管库中证书的路径前缀应为certificate/
  2. 模板函数缺失编码步骤:Kubernetes Secret的data字段要求base64编码值,处理后的证书/私钥需要再编码
  3. 变量引用不匹配:需确保模板中的变量名与data.secretKey完全一致

正确配置示例

---
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
  name: wildcard.poc.abc.com
  namespace: default
spec:
  refreshInterval: 1h
  secretStoreRef:
    kind: ClusterSecretStore
    name: cluster-azure-store
  target:
    name: wildcard.poc.abc.com
    template:
      type: kubernetes.io/tls
      engineVersion: v2
      data:
        tls.crt: "{{ .wildcard.poc.abc.com | b64dec | pkcs12cert | b64enc }}"
        tls.key: "{{ .wildcard.poc.abc.com | b64dec | pkcs12key | b64enc }}"
  data:
    - secretKey: wildcard.poc.abc.com
      remoteRef:
        key: certificate/wildcard-poc-abc-com
        # 如果PFX证书设置了密码,需添加passwordRef指定密码密钥
        # passwordRef:
        #   name: pfx-password-secret
        #   key: password

关键修正点

  • remoteRef.key:改为certificate/wildcard-poc-abc-com,匹配Azure密钥保管库中证书的存储类型
  • 模板函数链:
    • b64dec:解码从密钥保管库拉取的base64格式PFX内容
    • pkcs12cert/pkcs12key:从PFX中提取证书/私钥的PEM格式内容
    • b64enc:将PEM内容编码为base64,符合Kubernetes Secret的要求
  • 密码处理:如果PFX证书设置了保护密码,需通过passwordRef引用存储密码的Kubernetes Secret

验证方法

创建ExternalSecret后,查看生成的Secret:

kubectl get secret wildcard.poc.abc.com -n default -o yaml

确认输出包含tls.crt和tls.key的base64值,且类型为kubernetes.io/tls。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 18:57:19