I am trying to add if great than condition in Helm chart. it is throwing error.
I have defined value in values.yaml and using that value in deployment.yaml for condition.
values.yaml
replicaCount: 2
deployment.yaml
rollingUpdate:
maxSurge: 1
{{ if gt .Values.replicaCount 2}}
maxUnavailable: 0
{{ else }}
maxUnavailable: 1
{{ end }}
I am using helm dry run option to check result. getting error
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
how to fix this ?
The Helm template syntax is based on the Go programming language's text/template package. The braces {{ and }} are the opening and closing brackets to enter and exit template logic.
The $_ is used to suppress undesired output as "set" returns the new dictionary.
helm/charts has been deprecated and will be obsolete by Nov 13 2020. For this reason, the datawire team as retaken ownership of this chart. The Ambassador Chart is now hosted at datawire/ambassador-chart.
Try using float number in comparison instead:
deployment.yaml
rollingUpdate:
maxSurge: 1
{{ if gt .Values.replicaCount 2.0}}
maxUnavailable: 0
{{ else }}
maxUnavailable: 1
{{ end }}
Helm (along with underlying Golang templates and Yaml) can be weird sometimes.
Also, note that sometimes you need to typecast values in your yaml configs (e.g. port numbers).
Example:
...
ports:
- containerPort: !!int {{ .Values.containers.app.port }}
...
More about Yaml type casting: https://github.com/yaml/YAML2/wiki/Type-casting
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With