web-dev-qa-db-fra.com

Comment passer des arguments dynamiques à un graphique de barre qui exécute un travail

Je voudrais permettre à nos développeurs de passer des arguments dynamiques à un modèle de barre (travail Kubernetes). Actuellement, mes arguments dans le modèle de barre sont quelque peu statiques (à part certaines valeurs) et ressemblent à ceci

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

Si j'étais exécuté une tâche en utilisant le conteneur Docker sans Kubernetes, je passerais des paramètres comme ceci:

docker run my-image --arg1 value1 --arg2 value2 --sql-cmd "select * from db"

Existe-t-il un moyen de modéliser des arguments dans un graphique de barre de telle manière que n'importe quel nombre d'arguments puisse être transmis à un modèle.

Par exemple.

cat values.yaml
...
arguments: --arg1 value1 --arg2 value2 --sql-cmd "select * from db"
...

ou

cat values.yaml
...
arguments: --arg3 value3
...

J'ai essayé quelques approches mais n'a pas réussi. Voici un exemple:

     Args:          
      {{  range .Values.arguments }}
        {{ . }}
      {{ end }}
6
Aaron Bandelli

Oui. Dans values.yaml vous devez lui donner un tableau au lieu d'une chaîne délimitée par des espaces.

cat values.yaml
...
arguments: ['--arg3', 'value3', '--arg2', 'value2']
...

ou

cat values.yaml
...
arguments:
- --arg3
- value3
- --arg2
- value2
...

et puis vous aimez vous avez mentionné dans le modèle devrait le faire:

     args:          
      {{  range .Values.arguments }}
        - {{ . }}
      {{ end }}

Si vous souhaitez remplacer les arguments sur la ligne de commande, vous pouvez passer un tableau avec --set comme ça:

--set arguments={--arg1, value1, --arg2, value2, --arg3, value3, ....}
2
Rico

Dans votre fichier de valeurs, définissez les arguments comme:

extraArgs:
  argument1: value1
  argument2: value2
  booleanArg1:

Dans votre modèle, faites:

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

Facile.

2
Acid R

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

Voici donc le graphique de barre en question: https://github.com/helm/charts/tree/master/stable/airflow Maintenant, je veux écraser les valeurs par défaut dans le graphique de barre secrets.database et secrets.password donc j'utilise l'argument --set, puis ce sont des paires clé = valeur séparées par des virgules.
helm install --name "<name for your chart>" <chart> --set key0=value0,key1=value1,key2=value2,key3=value3

0
Gajendra D Ambi

La réponse de Rico devait être améliorée. En utilisant l'exemple précédent, j'ai reçu des erreurs comme:

templates/deployment.yaml: error converting YAML to JSON: yaml ou

failed to get versionedObject: unable to convert unstructured object to apps/v1beta2, Kind=Deployment: cannot restore slice from string

Ceci est ma configuration de travail avec le coma en éléments: (le format vertical de la liste est plus lisible)

cat values.yaml ... arguments: [ "--arg3,", "value3,", "--arg2,", "value2,", ] ...

dans le modèle devrait le faire:

`` ''

          args: [
{{  range .Values.arguments }}
{{ . }}
{{ end }}
          ]

`` ''

0
Mihail Kuzmich