Skip to content

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, des DAGs, des templates, ainsi que des inputs/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 WorkflowTemplate et ClusterWorkflowTemplate réutilisables et passez des paramètres entre templates.
  • Visualisation & observabilité: L’interface Argo Server UI visualise les DAGs, fournit des logs par step et affiche l’état d’exécution pour le debugging.
  • Contrôle d’exécution: Timeouts, suspend/resume, retries, et backoff policies pour 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 steps pour contrôler la consommation de ressources.
  • Services long-running: Les sidecars et daemon steps permettent 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égies TTL et les options de garbage-collection aident à 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.

workflow-example.yaml
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: hello-argo-
spec:
  entrypoint: hello-sequence
  templates:
    - name: hello-sequence
      steps:
        - - name: step-1
            template: echo
            arguments:
              parameters:
                - name: msg
                  value: "Hello from step 1"
        - - name: step-2
            template: echo
            arguments:
              parameters:
                - name: msg
                  value: "Hello from step 2"

    - name: echo
      inputs:
        parameters:
          - name: msg
      container:
        image: alpine:3.17
        command: [sh, -c]
        args: ["echo {{inputs.parameters.msg}}"]

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