Introduction
Vue d’ensemble de Argo Workflows, un moteur Kubernetes-native orchestrant des pipelines CI/CD containerisés, du traitement de données et des workflows ML en utilisant des DAGs, des templates et des outils d’observabilité.
Argo Workflow¶
Argo Workflows est un workflow engine conçu pour Kubernetes, permettant d'orchestrer des jobs parallèles et séquentiels via des conteneurs. Il facilite la modélisation de processus complexes sous forme de séquences linéaires ou de graphes acycliques dirigés (DAG), chaque étape s'exécutant dans son propre conteneur. Intégré à Kubernetes, Argo est léger, scalable et cloud-agnostic, sans nécessiter d'orchestration externe.
Argo est couramment utilisé pour des pipelines CI/CD, le traitement de données ou des workflows de machine learning s'exécutant directement sur des clusters Kubernetes. Son design Kubernetes-native vous donne accès aux primitives Kubernetes (RBAC, namespaces, quotas de ressources, stockage) tout en fournissant des constructions de workflow abstraites et haut niveau.
Workflow¶
Un workflow est une série de tâches ou étapes exécutées dans un ordre précis pour atteindre un objectif spécifique. Couramment utilisé dans des domaines comme le business, le développement ou la gestion de projet, dans Argo, un workflow désigne une Kubernetes Custom Resource qui orchestre cette séquence d'étapes en gérant leurs dépendances et conditions de manière déclarative pour accomplir un objectif précis. Il conserve aussi l’état d'exécution du processus.
Features¶
Argo Workflows propose un ensemble riche de fonctionnalités pour orchestrer des workloads directement sur Kubernetes:
- Définitions de workflow déclaratives: Créez des workflows avec des manifests YAML qui décrivent des
steps, desDAGs, destemplates, ainsi que desinputs/outputs. - Primitives de control-flow: Support intégré pour l’exécution conditionnelle, les boucles,
fan-in/fan-out, et les steps parallèles. - Réutilisabilité & paramétrisation: Définissez des objets
WorkflowTemplateetClusterWorkflowTemplateréutilisables et passez des paramètres entre templates. - Visualisation & observabilité: L’interface
Argo Server UIvisualise lesDAGs, fournit des logs par step et affiche l’état d’exécution pour le debugging. - Contrôle d’exécution:
Timeouts,suspend/resume,retries, etbackoff policiespour contrôler le comportement à l’exécution. - Data passing & artifacts: Support natif des
artifacts(S3, GCS, HTTP, etc.) ainsi que des paramètres et outputs pour transférer des données entre steps. - Concurrency & resource management: Configurez le parallélisme au niveau du workflow, du template et des
stepspour contrôler la consommation de ressources. - Services long-running: Les
sidecarsetdaemon stepspermettent d’exécuter des services en arrière-plan aux côtés des steps du workflow. - SDKs & clients: Des SDKs officiels Go et Python (et des SDKs communautaires pour d’autres langages) permettent un contrôle programmatique des workflows.
- Exit handlers & cleanup: Les handlers
onExit, les stratégiesTTLet les options degarbage-collectionaident à automatiser le nettoyage et le teardown.
Exemple déclaratif minimal¶
Ci-dessous un exemple minimal de workflow qui démontre le style déclaratif et une simple séquence de steps.
Key takeaway¶
| Domaine de fonctionnalité | Cas d’usage | Exemple |
|---|---|---|
| Types de workflow | Orchestration séquentielle ou DAG | spec.templates[].steps ou spec.templates[].dag |
| Artifacts & stockage | Partage de fichiers entre steps | Emplacements d’artifacts S3/GCS/HTTP |
| Control flow | Logique conditionnelle, boucles | when, withItems, withParam |
| Observabilité | UI et logs | Argo Server web UI + kubectl logs |
| Contrôle d’exécution | Timeouts, suspend/resume, retries | activeDeadlineSeconds, suspend, retryStrategy |
| Reusability | Templates et bibliothèques | WorkflowTemplate, ClusterWorkflowTemplate |