嗨,我有一个名为 test-service 的舵图。我有一个名为 helm-common-templates 的辅助图表。我的图表依赖于 helm-common-templates。它定义了一个名为“helm-common-templates.certificate-enabled”的函数。以下是功能。
{{- define "helm-common-templates.certificate-enabled" -}}
{{- $val := "false" }}
{{- if .Values.global -}}
{{- if .Values.global.pms -}}
{{- if .Values.global.pms.logstash -}}
{{- if .Values.global.pms.logstash.tls -}}
{{- if .Values.global.pms.logstash.tls.enabled -}}
{{- $val := "true" }}
{{- end -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{ $val }}
{{- end -}}
如果属性
global.pms.logstash.tls.enabled
设置为 true,则该函数基本上返回 true,否则返回 false。在我的主图表中,我在名为certificate.yaml的文件中调用该函数
以下是文件certificate.yaml的内容
{{ if eq (include "helm-common-templates.certificate-enabled" .) "true" }}
apiVersion: v1
kind: Secret
type: Opaque
metadata:
name: ls-secret
annotations:
"helm.sh/hook": "post-delete"
"helm.sh/hook-delete-policy": "before-hook-creation, hook-succeeded"
data:
---
{{end}}
如果我进行试运行,我会得到以下输出
helm upgrade --install --debug test --namespace bcc --wait --timeout "10m0s" --set global.pms.logstash.tls.enabled=true . --dry-run
输出
history.go:56: [debug] getting history for release test
Release "test" does not exist. Installing it now.
install.go:192: [debug] Original chart version: ""
install.go:209: [debug] CHART PATH: /home/prabpras/filebeat-testing/test-service
NAME: test
LAST DEPLOYED: Wed Nov 1 14:50:28 2023
NAMESPACE: bcc
STATUS: pending-install
REVISION: 1
TEST SUITE: None
USER-SUPPLIED VALUES:
global:
pms:
logstash:
tls:
enabled: true
COMPUTED VALUES:
global:
kubernetes: {}
pms:
logstash:
tls:
enabled: true
tls:
enabled: true
truststore: {}
tracing:
type: NoOp
helm-common-templates:
global:
kubernetes: {}
pms:
logstash:
tls:
enabled: true
tls:
enabled: true
truststore: {}
tracing:
type: NoOp
HOOKS:
MANIFEST:
我可以看到certificate.yaml 中的秘密资源没有在试运行输出中呈现。基本上函数
helm-common-templates.certificate-enabled
总是返回 false。
我还附上了我的图表的目录结构
test-service]$ tree
.
|-- Chart.yaml
|-- charts
| `-- helm-common-templates
| |-- Chart.yaml
| `-- templates
| `-- _helpers.tpl
|-- requirements.yaml
|-- templates
| |-- NOTES.txt
| |-- _helpers.tpl
| `-- certificate.yaml
`-- values.yaml
感谢任何帮助。 谢谢你
我们已经解决了。重写辅助函数以使用 printf
{{- define "certificate-enabled" -}}
{{- if ((((.Values.global).pms).logstash).tls).enabled -}}
{{- printf "true" }}
{{- else -}}
{{- printf "false" }}
{{- end -}}
{{- end -}}