1.2. 通过为命名空间范围的实例指定用户定义的集群角色来配置常见集群角色
作为集群管理员,当您使用 argocd.argoproj.io/managed-by
标签为命名空间提供 Argo CD 访问权限时,Argo CD 会假定 namespace-admin
权限。然后,Red Hat OpenShift GitOps Operator 会自动为以下 GitOps control plane 组件的所有受管命名空间创建角色绑定:
- Argo CD Application Controller
- Argo CD 服务器
- Argo CD ApplicationSet Controller
当您向非管理员用户提供命名空间时,如开发团队,他们可以使用 namespace-admin
特权来修改网络策略等对象。在这些命名空间中安装 Argo CD 实例可让开发团队具有 admin
权限,并间接提升其分配的权限。这些角色具有高度特权,可以删除所有资源。作为防止操作,您可以通过为 Operator 为 Argo CD Application Controller 和 Argo CD 服务器组件创建的所有受管命名空间配置通用集群角色来定义一组特定权限来满足您的安全要求。
要为所有受管命名空间配置通用集群角色,您可以在 Operator 的 Subscription
对象 YAML 文件中为 CONTROLLER_CLUSTER_ROLE
和 SERVER_CLUSTER_ROLE
环境变量指定用户定义的集群角色。因此,Operator 会使用现有的用户定义的集群角色,并为所有受管命名空间创建角色绑定,而不是创建默认的 admin
角色。
先决条件
- 以管理员身份登录到 OpenShift Container Platform 集群。
- 您已在 OpenShift Container Platform 集群上安装了 Red Hat OpenShift GitOps Operator。
流程
-
在 Administrator 视角中,进入到 Administration
CustomResourceDefinitions。 - 找到 Subscription CRD 并点它打开它。
- 选择 Instances 选项卡,然后点 openshift-gitops-operator 订阅。
选择 YAML 选项卡并进行自定义:
为
CONTROLLER_CLUSTER_ROLE
和SERVER_CLUSTER_ROLE
环境变量指定用户定义的集群角色:订阅示例
apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: openshift-gitops-operator namespace: openshift-gitops-operator spec: config: env: - name: CONTROLLER_CLUSTER_ROLE value: gitops-controller-role 1 - name: SERVER_CLUSTER_ROLE value: gitops-server-role 2
另外,您可以直接将前面的环境变量注入 Operator 的 Deployment
对象 YAML 文件中。