我正在尝试使用
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
。有人可以帮我纠正这个错误吗?
由于双大括号不应由 Helm 解释,而应由外部 Secrets Operator 解释,因此您需要对它们进行转义。一种解决方案是使用
printf
: 编写数据部分
data:
tls.crt: {{ printf "'{{ .servsecret | pkcs12cert }}'" }}
tls.key: {{ printf "'{{ .servsecret | pkcs12key }}'" }}
汤姆的回答是正确的。只是想添加另外两种替代语法,可用于转义外部秘密运算符的大括号:
替代方案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 }} `}}'