You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Argo Workflow开启memoization时指定ServiceAccount未生效问题

根因说明

你在工作流定义、提交命令中指定的ServiceAccount是给工作流运行的业务Pod使用的,而memoize缓存功能的ConfigMap读写操作是Argo工作流控制器自身执行的,用的是控制器部署时绑定的ServiceAccount,也就是报错中出现的system:serviceaccount:argo:argo,这个账户默认没有修改ConfigMap的权限,所以出现403报错。

修复方案

方案一:给控制器默认ServiceAccount添加权限(推荐,权限范围最小)

给argo命名空间下名为argo的控制器默认ServiceAccount,仅授予缓存用ConfigMap的更新权限:

  1. 创建权限角色配置文件cache-role.yaml:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: argo
  name: configmap-cache-role
rules:
- apiGroups: [""]
  resources: ["configmaps"]
  verbs: ["get", "update", "patch"]
  resourceNames: ["my-config"]
  1. 创建角色绑定配置文件cache-rolebinding.yaml:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: configmap-cache-binding
  namespace: argo
subjects:
- kind: ServiceAccount
  name: argo
  namespace: argo
roleRef:
  kind: Role
  name: configmap-cache-role
  apiGroup: rbac.authorization.k8s.io
  1. 执行命令生效配置:
kubectl apply -f cache-role.yaml
kubectl apply -f cache-rolebinding.yaml

方案二:更换控制器使用的ServiceAccount

如果你已经给dma ServiceAccount配置了所有控制器需要的运行权限,可以直接修改工作流控制器的Deployment配置,将spec.template.spec.serviceAccountName字段值改为dma,之后重启控制器Pod即可生效。

配置完成后重新提交工作流即可正常更新缓存ConfigMap,不会再出现403权限报错。


内容的提问来源于stack exchange,提问作者user3877654

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 18:15:02