Argo Workflows
是一个容器原生的流水线引擎,用于在kubernetes上编排Job。
介绍
- argo workflows 官方示例:https://workflows.apps.argoproj.io/
- 在线课程:https://killercoda.com/pipekit/course/argo-workflows/
- Workflows 示例:https://github.com/argoproj/argo-workflows/tree/master/examples
- Argo 社区对自己的定位是 Data/Batch Processing、MLOps、AIOps,这也正是 Kubeflow Pipeline 底层基于 Argo 的原因
特性
- UI页面
- REST API
- 原生制品库支持包括:S3、Artifactory、Aliyun OSS、HTTP、Git、GCS、raw
- 模板支持灵活组合
- 工作流记录(Wrokflows Archive)
- 定时任务(Cron Wrokflows)
- 在ML、ETL、Batch/Data Processing中均有使用
- 开源、CNCF Incubating 项目
基础概念
- 参考
Workflow
由 templates
and an entrypoint
组成
- 主要有两个重要功能
entrypoint
是模板第一个被执行的节点
templates
由 6 种类型,它是列表结构,主要分为两类:
- 定义具体的工作流,工作流有4种类别,如下:
Container
通常为执行/工作节点,与 Kubernetes container spec 定义相同
Script
和 Container
一样,通过 source:
指定脚本,结果被自动注入到 Argo variable,通过 {{tasks.<NAME>.outputs.result}}
or {{steps.<NAME>.outputs.result}}
引用
Resource
直接对 k8s 集群资源进行操作
Suspend
暂停模板将暂停执行,要么持续一段时间,要么直到手动恢复执行,可以通过 argo resume 解除暂停
- 调用其他模板提供并行控制(
模板调用者(Template Invocators),用于调用其他模板并提供执行控制
),调用其他模板也有两种类别:
Steps
一个步骤模板允许以一系列的步骤来定义你的任务,也可以通过 when
等控制
Dag
模板允许你将你的任务定义为一个依赖关系的图表,在DAG中,
- 列出了所有的任务,并设定在某个任务开始之前,其他哪些任务必须完成
- 没有任何依赖关系的任务将被立即运行
Workflow Template
ClusterWorkflowTemplate
其他
"yaml.schemas": {
"https://raw.githubusercontent.com/argoproj/argo-workflows/master/api/jsonschema/schema.json": "**/workflow-templates/*.yaml"
}
- argo-hub 用 Codefresh Argo Hub 分享和复用你的 Argo 工作流程