Skip to content

Parameters

Explique l’utilisation des paramètres dans Argo Workflows pour passer des valeurs dans des templates, effectuer la substitution de paramètres dans les args de conteneur, et remplacer les valeurs lors de la soumission via CLI ou fichiers de paramètres.

Parlons des paramètres d’entrée dans Argo Workflows.

Cette leçon montre une workflow spec qui accepte un paramètre nommé message et le transmet à une commande de conteneur en référencant le paramètre d’entrée du template.

Exemple de workflow :

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: cowsay-
spec:
  entrypoint: cowsay
  arguments:
    parameters:
      - name: message
        value: "workflow arguments value"
  templates:
    - name: cowsay
      inputs:
        parameters:
          - name: message
      container:
        image: rancher/cowsay
        command: [cowsay]
        args: ["{{inputs.parameters.message}}"]

Ce que ce workflow définit :

  • Un paramètre par défaut au niveau supérieur dans spec.arguments nommé message avec la valeur "workflow arguments value".
  • Un template appelé cowsay qui déclare un paramètre d’entrée message.
  • Le conteneur exécute la commande cowsay et passe le paramètre dans args en utilisant la substitution de paramètres Argo : {{inputs.parameters.message}}.

💡 Astuce Lors de la référence à des paramètres dans les champs YAML des templates, utilisez exactement la syntaxe de substitution suivante : {{inputs.parameters.<name>}}

Placez la substitution entre guillemets (par exemple : args: ["{{inputs.parameters.message}}"]) afin que le parseur YAML la traite comme une chaîne et gère correctement les accolades.


Fonctionnement du passage des paramètres (résumé)

Champ Objectif Exemple
spec.arguments Valeurs de paramètres par défaut au niveau du workflow ; peuvent être remplacées à la soumission - name: message value: "workflow arguments value"
templates[].inputs.parameters Déclare les paramètres attendus par un template - name: message
container args / command Utilise la substitution pour passer les valeurs au conteneur args: ["{{inputs.parameters.message}}"]

test

Warning

Dans Argo Workflows, les paramètres sont toujours traités comme des string, même si vous passez des nombres, des booléens ou des structures plus complexes.

Par exemple :

args: ["{{inputs.parameters.myNumber}}"]

Même si myNumber vaut 123, il sera interprété comme "123".

👉 Si vous devez manipuler des types complexes (listes, JSON, etc.), vous devez les sérialiser (par exemple en JSON) puis les parser dans votre application.


Remplacer les paramètres à l’exécution

Il est possible de remplacer les valeurs par défaut via la CLI Argo.

1. Soumettre un workflow avec un paramètre :

# Soumettre un workflow avec un paramètre via la CLI
argo submit wf.yaml -p message="message from the CLI"

2. Utiliser un fichier de paramètres (YAML ou JSON)

Exemple params.yaml :

message: "This is from a parameter file"

Commande :

# Soumettre un workflow avec plusieurs paramètres depuis un fichier
argo submit wf.yaml --parameter-file params.yaml

3. Utiliser un autre entrypoint sans modifier le YAML :

# Soumettre un workflow avec un entrypoint différent
argo submit wf.yaml --entrypoint cowsay-loudly

4. Combiner entrypoint et paramètres personnalisés :

# Combiner entrypoint et paramètre personnalisé
argo submit wf.yaml \
  --entrypoint cowsay-loudly \
  -p message="Custom message"

👉 En combinant --entrypoint avec -p (ou --parameter-file), vous pouvez appeler n’importe quel template dans votre workflow et fournir ou remplacer n’importe quelle valeur de paramètre lors de la soumission.


⚠️ Attention Encadrez toujours les substitutions et les valeurs de paramètres avec des guillemets lorsqu’elles contiennent des espaces ou des caractères spéciaux que YAML/CLI pourrait interpréter (par exemple : -p message="Hello, world!").

Des accolades non protégées ou des caractères spéciaux peuvent provoquer des erreurs de parsing.