我是Argo工作流的新手,并与本教程一起跟进。
随后,我们将创建一个服务帐户,然后将预先存在的workflow-role附加到服务帐户,如下所示:
> kubectl create serviceaccount mike
serviceaccount/mike created # Response from my terminal
> kubectl create rolebinding mike --serviceaccount=argo:mike --role=workflow-role
rolebinding.rbac.authorization.k8s.io/mike created # Response from my terminal但是,当我试图使用该服务帐户提交一个作业时,它说没有这样的角色workflow-role。
Message: Error (exit code 1): pods "mike-cli-hello-svlmn" is forbidden: User
"system:serviceaccount:argo:mike" cannot patch resource "pods" in API group "" in the namespace
"argo": RBAC: role.rbac.authorization.k8s.io "workflow-role" not found(我也不明白为什么我的默认API组为null,但我假设这是不相关的。)
然后我检查了一下,实际上并没有这样的作用:
❯ kubectl get role
NAME CREATED AT
agent 2022-02-28T21:38:31Z
argo-role 2022-02-28T21:38:31Z
argo-server-role 2022-02-28T21:38:32Z
executor 2022-02-28T21:38:32Z
pod-manager 2022-02-28T21:38:32Z
submit-workflow-template 2022-02-28T21:38:32Z
workflow-manager 2022-02-28T21:38:32Z这个角色是workflow-manager吗?这听起来更像是管理管道/ DAG或类似的自动化服务。
我显然对阿尔戈很陌生。我已经成功地启动了作业,但在尝试使用新创建的服务帐户时却没有。
Argo应该有一个默认的workflow-role角色吗?我如何创建它?
发布于 2022-03-06 17:45:51
实际上,我想我明白了,但如果有人看到这个,确认一下就好了。
我创建了一个角色文件如下:
role.yaml:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: workflow
rules:
- apiGroups:
- ""
resources:
- pods
verbs:
- get
- watch
- patch
- apiGroups:
- ""
resources:
- pods/log
verbs:
- get
- watch然后我通过标准创建了这个角色。
kubectl apply -f role.yaml然后创建与上面相同的角色绑定:
kubectl create rolebinding mike --serviceaccount=argo:mike --role=workflow然后,我可以在新的服务帐户上提交工作,没有问题:
argo submit --serviceaccount mike --watch argo_tutorial.yamlhttps://stackoverflow.com/questions/71372688
复制相似问题