1.4. 配置默认的 Argo CD 实例
虽然 Operator 在 openshift-gitops 命名空间中创建默认 Argo CD 实例,但您必须配置它,使其可用于部署应用程序并设置集群配置:
- 配置基于角色的访问控制(RBAC): Argo CD 使用自己的 RBAC 配置。Operator 配置的默认权限可能不足,具体取决于用户已分配给的 OpenShift Container Platform 集群组。
- 配置权限 :Operator 使用一组默认的 Kubernetes 权限配置默认实例。但是,这些权限在实时环境中部署应用程序时不足。因此,请确保为此默认实例提供额外的权限。
1.4.1. 配置 RBAC 复制链接链接已复制到粘贴板!
您必须配置 RBAC,以提供对用户使用默认实例的足够访问权限。
实例的 defaultPolicy 是一个空字符串,这意味着没有自动分配角色。虽然用户可以登录实例,但它们没有查看任何权限,或者执行 Argo CD UI 或 CLI 中的任何任务。
实例包括以下两个组:
-
system:cluster-admins:组仅适用于临时kube-admin凭证,并可以忽略。 -
cluster-admins:您可以在此组中添加用户,使他们能够执行任务,如在 Argo CD web 控制台中部署应用程序。
限制默认权限:
确保始终对 defaultPolicy 参数使用空字符串或 deny-all 类型的 role,因为其中授予的权限无法撤销。因此,不建议以授予权限的方式设置 defaultPolicy 参数。
前提条件
-
有登录凭证,才能使用
cluster-admin权限访问 OpenShift Container Platform 集群。 -
已安装
ocCLI。
流程
查看默认实例的 Operator 配置 RBAC:
oc get argocd openshift-gitops -n openshift-gitops -o=jsonpath='{.spec.rbac}'$ oc get argocd openshift-gitops -n openshift-gitops -o=jsonpath='{.spec.rbac}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 结果
{"defaultPolicy":"","policy":"g, system:cluster-admins, role:admin\ng, cluster-admins, role:admin\n","scopes":"[groups]"}{"defaultPolicy":"","policy":"g, system:cluster-admins, role:admin\ng, cluster-admins, role:admin\n","scopes":"[groups]"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查
cluster-admins组是否存在:oc get groups
$ oc get groupsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 执行以下步骤之一:
如果组不存在,请创建它并将其添加到其中:
oc adm groups new cluster-admins <user>
$ oc adm groups new cluster-admins <user>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
- <user>
表示您要添加到组中的用户。
输出示例
group.user.openshift.io/cluster-admins created
group.user.openshift.io/cluster-admins createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
如果组存在,请检查您的用户是否在之前运行
oc get groups命令的输出中的一部分。如果您的用户不在组中,请将您的用户添加到组中:oc adm groups add-users cluster-admins <user>
$ oc adm groups add-users cluster-admins <user>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
- <user>
表示您要添加到组中的用户。
输出示例
group.user.openshift.io/cluster-admins added: "<user>"
group.user.openshift.io/cluster-admins added: "<user>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证组
cluster-admins是否存在,并且您的用户是否是它的一部分:oc get groups cluster-admins
$ oc get groups cluster-adminsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出显示
cluster-admins组,其中包含您的用户。
创建或编辑 cluster-admins 组后,请确保退出 Argo CD web 控制台,然后再次登录,以便组与您的用户关联。检查 User Info 页面,以验证您的用户是否是 Argo CD 中的 cluster-admins 组的一部分。
1.4.2. 配置权限 复制链接链接已复制到粘贴板!
虽然默认 Argo CD 实例会自动配置一组默认的 Kubernetes 权限,但您需要为其提供额外权限来部署集群配置所需的所有资源。相反,如果您需要为默认实例设置更严格的权限来仅部署特定资源,您可以通过额外的配置完成此操作。
有关默认 Kubernetes 权限集合的更多信息,请参阅"添加资源"。
当将默认实例用于集群配置时,为 Argo CD 应用程序控制器服务帐户提供 cluster-admin 权限。要做到这一点,您可以为 openshift-gitops-argocd-application-controller 服务帐户创建一个 ClusterRoleBinding 对象,因为默认实例使用此帐户与 Kubernetes API 交互来部署资源。
前提条件
-
您有登录凭证来访问带有
cluster-admin权限的 OpenShift Container Platform 集群。 -
已安装
ocCLI。
流程
运行以下命令:
oc adm policy add-cluster-role-to-user --rolebinding-name="openshift-gitops-cluster-admin" cluster-admin -z openshift-gitops-argocd-application-controller -n openshift-gitops
$ oc adm policy add-cluster-role-to-user --rolebinding-name="openshift-gitops-cluster-admin" cluster-admin -z openshift-gitops-argocd-application-controller -n openshift-gitopsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
clusterrole.rbac.authorization.k8s.io/cluster-admin added: "openshift-gitops-argocd-application-controller"
clusterrole.rbac.authorization.k8s.io/cluster-admin added: "openshift-gitops-argocd-application-controller"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
查看创建的
ClusterRoleBinding对象:oc get clusterrolebinding openshift-gitops-cluster-admin -o yaml
$ oc get clusterrolebinding openshift-gitops-cluster-admin -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow