【问题标题】:Argo Workflow always using default serviceaccountArgo Workflow 始终使用默认服务帐户
【发布时间】:2020-11-20 05:51:28
【问题描述】:

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

【问题讨论】:

    标签: kubernetes kubernetes-helm argo-workflows argoproj


    【解决方案1】:

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

    当没有提供ServiceAccount时【提交Workflow时】,Argo会使用默认的 ServiceAccount 来自运行它的命名空间,这将 默认情况下几乎总是没有足够的权限。

    如果您使用的是Argo CLI to submit Workflows,则可以使用--serviceaccount 指定ServiceAccount。

    如果您使用kubectl apply 或其他工具来安装Workflows,您可以set the ServiceAccount name in the yaml definition。请参阅example from the documentation,或以下缩写示例:

    apiVersion: argoproj.io/v1alpha1
    kind: Workflow
    spec:
      serviceAccountName: some-serviceaccount
    

    为方便起见,使用 Argo Helm 图表 provides a way to create a 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
    

    【讨论】:

    • 这非常有帮助。谢谢迈克尔!
    • @IHateMint 你打赌!
    • 我在工作流程中使用脚本模板。当我在工作流规范中指定serviceAccountName 并执行我得到的工作流时,“错误查找服务帐户默认值/argo:服务帐户”。我知道 argo 服务帐户存在于 argo 命名空间中。为什么工作流找不到?
    • @SSF 我想知道 default/argo 是否意味着它正在默认命名空间中寻找 argo sa。也许尝试在 argo 命名空间中运行工作流?
    • 哦,是的,我的错。谢谢@MichaelCrenshaw
    猜你喜欢
    • 2021-08-31
    • 2021-12-05
    • 2018-08-08
    • 2021-12-17
    • 2017-03-15
    • 1970-01-01
    • 2020-02-04
    • 2022-01-17
    • 2019-03-30
    相关资源
    最近更新 更多