在 helm 图表中未为 externsecrets 定义函数“pkcs12cert”

问题描述 投票:0回答:2

我正在尝试使用

Externalsecret
创建 tls 机密,并且 yaml 文件创建如下。

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

我们正在尝试使用 Helm Chart 在 kubernetes 集群中创建这些外部机密,当我尝试生成 Helm Chart 时,我收到错误为

function "pkcs12cert" not defined
。有人可以帮我纠正这个错误吗?

kubernetes google-kubernetes-engine kubernetes-helm external-secrets-operator
2个回答
1
投票

由于双大括号不应由 Helm 解释,而应由外部 Secrets Operator 解释,因此您需要对它们进行转义。一种解决方案是使用

printf
:

编写数据部分
data:
  tls.crt: {{ printf "'{{ .servsecret | pkcs12cert }}'" }}
  tls.key: {{ printf "'{{ .servsecret | pkcs12key }}'" }}

0
投票

汤姆的回答是正确的。只是想添加另外两种替代语法,可用于转义外部秘密运算符的大括号:

替代方案1:

data:
  tls.crt: '{{ '{{' }} .servsecret | pkcs12cert {{ '}}' }}'
  tls.key: '{{ '{{' }} .servsecret | pkcs12key {{ '}}' }}'

替代方案 2(我的首选语法):

data:
  tls.crt: '{{` {{ .servsecret | pkcs12cert }} `}}'
  tls.key: '{{` {{ .servsecret | pkcs12key }} `}}'

还要确保您没有在注释的 yaml 中留下对函数的任何调用,因为这些调用也会被评估!

data:
  #The below commented line will cause the same function not found error if not removed
  #tls.crt: {{ .servsecret | pkcs12cert }}
  tls.crt: '{{` {{ .servsecret | pkcs12cert }} `}}'
  tls.key: '{{` {{ .servsecret | pkcs12key }} `}}'
© www.soinside.com 2019 - 2024. All rights reserved.