1.2. 关于多集群引擎 operator 的集群生命周期

multicluster engine for Kubernetes operator 是集群生命周期 Operator,它为 Red Hat OpenShift Container Platform 和 Red Hat Advanced Cluster Management hub 集群提供集群管理功能。如果安装了 Red Hat Advanced Cluster Management,则不需要安装 multicluster engine operator,因为它会被自动安装。

有关支持信息以及以下文档,请参阅 Kubernetes operator 2.2 的多集群引擎支持列表

要继续,请参阅与多集群引擎 operator 的集群生命周期中剩余的集群生命周期文档

1.2.1. 要求和建议

在安装 multicluster engine operator 前,请查看以下系统配置要求和设置:

1.2.1.1. 支持的浏览器和平台

请参阅 multicluster engine for Kubernetes operator 2.2 支持的浏览器和功能的重要信息。

1.2.1.2. 网络配置

重要: 可信 CA 捆绑包在 multicluster engine operator 命名空间中可用,但该增强需要更改您的网络。可信 CA 捆绑包 ConfigMap 使用 trusted-ca-bundle 的默认名称。您可以通过在名为 TRUSTED_CA_BUNDLE 的环境变量中提供 Operator 来更改此名称。如需更多信息,请参阅 Red Hat OpenShift Container Platform 的网络部分中的配置集群范围代理

:在受管集群中的注册代理工作代理不支持代理设置,因为它们通过建立 mTLS 连接与 hub 集群上的 apiserver 通信,该连接无法通过代理进行。

将您的网络设置配置为允许以下的连接:

1.2.1.2.1. multicluster engine operator 网络要求

有关 multicluster engine operator 集群网络要求,请查看下表:

方向连接端口(如果指定)

出站

置备的受管集群的 Kubernetes API 服务器

6443

出站和入站

受管集群上的 WorkManager 服务路由

443

入站

来自受管集群的 Kubernetes 集群的多集群引擎的 Kubernetes API 服务器

6443

1.2.2. 控制台概述

OpenShift Container Platform 控制台插件包括在 OpenShift Container Platform 4.10 web 控制台中,并可集成。要使用这个功能,必须启用控制台插件。Multicluster engine operator 在 InfrastructureCredentials 导航项中显示某些控制台功能。如果安装了 Red Hat Advanced Cluster Management,您会看到更多的控制台功能。

注: 对于启用插件的 OpenShift Container Platform 4.10,您可以从 OpenShift Container Platform 控制台下拉菜单中选择 All Clusters 来访问 OpenShift Container Platform 控制台中的 Red Hat Advanced Cluster Management。

  1. 要禁用插件,请确保处于 OpenShift Container Platform 控制台的 Administrator 视角中。
  2. 在导航中找到 Administration,再点 Cluster Settings,然后点 Configuration 选项卡。
  3. Configuration resources 列表中,点带有 operator.openshift.io API 组的 Console 资源,其中包含 web 控制台的集群范围配置。
  4. Console 插件 选项卡。mce 插件被列出。注: 如果安装了 Red Hat Advanced Cluster Management,它也会被列为 acm
  5. 从表中修改插件状态。几分钟后,会提示您输入刷新控制台。

1.2.3. multicluster engine operator 基于角色的访问控制

RBAC 在控制台和 API 一级进行验证。控制台中的操作可根据用户访问角色权限启用或禁用。查看以下部分以了解有关产品中特定生命周期的 RBAC 的更多信息:

1.2.3.1. 角色概述

有些产品资源是基于集群范围的,有些则是命名空间范围。您必须将集群角色绑定和命名空间角色绑定应用到用户,以使访问控制具有一致性。查看支持的以下角色定义表列表:

1.2.3.1.1. 角色定义表
角色定义

cluster-admin

这是 OpenShift Container Platform 的默认角色。具有集群范围内的绑定到 cluster-admin 角色的用户,是一个 OpenShift Container Platform 超级用户,其具有所有访问权限。

open-cluster-management:cluster-manager-admin

具有集群范围内的绑定到 open-cluster-management:cluster-manager-admin 角色的用户,是一个超级用户,其具有所有访问权限。此角色允许用户创建 ManagedCluster 资源。

open-cluster-management:admin:<managed_cluster_name>

具有集群范围内的绑定到 open-cluster-management:admin:<managed_cluster_name> 角色的用户,具有对名为 <managed_cluster_name>ManagedCluster 资源的管理员访问权限。当用户具有受管集群时,会自动创建此角色。

open-cluster-management:view:<managed_cluster_name>

具有集群范围内的绑定到 open-cluster-management:view:<managed_cluster_name> 角色的用户,可以访问名为 <managed_cluster_name>ManagedCluster 资源。

open-cluster-management:managedclusterset:admin:<managed_clusterset_name>

具有集群范围内的绑定到 open-cluster-management:managedclusterset:admin:<managed_clusterset_name> 角色的用户,具有对名为 <managed_clusterset_name>ManagedCluster 资源的管理员访问权限。用户还有对 managedcluster.cluster.open-cluster-management.ioclusterclaim.hive.openshift.ioclusterdeployment.hive.openshift.ioclusterpool.hive.openshift.io 资源的管理员访问权限,这些资源具有受管集群集标签: cluster.open-cluster-management.ioclusterset=<managed_clusterset_name>。使用集群集时会自动生成角色绑定。请参阅 创建 ManagedClusterSet 以了解如何管理该资源。

open-cluster-management:managedclusterset:view:<managed_clusterset_name>

具有集群范围内的绑定到 open-cluster-management:managedclusterset:view:<managed_clusterset_name> 角色的用户,可以访问名为 <managed_clusterset_name>' 的 ManagedCluster 资源。用户还有对 managedcluster.cluster.open-cluster-management.ioclusterclaim.hive.openshift.ioclusterdeployment.hive.openshift.ioclusterpool.hive.openshift.io 资源的查看访问权限,这些资源具有受管集群集标签: cluster.open-cluster-management.io,clusterset=<managed_clusterset_name>。有关如何管理受管集群设置资源的更多详细信息,请参阅创建 ManagedClusterSet

admin, edit, view

admin、edit 和 view 是 OpenShift Container Platform 的默认角色。具有命名空间范围绑定的用户可以访问特定命名空间中的 open-cluster-management 资源,而集群范围的绑定到同一角色可以访问整个集群范围的 open-cluster-management 资源。

重要

  • 任何用户都可以从 OpenShift Container Platform 创建项目,这为命名空间授予管理员角色权限。
  • 如果用户无法访问集群的角色,则无法看到集群名称。集群名称显示有以下符号: -

RBAC 在控制台和 API 一级进行验证。控制台中的操作可根据用户访问角色权限启用或禁用。查看以下部分以了解有关产品中特定生命周期的 RBAC 的更多信息。

1.2.3.2. 集群生命周期 RBAC

查看以下集群生命周期 RBAC 操作:

  • 为所有受管集群创建和管理集群角色绑定。例如,输入以下命令创建到集群角色 open-cluster-management:cluster-manager-admin 的集群角色绑定:

    oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:cluster-manager-admin --user=<username>

    这个角色是一个超级用户,可访问所有资源和操作。您可以创建集群范围的 managedcluster 资源、用于管理受管集群的资源的命名空间,以及使用此角色的命名空间中的资源。您可能需要添加需要角色关联的 ID 用户名,以避免权限错误。

  • 运行以下命令,为名为 cluster-name 的受管集群管理集群角色绑定:

    oc create clusterrolebinding (role-binding-name) --clusterrole=open-cluster-management:admin:<cluster-name> --user=<username>

    此角色对集群范围的 managedcluster 资源具有读写访问权限。这是必要的,因为 managedcluster 是一个集群范围的资源,而不是命名空间范围的资源。

    • 输入以下命令,创建到集群角色 admin 的命名空间角色绑定:

      oc create rolebinding <role-binding-name> -n <cluster-name> --clusterrole=admin --user=<username>

      此角色对受管集群命名空间中的资源具有读写访问权限。

  • open-cluster-management:view:<cluster-name> 集群角色创建一个集群角色绑定,以查看名为 cluster-name 的受管集群,输入以下命令:

    oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:view:<cluster-name> --user=<username>

    此角色具有对集群范围的 managedcluster 资源的读取访问权限。这是必要的,因为 managedcluster 是一个集群范围的资源。

  • 输入以下命令,创建到集群角色 view 的命名空间角色绑定:

    oc create rolebinding <role-binding-name> -n <cluster-name> --clusterrole=view --user=<username>

    此角色对受管集群命名空间中的资源具有只读访问权限。

  • 输入以下命令来查看您可以访问的受管集群列表:

    oc get managedclusters.clusterview.open-cluster-management.io

    此命令供没有集群管理员特权的管理员和用户使用。

  • 输入以下命令来查看您可以访问的受管集群集列表:

    oc get managedclustersets.clusterview.open-cluster-management.io

    此命令供没有集群管理员特权的管理员和用户使用。

1.2.3.2.1. 集群池 RBAC

查看以下集群池 RBAC 操作:

  • 作为集群管理员,通过创建受管集群集并使用集群池置备集群,并通过向组添加角色来授予管理员权限。请参见以下示例:

    • 使用以下命令为 server-foundation-clusterset 受管集群集授予 admin 权限:

      oc adm policy add-cluster-role-to-group open-cluster-management:clusterset-admin:server-foundation-clusterset
      server-foundation-team-admin
    • 使用以下命令为 server-foundation-clusterset 受管集群授予 view 权限:

      oc adm policy add-cluster-role-to-group open-cluster-management:clusterset-view:server-foundation-clusterset server-foundation-team-user
  • 为集群池 server-foundation-clusterpool 创建命名空间。查看以下示例以授予角色权限:

    • 运行以下命令,为 server-foundation-team-admin 授予 server-foundation-clusterpooladmin 权限:

      oc adm new-project server-foundation-clusterpool
      
      oc adm policy add-role-to-group admin server-foundation-team-admin --namespace  server-foundation-clusterpool
  • 作为团队管理员,在集群池命名空间中创建一个名为 ocp46-aws-clusterpool 的集群池,带有集群设置标签 cluster.open-cluster-management.io/clusterset=server-foundation-clusterset

    • server-foundation-webhook 检查集群池是否有集群设置标签,以及用户是否有权在集群集中创建集群池。
    • server-foundation-controllerserver-foundation-team-user 授予对 server-foundation-clusterpool 命名空间的 view 权限。
  • 创建集群池时,集群池会创建一个 clusterdeployment。继续阅读以获取更多详细信息:

    • server-foundation-controllerserver-foundation-team-admin 授予对 clusterdeployment 命名空间的 admin 权限。
    • server-foundation-controllerserver-foundation-team-user 授予对 clusterdeployment 名空间的 view 权限。

      :作为 team-adminteam-user,您有 clusterpoolclusterdeploymentclusterclaimadmin 权限

1.2.3.2.2. 集群生命周期的控制台和 API RBAC 表

查看以下集群生命周期控制台和 API RBAC 表:

表 1.1. 集群生命周期的控制台 RBAC 表

资源AdminEditView

Clusters

read、update、delete

-

读取

集群集

get、update、bind、join

未提及 edit 角色

get

受管集群

read、update、delete

未提及 edit 角色

get

AWS 供应商连接。

create、read、update 和 delete

-

读取

表 1.2. 集群生命周期的 API RBAC 表

APIAdminEditView

managedclusters.cluster.open-cluster-management.io

对于这个 API 您可以使用 mcl(单数形式)或 mcls(复数形式)。

创建、读取、更新、删除

读取、更新

读取

managedclusters.view.open-cluster-management.io

对于这个 API 您可以使用 mcv(单数形式)或 mcvs(复数形式)。

读取

读取

读取

managedclusters.register.open-cluster-management.io/accept

update

update

 

managedclusterset.cluster.open-cluster-management.io

对于这个 API 您可以使用 mclset(单数形式)或 mclsets(复数形式)。

创建、读取、更新、删除

读取、更新

读取

managedclustersets.view.open-cluster-management.io

读取

读取

读取

managedclustersetbinding.cluster.open-cluster-management.io

对于这个 API 您可以使用 mclsetbinding(单数形式)或 mclsetbindings(复数形式)。

创建、读取、更新、删除

读取、更新

读取

klusterletaddonconfigs.agent.open-cluster-management.io

创建、读取、更新、删除

读取、更新

读取

managedclusteractions.action.open-cluster-management.io

创建、读取、更新、删除

读取、更新

读取

managedclusterviews.view.open-cluster-management.io

创建、读取、更新、删除

读取、更新

读取

managedclusterinfos.internal.open-cluster-management.io

创建、读取、更新、删除

读取、更新

读取

manifestworks.work.open-cluster-management.io

创建、读取、更新、删除

读取、更新

读取

submarinerconfigs.submarineraddon.open-cluster-management.io

创建、读取、更新、删除

读取、更新

读取

placements.cluster.open-cluster-management.io

创建、读取、更新、删除

读取、更新

读取

1.2.3.2.3. 基于角色的凭证访问控制

对凭证的访问由 Kubernetes 控制。凭据作为 Kubernetes secret 存储和保护。以下权限适用于在 Red Hat Advanced Cluster Management for Kubernetes 中访问 secret:

  • 有权在命名空间中创建 secret 的用户可以创建凭证。
  • 有权读取命名空间中的 secret 的用户也可以查看凭证。
  • 具有 Kubernetes 集群角色 adminedit 的用户可以创建和编辑 secret。
  • 具有 Kubernetes 集群角色 view 的用户无法查看 secret,因为读取 secret 的内容可以访问服务帐户凭证。