web-dev-qa-db-ja.com

ジョブを実行するヘルムチャートに動的引数を渡す方法

開発者が動的引数をヘルムテンプレートに渡すことができるようにしたい(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 }}
8
Aaron Bandelli

はい。 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, ....}
3
Rico

値ファイルで、引数を次のように定義します。

extraArgs:
  argument1: value1
  argument2: value2
  booleanArg1:

あなたのテンプレートで:

    args:
{{- range $key, $value := .Values.extraArgs }}
    {{- if $value }}
    - --{{ $key }}={{ $value }}
    {{- else }}
    - --{{ $key }}
    {{- end }}
{{- end }}

簡単です。

2
Acid R

リコの答えは改善する必要がありました。前の例を使用すると、次のようなエラーが発生します。

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 }}
          ]

「」

1
Mihail Kuzmich

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

0
Gajendra D Ambi