Template Types
Quote
A finir la partie template invocators
Vue d'ensemble des types de templates Argo Workflows, expliquant les définitions et invocators tels que
Container,Script,Resource,Suspend,Plugin,Container Set,HTTP,StepsetDAG
Les templates peuvent être considérés comme des fonctions, ils définissent les instructions à exécuter. La spec d’un workflow inclut un champ entrypoint qui spécifie le template principal qui sera exécuté en premier.
Template Types¶
Il existe neuf types de templates au total, répartis en deux catégories:
- Template Definitions
- Template Invocators
Template Definitions¶
Ces templates définissent le travail à effectuer dans un workflow
Container¶
Le template container est le type de template le plus courant: Il permet de scheduler un container Kubernetes avec une spec identique à celle d'un pod (image, command, args, env, resources, volumeMounts, etc.).
Tout ce qui est affiché via stdout, par exemple avec echo ou print est automatiquement récupérée par Argo Workflow et stockée dans une variable réutilisable {{tasks.<NAME>.outputs.result}} ou {{steps.<NAME>.outputs.result}}, selon son mode d’appel.
Script¶
Le template script est un wrapper qui exécute un container. Il utilise les champs image et command comme le template container, mais permet d’écrire un script inline avec le champ source. Argo Workflows crée le container, place le script dans un fichier et l’exécute. La sortie du script est capturée depuis le stdout et est disponible comme variable dans le workflow Argo, exactement comme avec le template container.
Resource¶
Le template resource sert à gérer directement des resources Kubernetes (create, apply, delete, replace, patch, get) depuis Argo workflow. Le manifeste à gérer est fourni inline dans le champ manifest.
Suspend¶
Le template suspend met en pause l’exécution du workflow pour une durée (duration) ou indéfiniment jusqu’à une reprise manuelle via CLI, API, ou UI.
CLI pour reprendre:
Plugin¶
Le template plugin permet à Argo workflow d’utiliser des executor plugins (built-in ou third-party) afin d’étendre son comportement, en référençant un plugin pour exécuter des actions externes sans lancer de container.
Info
ContainerSet¶
Le template containerSet est similaire à un template container ou script, mais permet de définir plusieurs containers exécutés dans un même pod. Le champ containerSet contient un tableau de containers.
HTTP¶
Le template http permet d’exécuter des requêtes HTTPs, avec la possibilité de définir l’url, la method (GET par défaut), les headers et le body.
Le contenu de la réponse est automatiquement exporté dans un output result.
Template Invocators¶
- Les templates
stepsetDAGsont les deux types d’invocateurs. - Ils ne font pas de travail eux-mêmes mais définissent comment d’autres templates (définitions) sont appelés et composés dans un workflow.
Stepspour des flux séquentiels/parallèles etDAGpour des graphes d’exécution basés sur les dépendances.
Avec ces types de templates, vous pouvez exprimer une large variété de patterns d’orchestration, des tâches container simples à l’automatisation multi-ressources complexe et aux intégrations avec d’autres systèmes.
Ces templates sont utilisés pour invoquer/appeler d’autres templates et fournir un contrôle d’exécution.
Steps¶
Un template steps permet de définir vos tâches sous forme d’une série d’étapes.
La structure du template est une "liste de listes" :
- Les listes externes s’exécutent séquentiellement
- Les listes internes s’exécutent en parallèle
Si vous souhaitez exécuter les listes internes une par une, vous pouvez utiliser la fonctionnalité Synchronization.
Vous pouvez également configurer de nombreuses options pour contrôler l’exécution, comme les clauses when pour exécuter conditionnellement une étape.
👉 Dans cet exemple :
step1s’exécute en premier- Une fois terminé,
step2aetstep2bs’exécutent en parallèle
- name: hello-hello-hello
steps:
- - name: step1
template: prepare-data
- - name: step2a
template: run-data-first-half
- name: step2b
template: run-data-second-half
DAG¶
Un template DAG permet de définir vos tâches sous forme de graphe de dépendances (Directed Acyclic Graph).
Dans un DAG:
- Vous listez toutes vos tasks
- Vous définissez les
dependenciesentre elles - Les tâches sans dépendances sont exécutées immédiatement
- name: diamond
dag:
tasks:
- name: A
template: echo
- name: B
dependencies: [A]
template: echo
- name: C
dependencies: [A]
template: echo
- name: D
dependencies: [B, C]
template: echo
As’exécute en premier- Une fois terminé,
BetCs’exécutent en parallèle - Une fois
BetCterminés,Ds’exécute