web-dev-qa-db-ja.com

条件チェックの場合の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 }}

結果を確認するために、ヘルムドライランオプションを使用しています。エラーが発生する

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

これを修正する方法?

5
Gnana

代わりに浮動小数点数を比較してみてください:

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

12
hypnoglow