【问题标题】:Kubernetes Helm Chart If Condition CheckKubernetes Helm Chart If 条件检查
【发布时间】:2018-02-11 02:11:06
【问题描述】:

我正在尝试在 Helm 图表中添加大于条件的情况。它正在抛出错误。

我在 values.yaml 中定义了值,并在 deployment.yaml 中使用该值作为条件。

values.yaml

replicaCount: 2

deployment.yaml

rollingUpdate:
  maxSurge: 1
  {{ if gt .Values.replicaCount 2}}
  maxUnavailable: 0
  {{ else }}
  maxUnavailable: 1
  {{ end }}

我正在使用 helm 试运行选项来检查结果。报错

Error: render error in "hello-world/templates/deployment.yaml": template: hello-world/templates/deployment.yaml:16:12: executing "hello-world/templates/deployment.yaml" at <gt .Values.replicaCo...>: error calling gt: incompatible types for comparison

如何解决这个问题?

【问题讨论】:

  • 你解决了吗?
  • 你能帮我做类型转换吗?

标签: go kubernetes go-templates kubernetes-helm


【解决方案1】:

尝试使用浮点数进行比较:

deployment.yaml

rollingUpdate:
  maxSurge: 1
  {{ if gt .Values.replicaCount 2.0}}
  maxUnavailable: 0
  {{ else }}
  maxUnavailable: 1
  {{ end }}

Helm(连同底层的 Golang 模板和 Yaml)有时会很奇怪。


另外,请注意,有时您需要在 yaml 配置中对值进行类型转换(例如端口号)。

例子:

...
ports:
- containerPort: !!int {{ .Values.containers.app.port }}
...

更多关于 Yaml 类型转换:https://github.com/yaml/YAML2/wiki/Type-casting

【讨论】:

  • 我正在尝试使用类型转换选项。它不工作。它抛出错误。{{- if gt !!int {{ .Values.replicaCount }} 1}}。如何键入演员?
  • 你也可以尝试不通过 yaml 而是通过 Go 模板进行类型转换:containerPort: {{ .Values.replicaCount | int }}
  • 什么是“-”被 {{- if .Values.enable}} .. .. {{- end }} 称为?
  • @Pasha 它是关于控制空白的。请看:helm.sh/docs/chart_template_guide/control_structures/…
猜你喜欢
  • 2018-04-15
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 2020-04-01
  • 2020-01-24
  • 2020-01-26
  • 2021-08-29
  • 2021-03-28
相关资源
最近更新 更多