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 应用程序现在状态为健康和已同步。