如果条件检查,Kubernetes头盔图表

时间:2017-09-02 02:28:14

标签: go kubernetes go-templates kubernetes-helm

我试图添加如果比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 dry run选项来检查结果。得到错误

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

如何解决这个问题?

1 个答案:

答案 0 :(得分:6)

请尝试使用浮点数代替:

<强> 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