第 2 章 通过为集群范围的实例创建用户定义的集群角色来自定义权限


对于默认的集群范围的实例,Red Hat OpenShift GitOps Operator 授予管理特定集群范围资源的额外权限。因此,作为集群管理员,当您将 Argo CD 部署为集群范围的实例时,Operator 会为 GitOps control plane 组件创建额外的集群角色和集群角色绑定。这些集群角色和集群角色绑定提供了 Argo CD 在集群级别操作的额外权限。

如果您不希望集群范围的实例具有所有 Operator-given 权限,并选择向集群范围资源添加或删除权限,您必须首先禁用为集群范围的实例创建默认集群角色。然后,您可以为以下集群范围的实例自定义权限:

  • 默认 ArgoCD 实例(默认集群范围的实例)
  • 用户定义的集群范围的 Argo CD 实例

本指南提供了一些示例,可帮助您创建用户定义的集群范围的 Argo CD 实例,在定义的命名空间中部署 Argo CD 应用程序,其中包含集群的自定义配置,禁用为集群范围的实例创建默认集群角色,并通过为 GitOps control plane 组件创建新的集群角色来自定义权限。

注意

作为开发者,如果您要创建 Argo CD 应用程序并部署集群范围的资源,请确保集群管理员为它们授予必要的权限。

否则,在 Argo CD 协调后,您将在应用程序的 Status 字段中看到与以下示例类似的身份验证错误消息:

身份验证错误消息示例

persistentvolumes is forbidden: User "system:serviceaccount:gitops-demo:argocd-argocd-application-controller" cannot create resource "persistentvolumes" in API group "" at the cluster scope.

2.1. 先决条件

  • 您已在 OpenShift Container Platform 集群上安装 Red Hat OpenShift GitOps 1.13.0 或更高版本。
  • 已安装 OpenShift CLI(oc)。
  • 已安装 Red Hat OpenShift GitOps argocd CLI。
  • 您已在定义的命名空间中安装了 集群范围的 Argo CD 实例。例如,spring-petclinic 命名空间。
  • 您已验证了用户定义的集群范围的实例配置了以下组件的集群角色和集群角色绑定:

    • Argo CD Application Controller
    • Argo CD 服务器
    • Argo CD ApplicationSet Controller (提供 ApplicationSet Controller 会被创建)
  • 您已使用 spring-petclinic 命名空间中的 customclusterrole 路径 部署了 cluster-configs Argo CD 应用程序,并创建了 test-gitops-ns 命名空间和 test-gitops-pv 持久性卷资源。

    注意

    cluster-configs Argo CD 应用程序必须由用户定义的集群范围的实例管理,并设置以下参数:

    • selfHeal 字段值设为 true
    • syncPolicy 字段值设置为 automated
    • Label 字段设置为 app.kubernetes.io/part-of=argocd
    • Label 字段设置为 argocd.argoproj.io/managed-by=<user_defined_namespace > 值,以便定义的命名空间中的 Argo CD 实例可以管理您的命名空间
    • Label 字段被设置为 app.kubernetes.io/name=<user_defined_argocd_instance>
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.