第 3 章 在非 control plane 命名空间中管理应用程序资源
作为集群管理员,您可以在 openshift-gitops
control plane 命名空间以外的非 control plane 命名空间中创建和管理应用程序资源。此功能在 Argo CD 开源项目的任何命名空间中称为 Applications。
注意
作为开发者,如果您要在 openshift-gitops
control plane 命名空间以外的非 control plane 命名空间中创建 Argo CD 应用程序,请确保集群管理员为它们授予必要的权限。
否则,在 Argo CD 协调后,您会看到类似以下示例的错误消息:
错误信息示例
error while validating and normalizing app: error getting application's project: application 'app' in namespace 'dev' is not allowed to use project 'default'
要使用这个功能,您必须在以下对象中显式启用和配置目标命名空间:
-
用户定义的集群范围的 Argo CD 实例的
ArgoCD
自定义资源(CR) -
AppProject
自定义资源(CR) -
Application
CR
在非 control plane 命名空间中创建和管理应用程序资源的过程由以下步骤组成:
当您要为隔离的团队管理 Argo CD 应用程序部署时,此功能在多租户环境中很有用。
重要
要防止应用程序团队的特权升级,您必须满足以下要求:
-
不要在任何 privileged
AppProject
实例的.spec.sourceNamespaces
字段中配置非 control plane 命名空间,例如,在openshift-gitops
control plane 命名空间或您定义的命名空间中安装的AppProject
CR的默认
实例。 -
不要在
AppProject
CRD 中授予对openshift-gitops
control plane 命名空间的访问权限。 -
在
openshift-gitops
control plane 命名空间中始终创建和配置用户定义的AppProject
实例,然后在对应的用户定义的AppProject
实例中在.spec.sourceNamespaces
字段中配置非 control plane 命名空间。
3.1. 先决条件
- 您已在 OpenShift Container Platform 集群上安装 Red Hat OpenShift GitOps 1.13.0 或更高版本。
-
在定义的命名空间中有一个用户定义的 集群范围的 Argo CD 实例,如
spring-petclinic
命名空间。