Как передать динамические аргументы в рулевую диаграмму, которая запускает задание - PullRequest
0 голосов
/ 04 октября 2018

Я бы хотел, чтобы наши разработчики передавали динамические аргументы шаблону руля (задание Kubernetes).В настоящее время мои аргументы в шаблоне helm несколько статичны (не считая определенных значений) и выглядят так:

      Args:
        --arg1
        value1
        --arg2
        value2
        --sql-cmd
        select * from db

Если бы я запускал задачу, используя Docker-контейнер без Kubernetes, я бы передавал параметры следующим образом:

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

Ответы [ 4 ]

0 голосов
/ 22 июля 2019

helm install --name "airflow" stable/airflow --set secrets.database=mydatabase,secrets.password=mypassword

Итак, речь идет о диаграмме штурвала: https://github.com/helm/charts/tree/master/stable/airflow Теперь я хочу перезаписать значения по умолчанию в таблице штурма секреты.database и secrets.password, поэтому я использую --set аргумент, а затем это пары ключ = значение, разделенные запятыми.
helm install --name "<name for your chart>" <chart> --set key0=value0,key1=value1,key2=value2,key3=value3

0 голосов
/ 20 декабря 2018

Ответ Рико нуждается в улучшении.Используя предыдущий пример, я получил ошибки, такие как:

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

` ``

0 голосов
/ 18 февраля 2019

В вашем файле значений определите аргументы как:

extraArgs:
  argument1: value1
  argument2: value2
  booleanArg1:

В вашем шаблоне выполните:

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

Easy.

0 голосов
/ 04 октября 2018

Да.В 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, ....}
...