Helm 和 Yaml 专家您好,
我是 Helm/YAML 的初学者。是否可以在 helm 图表的values.yaml 文件中添加 if-else 条件?
我需要检查一个变量并相应地设置一些属性值。这是一个 YAML 示例片段,我目前正在尝试在 www.yamllint.com 上工作。
---
cp-kafka:
brokers: 3
enabled: true
heapOptions: "-Xms512M -Xmx512M"
image: confluentinc/cp-enterprise-kafka
imagePullSecrets: ~
imageTag: "6.1.0"
persistence:
disksPerBroker: 1
enabled: true
size: 5Gi
resources: {}
securityContext:
runAsUser: 0
configurationOverrides:
{{- if .Values.prometheus.jmx.enabled }}
-
containerPort: 10
name: jmx
{{- else }}
containerPort: 11
name: jmx
{{- end }}
我在第 17 行收到以下错误 - if 条件。尝试了各种变体,例如
{{ if .Values.prometheus.jmx.enabled }},仅当和结束时,缩进。到目前为止没有任何帮助。
():在第 17 行第 7 列解析流节点时未找到预期的节点内容
有人可以帮忙吗?如果您需要我提供更多信息来回答此问题,请告诉我。
谢谢!
是否可以在 Helm Charts 的 Values.yaml 文件中添加 if-else 条件?
没有。
tpl
函数 来处理特定值,则该值的文本可以包含模板语法,但必须正确引用。大多数图表中大多数上下文中的大多数值都不允许这样做。
由于您作为操作员控制
values.yaml
文件的内容,因此您只需在传递给 helm install -f
的文件中更改此设置即可。每个环境都有一个单独的值文件很好。
如果您实际上正在创作图表,我建议您使用更高级别的值文件,而不是写出各个 Kubernetes 对象设置的列表。如果你能在图表中写下:
containerPorts:
{{- with .Values.prometheus.jmx | default dict }}
{{- if .enabled }}
- containerPort: {{ .port | default 9875 }}
name: imx
{{- end }}
{{- end }}
然后配置
prometheus:
jmx:
enabled: true
port: 11