Argo CD 应用程序集
在非 control plane 命名空间中管理应用程序设置资源
摘要
第 1 章 在非 control plane 命名空间中管理应用程序设置资源
非 control plane 命名空间中的 Argo CD 应用程序设置只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
通过使用应用程序集,您可以一次自动和管理多个 Argo CD 应用程序的部署,并一次从一个 mono-repository 变为多个集群,并具有更大的灵活性。
在 Red Hat OpenShift GitOps 1.12 及之后的版本中,作为集群管理员,您可以通过在非 control plane 命名空间中声明(除 openshift-gitops
control plane 命名空间外)中创建和管理 ApplicationSet
资源,根据您的要求明确启用和配置 ArgoCD
和 ApplicationSet
自定义资源(CR)。当您要为隔离团队管理 Argo CD 应用程序时,此功能在多租户环境中特别有用。此功能在 Argo CD 开源项目的任何命名空间功能 中称为 ApplicationSet。
生成的 Argo CD 应用程序可以在任何非 control plane 命名空间中创建资源。但是,应用程序本身将处于与应用程序设置资源相同的命名空间中。
1.1. 先决条件
-
在定义的命名空间中有一个用户定义的 集群范围的 Argo CD 实例。例如,
spring-petclinic
命名空间。 -
您已在
ArgoCD
CR 中 显式启用并配置了 目标命名空间,以管理非 control plane 命名空间中的应用程序资源。
1.2. 在非 control plane 命名空间中启用应用程序设置资源
作为集群管理员,您可以定义一组特定的非 control plane 命名空间,用户可以在其中创建、更新和协调 ApplicationSet
资源。您必须根据您的要求显式启用并配置 ArgoCD
和 ApplicationSet
自定义资源(CR)。
流程
将
applicationSet
spec 的sourceNamespaces
参数设置为包含非 control plane 命名空间:Argo CD 自定义资源示例
apiVersion: argoproj.io/v1beta1 kind: ArgoCD metadata: name: example namespace: spring-petclinic spec: applicationSet: sourceNamespaces: 1 - dev 2
注意目前,
.spec.applicationSet.sourceNamespaces
字段中不支持使用通配符(*
)。验证 GitOps Operator 是否已创建或修改以下基于角色的访问控制(RBAC)资源:
Name Kind 用途 <argocd_name>-<argocd_namespace>-argocd-applicationset-controller
ClusterRole
和ClusterRoleBinding
对于 Argo CD ApplicationSet Controller,在集群级别监视和列出
ApplicationSet
资源<argocd_name>-<argocd_namespace>-applicationset
Role
和RoleBinding
对于 Argo CD ApplicationSet Controller,管理目标命名空间中的
ApplicationSet
资源<argocd_name>-<target_namespace>
Role
和RoleBinding
对于 Argo CD 服务器,通过 UI、API 或 CLI 管理目标命名空间中的
ApplicationSet
资源注意Operator 将
argocd.argoproj.io/applicationset-managed-by-cluster-argocd
标签添加到目标命名空间中。
1.3. 允许源代码管理器供应商
请仔细阅读本节。错误配置可能会导致出现潜在的安全问题。
在非 control plane 命名空间中允许 ApplicationSet
资源可以通过 Source Code Manager (SCM) Provider 或 Pull Request (PR)生成器中的恶意 API 端点来破坏 secret。为了防止未经授权访问敏感信息,Operator 默认禁用 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 Controller 将拒绝它。