×

在非控制平面命名空间中使用 Application Sets 只是一个技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 的支持,并且可能功能不完整。Red Hat 不建议在生产环境中使用它们。这些功能提供对即将推出的产品功能的早期访问,使客户能够在开发过程中测试功能并提供反馈。

有关 Red Hat 技术预览功能的支持范围的更多信息,请参阅 技术预览功能支持范围

通过使用 Application Sets,您可以从单个单一存储库到多个集群一次性声明性地自动化和管理多个 Argo CD 应用程序的部署,从而获得更大的灵活性。

从 Red Hat OpenShift GitOps 1.12 版本开始,作为集群管理员,您可以除了 `openshift-gitops` 控制平面命名空间之外,通过根据您的要求显式启用和配置 `ArgoCD` 和 `ApplicationSet` 自定义资源 (CR) 来声明性地在非控制平面命名空间中创建和管理 `ApplicationSet` 资源。当您想要管理您隔离团队的 Argo CD 应用程序的部署时,此功能在多租户环境中特别有用。此功能在 Argo CD 开源项目中称为“任何命名空间中的 ApplicationSet”功能。

生成的 Argo CD 应用程序可以在任何非控制平面命名空间中创建资源。但是,应用程序本身将与 Application Set 资源位于相同的命名空间。

先决条件

  • 您在定义的命名空间中有一个用户定义的 集群范围的 Argo CD 实例。例如,`spring-petclinic` 命名空间。

  • 您已 显式启用和配置 `ArgoCD` CR 中的目标命名空间以在非控制平面命名空间中管理应用程序资源。

在非控制平面命名空间中启用 Application Set 资源

作为集群管理员,您可以定义一组非控制平面命名空间,用户可以在其中创建、更新和协调ApplicationSet资源。您必须根据您的需求显式启用和配置ArgoCDApplicationSet自定义资源 (CR)。

步骤
  1. applicationSet规范的sourceNamespaces参数设置为包含非控制平面命名空间

    Argo CD 自定义资源示例
    apiVersion: argoproj.io/v1beta1
    kind: ArgoCD
    metadata:
      name: example
      namespace: spring-petclinic
    spec:
      applicationSet:
        sourceNamespaces: (1)
          - dev (2)
    1 用于创建和管理ApplicationSet资源的非控制平面命名空间列表。
    2 Argo CD 服务器创建和管理ApplicationSet资源的目标命名空间名称。

    目前,.spec.applicationSet.sourceNamespaces字段不支持使用通配符 (*)。

  2. 验证以下基于角色的访问控制 (RBAC) 资源是否已由 GitOps 运算符创建或修改

    名称 种类 用途

    <argocd_name>-<argocd_namespace>-argocd-applicationset-controller

    ClusterRoleClusterRoleBinding

    用于 Argo CD ApplicationSet 控制器在集群级别监视和列出ApplicationSet资源

    <argocd_name>-<argocd_namespace>-applicationset

    RoleRoleBinding

    用于 Argo CD ApplicationSet 控制器在目标命名空间中管理ApplicationSet资源

    <argocd_name>-<target_namespace>

    RoleRoleBinding

    用于 Argo CD 服务器通过 UI、API 或 CLI 在目标命名空间中管理ApplicationSet资源

    运算符将argocd.argoproj.io/applicationset-managed-by-cluster-argocd标签添加到目标命名空间。

允许源代码管理器提供程序

请仔细阅读本节。错误配置可能导致潜在的安全问题。

在非控制平面命名空间中允许ApplicationSet资源可能会导致通过源代码管理器 (SCM) 提供程序或拉取请求 (PR) 生成器中的恶意 API 端点泄露机密信息。为防止未经授权访问敏感信息,运算符默认情况下会禁用 SCM 提供程序和 PR 生成器,以此作为预防措施。

步骤
  • 要使用 SCM 提供程序和 PR 生成器,请显式定义允许的 SCM 提供程序列表

    Argo CD 自定义资源示例
    apiVersion: argoproj.io/v1beta1
    kind: ArgoCD
    metadata:
      name: example-argocd
    spec:
      applicationSet:
        sourceNamespaces:
          - dev
        scmProviders: (1)
          - https://git.mydomain.com/
          - https://gitlab.mydomain.com/
    1 允许的 SCM 提供程序的 URL 列表。

如果您使用不在允许的 SCM 提供程序列表中的 URL,Argo CD ApplicationSet 控制器将拒绝它。