Kubernetes的工作流引擎, Argo Workflows是一个开源项目,为Kubernetes提供container-native工作流程,其主要通过Kubernetes CRD实现的。
特点如下:
- 工作流的每一步都是一个容器
- 将多步骤工作流建模为一系列任务,或者使用有向无环图(DAG)描述任务之间的依赖关系
- 可以在短时间内轻松运行用于机器学习或数据处理的计算密集型作业
- 在Kubernetes上运行CI/CD Pipeline,无需复杂的软件配置
Open source tools for Kubernetes to run workflows, manage clusters, and do GitOps right.
目前Argo包含多个子项目:
- Argo Workflows:基于容器的任务编排工具。
- Argo CD:基于GitOps声明的持续交付工具。
- Argo Events:事件驱动工具。
- Argo Rollouts:支持金丝雀以及蓝绿发布的应用渐进式发布工具。
下载安装argo cli (Linux环境)
https://github.com/argoproj/argo
# Download the binary
curl -sLO https://github.com/argoproj/argo-workflows/releases/download/v3.3.5/argo-linux-amd64.gz
# Unzip
gunzip argo-linux-amd64.gz
# Make binary executable
chmod +x argo-linux-amd64
# Move binary to path
mv ./argo-linux-amd64 /usr/local/bin/argo
# Test installation
argo version
安装控制器和UI
kubectl create namespace argo
wget https://raw.githubusercontent.com/argoproj/argo-workflows/master/manifests/install.yaml
kubectl apply -n argo -f install.yaml
配置服务账户用于运行workflows
当集群是基于RBAC(Role-Based Access Control,基于角色的访问控制)时,默认账户有很多的限制,比如不能支持组件,输出等等。
执行以下命令授权默认的服务账户在默认的namespace中拥有admin的权限
kubectl create rolebinding default-admin --clusterrole=admin --serviceaccount=default:default
或者你可以在提交workflow时指定服务