Argo 工作流始终使用默认服务帐户

Pil*_*hae 3 kubernetes kubernetes-helm argoproj argo-workflows

我安装了 Argo Workflow 的默认舵图,仅将 init.serviceAccount 配置为我创建的 argo-sa。(具有足够授权的ServiceAccount)但是,运行每个工作流都作为serviceaccount Default 运行,我无法弄清楚设置的配置位置。根据 Argo Helm Chart 提供的 README,指定init.serviceAccount为我创建的 serviceaccount 应该可以解决问题。解决方法是修改默认服务帐户,但似乎不是一个很好的解决方案。有什么我理解错误的吗?提前致谢。

Mic*_*haw 9

Argo 安装不控制使用哪个 ServiceAccount 工作流。根据Argo 文档

当没有提供 ServiceAccount 时[提交工作流时],Argo 将使用运行它的命名空间中的默认 ServiceAccount,默认情况下它几乎总是没有足够的权限。

如果您使用Argo CLI 提交工作流,则可以使用--serviceaccount.

如果您正在使用kubectl apply或其他一些工具来安装 Workflows,您可以在 yaml 定义中设置 ServiceAccount 名称。请参阅文档中示例,或此缩写示例:

apiVersion: argoproj.io/v1alpha1
kind: Workflow
spec:
  serviceAccountName: some-serviceaccount
Run Code Online (Sandbox Code Playgroud)

为方便起见,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
Run Code Online (Sandbox Code Playgroud)