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.3 的多集群引擎支持列表 :
要继续,请参阅与多集群引擎 operator 的集群生命周期中剩余的集群生命周期文档。
1.2.1. 要求和建议
在安装 multicluster engine operator 前,请查看以下系统配置要求和设置:
重要: 您必须在没有安装早于 2.5 的 Red Hat Advanced Cluster Management for Kubernetes 的集群上安装多集群引擎 Operator。如果您使用 Red Hat Advanced Cluster Management 版本 2.5 或更高版本,则集群中已安装 Kubernetes 的多集群引擎。
请参阅 multicluster engine for Kubernetes operator 2.3 支持的浏览器和功能的重要信息。
1.2.2. 控制台概述
OpenShift Container Platform 控制台插件包括在 OpenShift Container Platform 4.10 web 控制台中,并可集成。要使用这个功能,必须启用控制台插件。Multicluster engine operator 在 Infrastructure 和 Credentials 导航项中显示某些控制台功能。如果安装了 Red Hat Advanced Cluster Management,您会看到更多的控制台功能。
注: 对于启用插件的 OpenShift Container Platform 4.10,您可以从 OpenShift Container Platform 控制台下拉菜单中选择 All Clusters 来访问 OpenShift Container Platform 控制台中的 Red Hat Advanced Cluster Management。
- 要禁用插件,请确保处于 OpenShift Container Platform 控制台的 Administrator 视角中。
- 在导航中找到 Administration,再点 Cluster Settings,然后点 Configuration 选项卡。
-
从 Configuration resources 列表中,点带有
operator.openshift.io
API 组的 Console 资源,其中包含 web 控制台的集群范围配置。 -
点 Console 插件 选项卡。
mce
插件被列出。注: 如果安装了 Red Hat Advanced Cluster Management,它也会被列为acm
。 - 从表中修改插件状态。几分钟后,会提示您输入刷新控制台。
1.2.3. multicluster engine operator 基于角色的访问控制
RBAC 在控制台和 API 一级进行验证。控制台中的操作可根据用户访问角色权限启用或禁用。查看以下部分以了解有关产品中特定生命周期的 RBAC 的更多信息:
1.2.3.1. 角色概述
有些产品资源是基于集群范围的,有些则是命名空间范围。您必须将集群角色绑定和命名空间角色绑定应用到用户,以使访问控制具有一致性。查看支持的以下角色定义表列表:
1.2.3.1.1. 角色定义表
角色 | 定义 |
---|---|
|
这是 OpenShift Container Platform 的默认角色。具有集群范围内的绑定到 |
|
具有集群范围内的绑定到 |
|
具有集群范围内的绑定到 |
|
具有集群范围内的绑定到 |
|
具有集群范围内的绑定到 |
|
具有集群范围内的绑定到 |
|
admin、edit 和 view 是 OpenShift Container Platform 的默认角色。具有命名空间范围绑定的用户可以访问特定命名空间中的 |
重要:
- 任何用户都可以从 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-clusterpool
的admin
权限: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-controller
为server-foundation-team-user
授予对server-foundation-clusterpool
命名空间的view
权限。
-
创建集群池时,集群池会创建一个
clusterdeployment
。继续阅读以获取更多详细信息:-
server-foundation-controller
为server-foundation-team-admin
授予对clusterdeployment
命名空间的admin
权限。 server-foundation-controller
为server-foundation-team-user
授予对clusterdeployment
名空间的view
权限。注 :作为
team-admin
和team-user
,您有clusterpool
、clusterdeployment
和clusterclaim
的admin
权限
-
1.2.3.2.2. 集群生命周期的控制台和 API RBAC 表
查看以下集群生命周期控制台和 API RBAC 表:
资源 | Admin | Edit | View |
---|---|---|---|
Clusters | read、update、delete | - | 读取 |
集群集 | get、update、bind、join | 未提及 edit 角色 | get |
受管集群 | read、update、delete | 未提及 edit 角色 | get |
AWS 供应商连接。 | create、read、update 和 delete | - | 读取 |
API | Admin | Edit | View |
---|---|---|---|
对于这个 API 您可以使用 | 创建、读取、更新、删除 | 读取、更新 | 读取 |
对于这个 API 您可以使用 | 读取 | 读取 | 读取 |
| update | update | |
对于这个 API 您可以使用 | 创建、读取、更新、删除 | 读取、更新 | 读取 |
| 读取 | 读取 | 读取 |
对于这个 API 您可以使用 | 创建、读取、更新、删除 | 读取、更新 | 读取 |
| 创建、读取、更新、删除 | 读取、更新 | 读取 |
| 创建、读取、更新、删除 | 读取、更新 | 读取 |
| 创建、读取、更新、删除 | 读取、更新 | 读取 |
| 创建、读取、更新、删除 | 读取、更新 | 读取 |
| 创建、读取、更新、删除 | 读取、更新 | 读取 |
| 创建、读取、更新、删除 | 读取、更新 | 读取 |
| 创建、读取、更新、删除 | 读取、更新 | 读取 |
1.2.3.2.3. 基于角色的凭证访问控制
对凭证的访问由 Kubernetes 控制。凭据作为 Kubernetes secret 存储和保护。以下权限适用于在 Red Hat Advanced Cluster Management for Kubernetes 中访问 secret:
- 有权在命名空间中创建 secret 的用户可以创建凭证。
- 有权读取命名空间中的 secret 的用户也可以查看凭证。
-
具有 Kubernetes 集群角色
admin
和edit
的用户可以创建和编辑 secret。 -
具有 Kubernetes 集群角色
view
的用户无法查看 secret,因为读取 secret 的内容可以访问服务帐户凭证。
1.2.4. 网络配置
将您的网络设置配置为允许连接。
重要: 可信 CA 捆绑包在 multicluster engine operator 命名空间中可用,但该增强需要更改您的网络。可信 CA 捆绑包 ConfigMap 使用 trusted-ca-bundle
的默认名称。您可以通过在名为 TRUSTED_CA_BUNDLE
的环境变量中提供 Operator 来更改此名称。如需更多信息,请参阅 Red Hat OpenShift Container Platform 的网络部分中的配置集群范围代理。
注:在受管集群中的注册代理
和工作代理
不支持代理设置,因为它们通过建立 mTLS 连接与 hub 集群上的 apiserver
通信,该连接无法通过代理进行。
有关 multicluster engine operator 集群网络要求,请查看下表:
方向 | 协议 | 连接 | 端口(如果指定) |
---|---|---|---|
出站 | 置备的受管集群的 Kubernetes API 服务器 | 6443 | |
从 OpenShift Container Platform 受管集群到 hub 集群的外向流量 | TCP | hub 集群上的 ironic 代理和裸机 Operator 之间的通信 | 6180、6183、6385 和 5050 |
从 hub 集群到受管集群的 Ironic Python 代理(IPA)的外向流量 | TCP | 运行 IPA 的裸机节点与 Ironic 编排器服务之间的通信 | 9999 |
出站和入站 |
受管集群上的 | 443 | |
入站 | 来自受管集群的 Kubernetes operator 集群的多集群引擎的 Kubernetes API 服务器 | 6443 |
注: 受管集群必须能够访问 hub 集群 control plane 节点 IP 地址。