error while validating and normalizing app: error getting application's project: application 'app' in namespace 'dev' is not allowed to use project 'default'
作为集群管理员,您可以声明性地创建和管理非控制平面命名空间中的Application
资源,而不是openshift-gitops
控制平面命名空间。此功能在 Argo CD 开源项目中称为“任何命名空间中的应用程序”功能。
作为开发人员,如果您在非控制平面命名空间(而不是 否则,在 Argo CD 调和之后,您将看到类似于以下示例的错误消息 示例错误消息
|
要使用此功能,您必须在以下对象中显式启用和配置目标命名空间
您用户定义的集群范围 Argo CD 实例的ArgoCD
自定义资源 (CR)
AppProject
自定义资源 (CR)
Application
CR
在非控制平面命名空间中创建和管理Application
资源的过程包括以下步骤
此功能在您希望为隔离的团队管理 Argo CD 应用程序部署的多租户环境中非常有用。
为了防止应用程序团队的权限提升,您必须满足以下要求
|
您已在 OpenShift Container Platform 集群上安装了 Red Hat OpenShift GitOps 1.13.0 或更高版本。
您在已定义的命名空间(例如,spring-petclinic
命名空间)中拥有一个用户定义的集群范围的 Argo CD 实例。
作为集群管理员,您可以定义一组用户可以在其中创建、更新和协调Application
资源的非控制平面命名空间。您必须首先根据您的要求在用户定义的集群范围 Argo CD 实例的ArgoCD
自定义资源 (CR) 中显式配置目标命名空间。
您已以管理员身份登录到 OpenShift Container Platform 集群。
您已在 OpenShift Container Platform 集群上安装了 Red Hat OpenShift GitOps 1.13.0 或更高版本。
您在已定义的命名空间(例如,spring-petclinic
命名空间)中拥有一个用户定义的集群范围 Argo CD 实例。
在 Web 控制台的**管理员**视角中,点击**Operators** → **已安装的 Operators**。
从**项目**列表中,选择安装了用户定义的集群范围 Argo CD 实例的项目。
从已安装的 Operators 列表中选择**Red Hat OpenShift GitOps**,然后转到**Argo CD**选项卡。
点击您的用户定义的集群范围 Argo CD 实例。
使用目标命名空间配置用户定义的集群范围 Argo CD 实例的ArgoCD
CR
点击**YAML**选项卡并编辑ArgoCD
CR 的 YAML 文件。
在ArgoCD
CR 中,将sourceNamespaces
参数的值设置为包含非控制平面命名空间。
ArgoCD
CR 示例apiVersion: argoproj.io/v1beta1
kind: ArgoCD
metadata:
name: example (1)
namespace: spring-petclinic (2)
spec:
sourceNamespaces: (3)
- dev (4)
- app-team-* (5)
1 | 用户定义的集群范围 Argo CD 实例的名称。 |
2 | 您希望运行用户定义的集群范围 Argo CD 实例的命名空间。 |
3 | 用于创建和管理Application 资源的非控制平面命名空间列表。 |
4 | Argo CD 服务器创建和管理Application 资源的目标命名空间的名称。 |
5 | 使用通配符 (* ) 指定与模式app-team-* 匹配的目标命名空间的名称(例如app-team-1 和app-team-2 ),以便 Argo CD 服务器创建和管理Application 资源。 |
点击**保存**和**重新加载**。
在 dev 目标命名空间示例
|
验证 Operator 是否已将argocd.argoproj.io/managed-by-cluster-argocd
标签添加到指定的命名空间
转到**管理** → **命名空间**,然后点击**创建命名空间**。
在**创建命名空间**对话框中,提供**名称**并点击**创建**。
例如,要创建dev
目标命名空间,请在**名称**字段中输入dev
。您可以重复之前的步骤来创建app-team-1
和app-team-2
目标命名空间。
**命名空间**页面将显示已创建的目标命名空间。
点击目标命名空间,然后转到**YAML**选项卡以验证 Operator 添加的argocd.argoproj.io/managed-by-cluster-argocd
标签。
验证您的用户定义的集群范围 Argo CD 实例是否配置了用于管理集群范围资源的集群角色
转到**用户管理** → **角色**,然后从**筛选器**列表中选择**集群范围的角色**。
使用**按名称搜索**字段搜索已创建的集群角色。例如,example-spring-petclinic-argocd-application-controller
和example-spring-petclinic-argocd-server
。
**角色**页面将显示已创建的集群角色。
验证 GitOps Operator 是否创建了以下基于角色的访问控制 (RBAC) 资源
名称 | 类型 | 用途 |
---|---|---|
|
|
用于 Argo CD Application Controller 在集群级别监视和列出 |
|
|
用于 Argo CD Server 在集群级别监视和列出 |
|
|
用于 Argo CD 服务器通过 UI、API 或 CLI 在目标命名空间中管理 |
作为集群管理员,您可以定义一组用户可以在其中创建、更新和协调Application
资源的非控制平面命名空间。在使用目标命名空间配置用户定义的集群范围 Argo CD 实例后,您必须在openshift-gitops
控制平面命名空间中创建和配置用户定义的AppProject
实例。此外,您必须在用户定义的AppProject
实例的.spec.sourceNamespaces
字段中显式配置目标命名空间。
GitOps 控制平面命名空间 ( |
您已以管理员身份登录到 OpenShift Container Platform 集群。
您已在 OpenShift Container Platform 集群上安装了 Red Hat OpenShift GitOps 1.13.0 或更高版本。
在openshift-gitops
控制平面命名空间中创建和配置用户定义的AppProject
实例,以在.spec.sourceNamespaces
字段中指定目标命名空间
从**项目**列表中,选择openshift-gitops
项目。
在 Web 控制台的**管理员**视角中,点击**Operators** → **已安装的 Operators** → **Red Hat OpenShift GitOps**,然后转到**AppProject**选项卡。
点击**创建 AppProject**,并在 YAML 视图中输入以下配置
AppProject
实例示例kind: AppProject
apiVersion: argoproj.io/v1alpha1
metadata:
name: project-one (1)
namespace: openshift-gitops (2)
spec:
sourceNamespaces: (3)
- dev (4)
- app-team-* (5)
destinations: (6)
- name: '*'
namespace: '*'
server: '*'
sourceRepos: (7)
- '*'
1 | 用户定义的AppProject 实例的名称。 |
2 | 您要运行用户定义的AppProject 实例的控制平面命名空间。 |
3 | 用于创建和管理Application 资源的非控制平面命名空间列表。 |
4 | Argo CD 服务器创建和管理Application 资源的目标命名空间的名称。 |
5 | 使用通配符 (* ) 指定与模式app-team-* 匹配的目标命名空间的名称(例如app-team-1 和app-team-2 ),以便 Argo CD 服务器创建和管理Application 资源。 |
6 | 对用户定义的AppProject 实例中的应用程序可以部署到的集群和命名空间的引用。 |
7 | 对用户定义的AppProject 实例中的应用程序可以从中拉取清单的资源库的引用。 |
点击创建。
AppProjects页面显示已创建的用户定义AppProject
实例。
作为集群管理员,您可以定义一组特定的非控制平面命名空间,用户可以在其中创建、更新和协调Application
资源。在用户定义的AppProject
实例的.spec.sourceNamespaces
字段中配置目标命名空间后,必须显式创建和配置Application
自定义资源 (CR),其metadata.namespace
和.spec.project
字段的参数要引用目标命名空间和用户定义的AppProject
实例。
您已以管理员身份登录到 OpenShift Container Platform 集群。
您已在 OpenShift Container Platform 集群上安装了 Red Hat OpenShift GitOps 1.13.0 或更高版本。
创建并配置Application
CR,其metadata.namespace
和.spec.project
字段的参数要引用目标命名空间和用户定义的AppProject
实例。
从项目列表中选择目标命名空间。
在 Web 控制台的管理员视角中,点击Operators → Installed Operators → Red Hat OpenShift GitOps 并转到Application选项卡。
点击创建应用程序并在 YAML 视图中输入以下配置
AppProject
实例示例kind: Application
apiVersion: argoproj.io/v1alpha1
metadata:
name: cluster-configs (1)
namespace: dev (2)
spec:
project: project-one (3)
# ...
1 | 应用程序的名称。 |
2 | Argo CD 服务器创建和管理Application 资源的目标命名空间的名称。 |
3 | 用户定义的AppProject 实例的名称。 |
点击创建。
应用程序页面显示已创建的应用程序。
cluster-configs
Argo CD 应用程序现在状态为健康和已同步。