1.15. 使用 Red Hat OpenShift GitOps 配置 respectRBAC
Argo CD 中的 respectRBAC
功能控制 Argo CD 如何监视集群中的资源。默认情况下,Argo CD 会尝试查看集群范围内的所有 Kubernetes 资源(CRD)。使用 respectRBAC
功能,您可以限制 ArgoCD 控制器只使用控制器 RBAC 发现或同步特定资源,而无需手动配置资源排除。
要启用此功能,请在 Argo CD 资源中设置 .spec.controller.respectRBAC
键。设置此密钥后,控制器会自动停止监视它无法列出或访问的资源。例如,这可以防止 Argo CD 集群角色限制 Argo CD 监视 OpenShift 路由,否则会导致同步过程中出现错误,表示它无法监视资源。
您可以通过命令行界面(CLI)或 Web 控制台创建 Argo CD 实例来启用 相关的RBAC
功能。
先决条件
确保您在 Subscription
资源中创建或更新一个命名空间,以便 Subscription
可以托管集群范围的 Argo CD 实例。如需更多信息,请参阅"使用 Argo CD 实例来管理集群范围的资源"。
1.15.1. 使用 CLI 配置 respectRBAC
您可以使用 CLI 配置 respectRBAC
功能。
流程
创建一个 YAML 对象文件,如
argo-cd-resource.yaml
,以配置respectRBAC
功能:创建
respectRBAC
的ArgoCD
YAML 示例apiVersion: argoproj.io/v1beta1 kind: ArgoCD metadata: name: example-argocd 1 spec: controller: respectRBAC: strict 2
运行以下命令,将更改应用到 YAML 文件。
$ oc apply -f argocd-resource.yaml -n argo-cd-instance 1
- 1
- 指定包含
ArgoCD
资源的 YAML 文件的名称和托管ArgoCD
的命名空间。
运行以下命令,验证
.status.phase
字段的状态是否为Available
:$ oc get argocd <argocd_instance_name> -n <argocd_namespace> -o jsonpath='{.status.phase}' 1
- 1
- 将
<argocd_instance_name
> 替换为 Argo CD 实例的名称,如example-argocd
。
验证
ConfigMap
资源中的resource.respectRBAC
参数是否已成功更新:要检索
argocd-cm
配置映射的内容,请运行以下命令:$ oc get cm argocd-cm -n <argocd_namespace> -o yaml
-
验证
argocd-cm
ConfigMap
是否包含resource.respectRBAC
参数,并确保其值设置为strict
或normal
。
1.15.2. 使用 Web 控制台配置 respectRBAC
您可以在 web 控制台中配置 respectRBAC
。
流程
- 登陆到 OpenShift Container Platform Web 控制台。
-
在 Web 控制台的 Administrator 视角中,点 Operators
Installed Operators。 - 从 Project 列表创建或选择您要安装用户定义的 Argo CD 实例的项目。
- 从安装的 Operator 列表中选择 Red Hat OpenShift GitOps,然后点击 Argo CD 选项卡。
在 Argo CD 选项卡中配置
respectRBAC
参数。spec: controller: respectRBAC: strict
点 Create。
成功安装后,验证 Argo CD 实例是否在 Argo CD 选项卡下列出,Status 为 Available。
创建 Argo CD 实例后,通过完成以下步骤验证
ConfigMap
资源中的resource.respectRBAC
参数是否已成功更新。-
在 Administrator 视角中,进入 Workload
ConfigMaps。 - 在 Project 选项中,选择 Argo CD 命名空间。
-
选择
argocd-cm
配置映射。 -
选择 YAML 选项卡来查看
resource.respectRBAC
参数。
-
在 Administrator 视角中,进入 Workload