搭建 Argo Workflows 工作流引擎

适用场景

需要在 Kubernetes 上编排批处理、数据管道、CI 任务或机器学习流水线。Argo Workflows 用 YAML 定义 DAG 或步骤,每个节点是一个 Pod,适合云原生任务编排。

前置条件

步骤

  1. 安装 Argo Workflows:
kubectl create namespace argo
kubectl apply -n argo -f https://github.com/argoproj/argo-workflows/releases/latest/download/install.yaml
kubectl -n argo get pods
  1. 安装 MinIO 作为 artifact 仓库:
helm repo add minio https://charts.min.io/
helm install minio minio/minio \
  --namespace argo \
  --set rootUser=admin,rootPassword='***' \
  --set buckets[0].name=artifacts
  1. 配置 artifact repository:
kubectl -n argo create secret generic artifact-repositories \
  --from-literal=default-v1.yaml='
s3:
  bucket: artifacts
  endpoint: minio:9000
  insecure: true
  accessKeySecret:
    name: minio
    key: rootUser
  secretKeySecret:
    name: minio
    key: rootPassword
'
kubectl -n argo label secret artifact-repositories \
  workflows.argoproj.io/artifact-repositories=default
  1. 提交一个 DAG:
kubectl apply -n argo -f - <<'EOF'
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: etl-
spec:
  entrypoint: main
  templates:
  - name: main
    dag:
      tasks:
      - name: extract
        template: echo
        arguments:
          parameters: [{name: msg, value: extract}]
      - name: transform
        depends: extract
        template: echo
        arguments:
          parameters: [{name: msg, value: transform}]
  - name: echo
    inputs:
      parameters:
      - name: msg
    container:
      image: busybox
      command: [sh, -c]
      args: ["echo {{inputs.parameters.msg}}"]
EOF
  1. 查看和访问 UI:
argo list -n argo
argo logs -n argo @latest
kubectl -n argo port-forward svc/argo-server 2746:2746

验证

回滚

常见坑

相关命令