管理集群配置
管理 OpenShift Container Platform 集群配置
摘要
第 1 章 管理 OpenShift Container Platform 集群配置 复制链接链接已复制到粘贴板!
使用 Red Hat OpenShift GitOps,您可以管理 OpenShift Container Platform 集群配置,使其具有以下优点:
- 版本控制和可审核性 :提交至 Git 的配置更改提供了完整的修改历史记录。这有助于审计、合规性和责任。
- 单一来源:Git 充当 OpenShift Container Platform 集群所需状态的确定性源。
- 优化的性能和灾难恢复: GitOps 将 Argo CD 应用程序指向之前的提交或标签,在 Git 中带有已知良好状态,从而减少停机时间并帮助进行灾难恢复。
- 协作和审核:Git 的协作功能使团队成员能够在将基础架构和应用程序配置更改应用到 OpenShift Container Platform 集群前对其进行审核和批准。
- 效率和可扩展性: GitOps 简化了部署和操作工作流,实现高效管理复杂和多集群环境,同时减少了人工干预和人为错误。
执行以下任务来管理 OpenShift Container Platform 集群配置:
- 使用 CLI 安装 Red Hat OpenShift GitOps Operator
- 分析默认 Argo CD 实例
- 访问默认 Argo CD 实例
- 配置默认的 Argo CD 实例
1.1. 使用 CLI 安装 Red Hat OpenShift GitOps Operator 复制链接链接已复制到粘贴板!
您可以使用 CLI 从 OperatorHub 安装 Red Hat OpenShift GitOps Operator。
对于 GitOps 版本 1.10 及更新的版本,默认命名空间从 openshift-operators 改为 openshift-gitops operator。
前提条件
-
有登录凭证,才能使用
cluster-admin权限访问 OpenShift Container Platform 集群。 -
已安装
ocCLI。
流程
创建
openshift-gitops-operator命名空间:oc create ns openshift-gitops-operator
$ oc create ns openshift-gitops-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
namespace/openshift-gitops-operator created
namespace/openshift-gitops-operator createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您可以通过应用
openshift.io/cluster-monitoring=true标签,在openshift-gitops-operator或任何命名空间上启用集群监控:oc label namespace <namespace> openshift.io/cluster-monitoring=true
$ oc label namespace <namespace> openshift.io/cluster-monitoring=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
namespace/<namespace> labeled
namespace/<namespace> labeledCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个
OperatorGroup对象 YAML 文件,如gitops-operator-group.yaml:OperatorGroup 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
OperatorGroup应用到集群:oc apply -f gitops-operator-group.yaml
$ oc apply -f gitops-operator-group.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
operatorgroup.operators.coreos.com/openshift-gitops-operator created
operatorgroup.operators.coreos.com/openshift-gitops-operator createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个
Subscription对象 YAML 文件,以便为 Red Hat OpenShift GitOps Operator 订阅一个命名空间,如openshift-gitops-sub.yaml:订阅示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
订阅应用到集群:oc apply -f openshift-gitops-sub.yaml
$ oc apply -f openshift-gitops-sub.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
subscription.operators.coreos.com/openshift-gitops-operator created
subscription.operators.coreos.com/openshift-gitops-operator createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 安装完成后,验证
openshift-gitops命名空间中的所有 pod 是否正在运行:oc get pods -n openshift-gitops
$ oc get pods -n openshift-gitopsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证
openshift-gitops-operator命名空间中的 pod 是否正在运行:oc get pods -n openshift-gitops-operator
$ oc get pods -n openshift-gitops-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE openshift-gitops-operator-controller-manager-6fdc5cd9dc-jr9mn 2/2 Running 0 41s
NAME READY STATUS RESTARTS AGE openshift-gitops-operator-controller-manager-6fdc5cd9dc-jr9mn 2/2 Running 0 41sCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2. 分析默认的 Argo CD 实例详情 复制链接链接已复制到粘贴板!
默认情况下,Operator 在 openshift-gitops 命名空间中创建 Argo CD 实例。安装后,您可以使用 OpenShift Container Platform Web 控制台查看 Operator 详情页面 并分析默认的实例配置。此分析可帮助您稍后自定义此实例的行为。该实例适用于集群配置用例,并具有升级的权限。
您可以在其他命名空间中创建额外的 Argo CD 实例,以支持应用程序用例。
前提条件
-
您有登录凭证来访问带有
cluster-admin权限的 OpenShift Container Platform 集群。
流程
执行以下步骤之一打开 Operator 详情页面 :
- 点 Operator 安装完成后可用的 View Operator 按钮。
- 点 Operators 菜单下的 Installed Operators,然后选择 Red Hat OpenShift GitOps Operator。
- 选择 Argo CD 选项卡。
-
单击默认实例
openshift-gitops的名称,以查看其新页面的详细信息。 - 选择 YAML 选项卡来分析其配置方式。
1.3. 访问默认的 Argo CD 实例 复制链接链接已复制到粘贴板!
分析默认 Argo CD 实例详情后,您可以通过 Argo CD UI 访问它,以检查它是否可用。
前提条件
-
您有登录凭证来访问带有
cluster-admin权限的 OpenShift Container Platform 集群。
流程
- 点 OpenShift Container Platform Web 控制台右上角的 Application Launcher 菜单。
- 从下拉列表中选择 Cluster Argo CD。Argo CD 登录页面将打开。
- 单击 LOG IN VIA OPENSHIFT 按钮。OpenShift Container Platform 登录页面将打开。
- 输入 OpenShift Container Platform 凭证。此时会打开 Authorize Access 页面。
- 点 Allow selected permissions 提供请求的权限。Argo CD UI 页面将打开。
此时,UI 为空,因为您尚未创建任何 Argo CD 应用程序。您可以检查 User Info 页面,以查看用户详情。
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