访问令牌¶
概述¶
如果你想通过Argo Server API或CLI实现任务自动化,你将需要一个访问令牌。
先决条件¶
首先,创建一个具有最小权限的角色。这个为Jenkins设置的角色示例仅拥有更新和列出工作流的权限:
kubectl create role jenkins --verb=list,update --resource=workflows.argoproj.io
为您的服务创建一个服务账户:
kubectl create sa jenkins
令牌创建提示¶
为每个客户端创建一个唯一的服务账户:
- (a) 您将能够正确保护您的工作流
- (b) 撤销令牌 而不影响其他客户端。
将服务账户绑定到角色(本例中是在argo命名空间内):
kubectl create rolebinding jenkins --role=jenkins --serviceaccount=argo:jenkins
令牌创建¶
您现在需要创建一个密钥来保存您的令牌:
kubectl apply -f - <<EOF
apiVersion: v1
kind: Secret
metadata:
name: jenkins.service-account-token
annotations:
kubernetes.io/service-account.name: jenkins
type: kubernetes.io/service-account-token
EOF
等待几秒钟:
ARGO_TOKEN="Bearer $(kubectl get secret jenkins.service-account-token -o=jsonpath='{.data.token}' | base64 --decode)"
echo $ARGO_TOKEN
Bearer ZXlKaGJHY2lPaUpTVXpJMU5pSXNJbXRwWkNJNkltS...
令牌使用与测试¶
要在CLI中使用该令牌,您需要设置ARGO_SERVER(参见argo --help)。
在您的API请求中使用该令牌,例如列出工作流:
curl https://localhost:2746/api/v1/workflows/argo -H "Authorization: $ARGO_TOKEN"
# 200 OK
您应该检查自己是否无法执行未被允许的操作!
curl https://localhost:2746/api/v1/workflow-templates/argo -H "Authorization: $ARGO_TOKEN"
# 403 error
令牌使用 - Docker¶
设置额外参数以初始化Argo配置¶
ARGO_SERVER="${{HOST}}:443"
KUBECONFIG=/dev/null
ARGO_NAMESPACE=sandbox
使用以上设置启动容器¶
列出命名空间中模板的示例:
docker run --rm -it \
-e ARGO_SERVER=$ARGO_SERVER \
-e ARGO_TOKEN=$ARGO_TOKEN \
-e ARGO_HTTP=false \
-e ARGO_HTTP1=true \
-e KUBECONFIG=/dev/null \
-e ARGO_NAMESPACE=$ARGO_NAMESPACE \
argoproj/argocli:latest template list -v -e -k
令牌撤销¶
令牌泄露?
kubectl delete secret $SECRET
将创建一个新的。