開発者が動的引数をヘルムテンプレートに渡すことができるようにしたい(Kubernetesジョブ)。現在、helmテンプレートの私の引数は(特定の値を除いて)ある程度静的であり、次のようになります
Args:
--arg1
value1
--arg2
value2
--sql-cmd
select * from db
Kubernetesなしでdockerコンテナーを使用してタスクを実行した場合、次のようなパラメーターを渡します。
docker run my-image --arg1 value1 --arg2 value2 --sql-cmd "select * from db"
テンプレートに任意の数の引数を渡すことができるような方法で、ヘルムチャートの引数をテンプレート化する方法はありますか?.
例えば。
cat values.yaml
...
arguments: --arg1 value1 --arg2 value2 --sql-cmd "select * from db"
...
または
cat values.yaml
...
arguments: --arg3 value3
...
いくつかの方法を試しましたが、成功しませんでした。以下はその一例です。
Args:
{{ range .Values.arguments }}
{{ . }}
{{ end }}
はい。 values.yaml
では、スペースで区切られた文字列ではなく配列を指定する必要があります。
cat values.yaml
...
arguments: ['--arg3', 'value3', '--arg2', 'value2']
...
または
cat values.yaml
...
arguments:
- --arg3
- value3
- --arg2
- value2
...
そして、あなたはテンプレートで言及したようにそれを行うべきです:
args:
{{ range .Values.arguments }}
- {{ . }}
{{ end }}
コマンドラインで引数を上書きしたい場合は、次のように--set
で配列を渡すことができます。
--set arguments={--arg1, value1, --arg2, value2, --arg3, value3, ....}
値ファイルで、引数を次のように定義します。
extraArgs:
argument1: value1
argument2: value2
booleanArg1:
あなたのテンプレートで:
args:
{{- range $key, $value := .Values.extraArgs }}
{{- if $value }}
- --{{ $key }}={{ $value }}
{{- else }}
- --{{ $key }}
{{- end }}
{{- end }}
簡単です。
リコの答えは改善する必要がありました。前の例を使用すると、次のようなエラーが発生します。
templates/deployment.yaml: error converting YAML to JSON: yaml
または
failed to get versionedObject: unable to convert unstructured object to apps/v1beta2, Kind=Deployment: cannot restore slice from string
これは、要素に昏睡状態がある私の作業設定です:(リストの垂直形式がより読みやすくなっています)
cat values.yaml ... arguments: [ "--arg3,", "value3,", "--arg2,", "value2,", ] ...
テンプレートでそれを行う必要があります:
「」
args: [
{{ range .Values.arguments }}
{{ . }}
{{ end }}
]
「」
helm install --name "airflow" stable/airflow --set secrets.database=mydatabase,secrets.password=mypassword
これが問題のヘルムチャートです: https://github.com/helm/charts/tree/master/stable/airflow 次に、ヘルムチャートのsecrets.databaseとsecrets.passwordのデフォルト値を上書きするため、-set引数を使用すると、キー=値のペアがコンマで区切られます。helm install --name "<name for your chart>" <chart> --set key0=value0,key1=value1,key2=value2,key3=value3