如何在AKS中通过External Secrets从密钥保管库拉取证书?
解决ExternalSecrets从Azure密钥保管库提取PFX证书的问题
问题背景
已将PFX证书wildcard-poc-abc-com.pfx导入Azure密钥保管库作为证书wildcard-poc-abc-com,使用ExternalSecrets能拉取普通密钥,但无法正确提取PFX证书中的tls.crt和tls.key。
错误配置分析
- remoteRef类型错误:将证书当作密钥(
secret/前缀)拉取,Azure密钥保管库中证书的路径前缀应为certificate/ - 模板函数缺失编码步骤:Kubernetes Secret的data字段要求base64编码值,处理后的证书/私钥需要再编码
- 变量引用不匹配:需确保模板中的变量名与
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
相关产品推荐
相关产品推荐

