Spécification des workflows Argo
Explique le CRD Argo Workflows, la structure YAML, les types de templates, les templates de conteneurs, les méthodes de soumission et les bonnes pratiques pour créer des pipelines d’automatisation Kubernetes réutilisables.
Dans cette leçon, nous examinons la spécification des workflows Argo et comment créer des pipelines d’automatisation réutilisables en tant que ressources personnalisées Kubernetes.
Argo Workflows est implémenté sous forme de Custom Resource Definition (CRD) Kubernetes, ce qui permet de définir des pipelines CI/CD et d’automatisation complexes à l’aide de fichiers YAML familiers. Un workflow est une séquence structurée de tâches automatisées qui, ensemble, accomplissent un objectif — couramment utilisé en DevOps pour le déploiement, les tests et la promotion d’applications.
Composants clés d’un manifest Argo Workflow :¶
- Header : métadonnées Kubernetes (
apiVersion,kind,metadata) - spec : décrit le comportement du workflow et les templates qui exécutent le travail
Les sections suivantes expliquent la structure, les types de templates courants et comment soumettre un workflow.
Structure d’un fichier workflow¶
Un fichier YAML de workflow typique contient les parties principales suivantes :
- Header :
apiVersion,kindetmetadata - Metadata : vous pouvez spécifier
nameougenerateName. UtilisezgenerateNamepour éviter les collisions lorsque vous soumettez plusieurs fois le même manifest — Argo ajoute un suffixe unique. -
spec : le cœur du workflow. Champs importants :
-
entrypoint: nom du template qui démarre l’exécution templates: liste de templates réutilisables. Les templates décrivent les tâches et peuvent se référencer entre eux
💡 Utilisez generateName lorsque vous souhaitez soumettre plusieurs fois le même workflow sans collision de noms. Chaque soumission recevra un suffixe unique.
Types de templates (aperçu)¶
Les templates sont les éléments de base des workflows. Argo prend en charge plusieurs types de templates selon les cas d’usage :
| Type de template | Cas d’usage | Remarques |
|---|---|---|
| container | Exécuter une image de conteneur | Correspond directement à un spec de conteneur Kubernetes (image, command, args, env, volumeMounts, resources) |
| script | Exécuter des scripts inline | Utile pour de la logique rapide sans construire une image |
| steps | Définir des étapes séquentielles | Liste de templates exécutés en séquence |
| dag | Définir un graphe acyclique dirigé | Permet des dépendances complexes et du parallélisme |
| resource | Créer/modifier des ressources Kubernetes | Utile pour appliquer des manifests ou CR |
Les templates peuvent être composés — les templates steps ou dag référencent des templates container/script/resource pour exécuter les tâches.
Templates de conteneur¶
Les templates de type container acceptent les mêmes champs qu’un conteneur Kubernetes. Vous pouvez donc utiliser :
imagecommandetargsenvetenvFromvolumeMountsetvolumesresources
Comme ils reflètent Kubernetes, vous pouvez réutiliser vos connaissances YAML existantes.
Exemple :¶
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: cowsay-
spec:
entrypoint: cowsay-template
templates:
- name: cowsay-template
container:
image: rancher/cowsay
command: ["cowsay"]
args: ["Argo Workflow!!!!"]
Soumettre un workflow¶
Vous pouvez soumettre des workflows via l’interface utilisateur Argo ou la CLI.
Exemple CLI (namespace argo) :¶
L’interface Argo est disponible si votre serveur Argo est exposé ; elle fournit une visualisation des templates, DAGs et étapes.
⚠️ Le champ entrypoint doit correspondre à l’un des noms de template définis dans templates. Sinon, le workflow ne démarrera pas.
Conseils pratiques et bonnes pratiques¶
- Utilisez
generateNamepour les soumissions récurrentes ou pilotées par CI - Gardez les templates petits et réutilisables
- Composez des workflows complexes à partir de blocs simples (
container,script,steps,dag) - Utilisez
resourcesetresourceLimitspour gérer les ressources - Versionnez vos manifests avec votre code applicatif ou infra
Référence rapide : champs spec¶
| Champ | Description |
|---|---|
| entrypoint | Nom du template exécuté en premier |
| templates | Liste des templates utilisés |
| arguments | Paramètres passés aux templates/workflows |
| volumes | Volumes partagés |
| serviceAccountName | Compte de service utilisé |
Liens et références¶
- Documentation Argo Workflows
- Interface Argo Workflows
- Documentation CLI Argo
- Kubernetes CRDs
- Pods et conteneurs Kubernetes
Notes¶
- La section
containercorrespond directement à un spec de conteneur Kubernetes et supporteenv,volumeMountsetresources. - Assurez-vous toujours que
entrypointcorrespond à un template existant.
Construit avec Mintlify.