无法将 if 条件添加到 helm yamlvalues.yaml

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

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 列解析流节点时未找到预期的节点内容

有人可以帮忙吗?如果您需要我提供更多信息来回答此问题,请告诉我。

谢谢!

if-statement yaml kubernetes-helm helm3
1个回答
3
投票

是否可以在 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
© www.soinside.com 2019 - 2024. All rights reserved.