我安装了 Argo Workflow 的默认 Helm Chart,仅将 init.serviceAccount 配置为我创建的 argo-sa。 (有足够授权的ServiceAccount) 但是,运行每个工作流都以 serviceaccount 默认值运行,我无法弄清楚该设置是在哪里配置的。 根据 Argo Helm Chart 提供的 README,指定
init.serviceAccount
作为我创建的服务帐户应该可以解决问题。
解决方法是修改默认服务帐户,但这似乎不是一个很好的解决方案。
我有什么理解不正确的地方吗?预先感谢。
Argo 安装不控制使用哪个 ServiceAccount 工作流。根据 Argo 文档,
当没有提供ServiceAccount时【提交工作流时】,Argo将使用默认的 来自运行它的命名空间的 ServiceAccount,这将 默认情况下几乎总是没有足够的权限。
如果您使用 Argo CLI 提交工作流程,您可以使用
--serviceaccount
指定 ServiceAccount。
如果您使用
kubectl apply
或其他工具来安装工作流,您可以在yaml定义中设置ServiceAccount名称。请参阅文档中的示例,或此缩写示例:
apiVersion: argoproj.io/v1alpha1
kind: Workflow
spec:
serviceAccountName: some-serviceaccount
为了方便起见,Argo Helm 图表提供了一种创建 ServiceAccount 来运行工作流程的方法。但它实际上并不会“导致”您的工作流程使用该 ServiceAccount。您必须在提交工作流程时指定它。
serviceAccount:
create: false # Specifies whether a service account should be created
annotations: {}
name: "argo-workflow" # Service account which is used to run workflows
rbac:
create: false # adds Role and RoleBinding for the above specified service account to be able to run workflows
workflowDefaults:
spec:
serviceAccountName: argo-workflow-controller