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

Helm Chart中ExternalSecret的pkcs12cert函数未定义问题求助

解决Helm渲染ExternalSecret时pkcs12cert函数未定义的错误

问题原因

Helm在渲染Chart时会优先解析所有{{ ... }}格式的模板语法,但pkcs12cert和pkcs12key是External Secrets Operator (ESO) 提供的自定义模板函数,Helm本身并不识别这些函数,因此会抛出未定义的错误。

解决方案

需要转义Helm的模板标记,让Helm不对ESO的自定义函数进行解析,直接将原模板传递给ESO处理。有两种常用方法:

方法1:使用Helm转义语法

将{{替换为{{ "{{" }},}}替换为{{ "}}" }},示例配置如下:

apiVersion: external-secrets.io/v1alpha1
kind: ExternalSecret
metadata:
  name: pgbouncer-serv
spec:
  refreshInterval: 5m
  secretStoreRef:
    kind: ClusterSecretStore
    name: env-secrets
  target:
    name: pgbouncer-serv
    creationPolicy: Owner
  template:
    type: kubernetes.io/tls
    engineVersion: v2
    data:
      tls.crt: "{{ "{{ .servsecret | pkcs12cert }}" }}"
      tls.key: "{{ "{{ .servsecret | pkcs12key }}" }}"
  data:
    - secretKey: servsecret
      remoteRef:
        key: SERV_CERT

方法2:使用Helm的raw块

用{{- raw -}}和{{- end -}}包裹ESO的模板内容,让Helm跳过这段内容的解析:

apiVersion: external-secrets.io/v1alpha1
kind: ExternalSecret
metadata:
  name: pgbouncer-serv
spec:
  refreshInterval: 5m
  secretStoreRef:
    kind: ClusterSecretStore
    name: env-secrets
  target:
    name: pgbouncer-serv
    creationPolicy: Owner
  template:
    type: kubernetes.io/tls
    engineVersion: v2
    data:
      tls.crt: {{- raw -}}{{ .servsecret | pkcs12cert }}{{- end -}}
      tls.key: {{- raw -}}{{ .servsecret | pkcs12key }}{{- end -}}
  data:
    - secretKey: servsecret
      remoteRef:
        key: SERV_CERT

额外注意事项

  • 确保你的ESO版本支持engineVersion: v2(通常v0.8及以上版本支持),且集群中的ESO已正确部署并能访问对应的SecretStore。
  • 转义后的配置会被Helm原封不动地提交到Kubernetes,由ESO负责后续的模板渲染和密钥生成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:40:35