argo的特点
1、argo是基于容器的,不需要传统的虚拟机机系统和环境
2、argo是云无关的,可以在任意的k8s集群中运行
3、argo能定制计算资源,让云端的资源在我们的掌握之中
谁在使用argo
Adobe
BlackRock
CoreFiling
Cyrus Biotechnology
Datadog
Gladly
Google
Interline Technologies
Intuit
Localytics
NVIDIA
#开始使用
准备环境
1、需要运行在Kubernetes 1.9或者1.9+的版本之上
2、下载有kubectl命令行客户端
3、配置好kubeconfig文件(配置文件默认路径~/.kube/config)
详情参考文章:
kubernetes—CentOS7安装kubernetes1.11.2图文完整版
##下载安装argo
Mac环境:
brew install argoproj/tap/argo
Linux环境
curl -sSL -o /usr/local/bin/argo https://github.com/argoproj/argo ... .0/argo-linux-amd64
chmod +x /usr/local/bin/argo
安装控制器和UI
使用命令
kubectl create ns argo
kubectl apply -n argo -f https://raw.githubusercontent.co ... ifests/install.yaml
如果我们的k8s集群式运行在GKE (Google Kubernetes Engine)上的,则还需要授权账号可以创造集群的角色使用命令如下,非GKE集群不需要运行:
kubectl create clusterrolebinding YOURNAME-cluster-admin-binding --clusterrole=cluster-admin --user=YOUREMAIL@gmail.com
配置服务账户用于运行workflows
当集群是基于RBAC(Role-Based Access Control,基于角色的访问控制)时,默认账户有很多的限制,比如不能支持组件,输出等等。
执行以下命令授权默认的服务账户在默认的namespace中拥有admin的权限
kubectl create rolebinding default-admin --clusterrole=admin --serviceaccount=default:default
1
或者你可以在提交workflow时指定服务账户,使用命令如下:
argo submit --serviceaccount <name>
1
尝试运行argo例子
这是一个类似于helloword的小例子,使用命令如下:
argo list
argo get xxx-workflow-name-xxx
argo logs xxx-pod-name-xxx #from get command above
我们也可以使用kubectl命令进行workflow的提交,不过相对于argo命令来说,kubectl命令缺少了很多功能,比如yaml的验证,workflow的可视化,参数验证,重试和重新提交等等。
使用命令如下:
kubectl create -f https://raw.githubusercontent.co ... es/hello-world.yaml
kubectl get wf
kubectl get wf hello-world-xxx
kubectl get po --selector=workflows.argoproj.io/workflow=hello-world-xxx --show-all
kubectl logs hello-world-yyy -c main |