跳至内容

访问令牌

概述

如果你想通过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

将创建一个新的。


有问题吗?

Search on GitHub Discussions and Slack.