设置高级群集管理插件
高级集群管理(ACM)插件为客户提供了一种简化的方式,可跨多个集群管理监控、工作负载放置和安全策略。
IBM Cloud 集群不支持从 OperatorHub 安装 ACM。 要安装 ACM,请按照本页上的说明进行操作。
安装 ACM 的群集是集线器群集。 在安装过程中或安装后,您可以指定多个受管群集,以便使用 ACM 进行管理。
准备工作
在安装 ACM 附加组件之前,请查看以下前提步骤和信息。
- 确保您的群集满足以下要求。
- 您的集线器群集必须是 VPC 群集,至少有 3 个运行 RHCOS 的工作节点,至少有 6 个 VCPU 和 64GB 内存。 为实现高可用性,请确保群集在 3 个区域中每个区域至少有一个工作节点。
- 每个托管群集必须至少有 3 个运行 RHCOS 的工作节点,至少有 6 个 VCPU 和 64GB 内存。
- 查看 ACM 附加组件 自动安装的操作符,以及可以作为增强功能安装的 可选操作符。
- 您必须拥有 IBM Cloud Kubernetes Service 中群集的 管理员平台访问角色和管理器服务访问角色。
- 您必须拥有一个至少有 3 个工作节点的 VPC 集群。 每个工作节点必须至少有 4 个 CPU 和 16GB 内存。 为实现高可用性,请确保群集在 3 个区域中每个区域至少有一个工作节点。
- 在群集上创建用于 ACM 的受信任配置文件。
- 可选:如果您希望在 ACM 附加组件的安装过程中导入托管集群,或者计划在安装完成后通过 CLI 导入托管集群,或者计划稍后更新托管集群的连接凭据,则必须在中心集群上为每个托管集群创建一个密钥。 请参阅 《为 ACM 准备密钥》。 如果您仅计划在安装完成后通过 OpenShift Web 控制台导入托管集群,则无需执行此步骤。
- 安装或更新 CLI。
为 ACM 创建受信任的配置文件
请按照以下步骤创建一个用于 ACM 的受信任配置文件,并将其分配给中心集群。
一旦将受信任的配置文件添加到集群中,就无法将其移除,且无法恢复使用 API 密钥来管理您的资源。 请务必仔细按照以下步骤操作,以确保您的受信任配置文件设置正确。
使用用户界面创建受信任的配置文件
-
按照步骤 创建受信任的个人资料。 在配置文件的条件中,请务必指定以下访问权限。
- 计算资源:Red Hat OpenShift
- 所有服务资源
- 当命名空间等于
kube-system - Kubernetes Service 角色 - 经理、编辑
-
创建受信任配置文件后,从控制台的受信任配置文件页面复制 ID。
使用 CLI 创建受信任的配置文件
- 创建受信任的配置文件。
ibmcloud iam trusted-profile-create acm-operator-profile - 创建计算资源信任规则,其作用域限定在 Red Hat OpenShift 计算资源上的
kube-system命名空间内。ibmcloud iam trusted-profile-rule-create acm-operator-profile \ --name kube-system-rule \ --type Profile-CR \ --conditions claim:namespace,operator:EQUALS,value:kube-system \ --cr-type ROKS_SA - 将 IAM 访问策略分配给该配置文件。 请将
CLUSTER_ID替换为您的 Hub 集群 ID。ibmcloud iam trusted-profile-policy-create acm-operator-profile \ --roles Reader,Viewer,Operator,Editor \ --service-name containers-kubernetes \ --service-instance CLUSTER_ID
为集群设置受信任配置文件
- 获取受信任的配置文件 ID。
ibmcloud iam trusted-profiles - 将受信任的配置文件分配给该集群。
ibmcloud oc experimental trusted-profile set --cluster CLUSTER_NAME_OR_ID --trusted-profile TRUSTED_PROFILE_ID
如果此命令执行失败或未被识别,可能是您的 Kubernetes Service 插件已过时。 运行 ibmcloud plugin update ks 将其更新至最新版本,然后重试。
- 请确认已在此集群中创建了受信任配置文件的密钥。 该命令的执行可能需要长达10分钟。 请等待密钥出现,然后再继续安装 ACM 插件。 如果在密钥创建之前继续操作,ACM 插件的安装将会失败。
oc get secrets -n kube-system | grep ibm-cloud-credentials
为 ACM 准备秘密
为 ACM 创建密钥是可选的。 仅当您希望在 ACM 附加组件的安装过程中导入托管集群、计划 在安装完成后通过 CLI 导入托管集群,或者计划稍后 更新托管集群的连接凭据 时,才需要填写本节内容。
如果您计划在安装完成后通过 OpenShift Web 控制台导入托管集群,且后续无需更新连接凭据,则无需创建密钥。
对于每个需要管理的集群,请在中心集群上完成以下步骤。
-
在要使用 ACM 管理的群集上,运行命令查找服务器 URL。 在输出中找到并记录主 URL 值。 这是秘密中要引用的服务器 URL。 您还可以在以下步骤中使用 URL。
ibmcloud oc cluster get -c CLUSTER_NAME_OR_ID示例输出。
NAME: mycluster ID: 1234567 State: normal Created: 2025-01-22T19:22:16+0000 Location: dal10 Master URL: https://c100-e.<region>.containers.cloud.ibm.com:<port> ... -
获取 Red Hat OpenShift OAuth 服务器的基址 URL。 将
MASTER_URL替换为上一步中找到的 URL。 该命令会提取不带/oauth/token后缀的 URL。curl -sS MASTER_URL/.well-known/oauth-authorization-server | jq -r .token_endpoint | sed 's#/oauth/token##'示例输出。
https://c111-e.us-east.containers.cloud.ibm.com:31282 -
使用上一步获取的端点来获取访问令牌。 执行以下 cURL 命令,将
URL替换为上一步的输出结果,将API_KEY替换为您的 IBM Cloud API密钥。 在输出结果中,找到 Location 响应中包含的ACCESS_TOKEN。 这是要包含在密文中的访问令牌。示例 curl 请求:
curl -u 'apikey:API_KEY' -H "X-CSRF-Token: a" 'URL/oauth/authorize?client_id=openshift-challenging-client&response_type=token' -vvv示例输出。 ACCESS_TOKEN 包含在 Location 响应字符串中。
< HTTP/1.1 302 Found < Cache-Control: no-cache, no-store, max-age=0, must-revalidate < Cache-Control: no-cache, no-store, max-age=0, must-revalidate < Expires: 0 < Expires: Fri, 01 Jan 2030 00:00:00 GMT < Location: TOKEN_ENDPOINT/oauth/token/implicit#access_token=ACCESS_TOKEN&expires_in=86400&scope=user%3Afull&token_type=Bearer ... -
在集线器群集上,创建一个包含群集访问令牌和服务器 URL 的密文。 有关创建秘密的信息,请参阅 Kubernetes 文档中的 使用秘密。
秘密示例
apiVersion: v1 kind: Secret metadata: name: SECRET_NAME namespace: SECRET_NAMESPACE # The namespace that the secret is to be created in type: Opaque stringData: token: ACCESS_TOKEN server: SERVER_URL
通过用户界面安装 ACM
使用用户界面将 ACM 附加组件和 ACM 操作员安装到集线器群集。
-
如果要在安装过程中导入一个或多个托管群集来使用 ACM 管理,请按照 为 ACM 准备密 码中 的步骤在集线器群集上创建所需的密码。 保存秘密名称和命名空间。 您也可以暂时跳过这一步,在安装过程结束后再完成,但需要额外的 CLI 步骤。
-
登录 IBM Cloud 控制台并导航至 群集页面。 单击要安装 ACM 的群集。
-
在群集详细信息页面,找到附加组件部分。
-
在 Available to install(可用安装 )下,找到 Red Hat Advanced Cluster Management(高级群集管理 )选项,然后单击 Install(安装 )。
-
在安装页面,选择要安装的 ACM 附加组件版本。
-
选择导入托管群集的方式。 要在安装插件后导入群集,请选择从 CLI 导入。 如果您在集线器群集上创建了所需的机密,并希望现在导入托管群集,请选择“立即导入”。
您只能在安装过程中使用 IBM Cloud 用户界面导入托管集群。 在集线器集群上安装 ACM 附加组件后,您可以 使用 CLI 或 OpenShift Web 控制台导入受管集群。
- 如果选择了“立即导入”选项,请单击弹出菜单中的“导入群集”。
- 要导入账户中存在的群集,请选择群集并输入密名和命名空间。 然后,单击下一步。
- 要导入跨账户或外部群集,请指定群集 ID、密文名称和密文命名空间。 然后,点击 “导入集群”。
-
单击创建。
-
确认群集上已安装插件。
- 导航至 OpenShift Web Console Multicluster Hub。
- 从下拉菜单中选择“车队管理”。
- 查找群集列表,检查群集是否以 Hub 控制平面类型列出。
-
可选:查看您可以安装的 附加操作符,以增强 ACM 功能。
通过命令行界面(CLI)安装 ACM
使用 CLI 在集线器群集上安装 ACM 附加组件。
-
查找 ACM 附加组件的默认版本。
ibmcloud oc cluster addon versions -
查看 ACM 附加选项。 在命令中,指定上一步中找到的默认版本。 请注意安装附加组件时要包含的任何选项。
ibmcloud oc cluster addon options --addon acm --version DEFAULT_VERSION -
如果要导入群集由附加组件管理,请按照“为 ACM 准备机密”中的步骤(如果尚未完成)进行操作。 请务必保存集群 ID 以及在集线器集群上创建的秘密的名称和命名空间。 您也可以在集线器群集上安装附加组件后完成此过程,但 安装后导入托管群集 需要额外的步骤。
-
运行该命令以启用该插件。 如果要在安装过程中导入群集,请务必指定
billingPlan和isLicenseAccepted参数,以及可选的--managedClusters参数。ibmcloud oc cluster addon enable acm --cluster HUB_CLUSTER_ID --param 'managedClusters=["clusterid:CLUSTER_ID;secretname:SECRET_NAME;secretnamespace:SECRET_NAMESPACE;action:IMPORT"]' --param 'billingPlan=PLAN' --param 'isLicenseAccepted=BOOLEAN'命令参数。 有关每种参数类型的示例,请参阅下面的示例命令。
--cluster- 必需。 要安装 ACM 附加组件的集线器群的 ID。
--param 'managedClusters=["]-
- 可选。 在插件安装过程中,包含该参数一次或多次可导入托管群集。 您也可以稍后再完成此步骤。 如需了解更多信息,请参阅 《为 ACM 准备密钥》。
- 指定以下值:
-
- clusterid :要导入的托管群集的 ID。
-
- secretname :在集线器群集上创建的密文名称。 该秘密包含托管群集的凭证。
-
- 秘密名称空间 :您在中心集群上创建的秘密的命名空间。 该秘密包含托管群集的凭证。
-
- action:IMPORT :指定托管群集 IMPORT 操作的参数。
--param 'billingPlan='- 必需。 您要为 ACM 选择的计费计划。 为 ACM for Kubernetes 计划指定
KUBERNETES。 --param 'isLicenseAccepted='- 必需。 指定
TRUE以接受所选计费计划的许可协议。 接受本许可即表示您同意适用的条款和条件,并确认您了解所选计划中包含的服务。
-
确认附加组件已安装。 插件可能需要几分钟才能显示以下输出。
- 在集线器群集上,检查是否已创建
acmhub资源。
oc get acmhub ``` 示例输出。 ```sh {: screen} NAME AGE acm-auto 1h ``` 2. 在集线器群集上,检查 `acmhub` 的状态。 ```sh {: pre} oc describe acmhubstatus ``` 示例输出。 ```sh {: screen} status phase: Ready ``` - 在集线器群集上,检查是否已创建
-
可选:查看您可以安装的 附加操作符,以增强 ACM 功能。
ACM 操作员
查看 ACM 附加组件自动安装的操作符,以及可以作为增强功能安装的可选操作符。
自动安装的操作员
安装 ACM 附加组件时,集线器群集或托管群集上会自动安装以下操作符。
| 运算符 | 描述 |
|---|---|
| 高级群集管理 (ACM) 操作员 | 安装在轮毂组上。 |
| MultiCluster 发动机操作员 | 由 ACM 操作员安装在受管群集上。 |
可选操作员
以下操作符为可选操作符,可安装在集线器群集或托管群集上,以增强 ACM 功能。 请注意,IBM 不负责管理这些操作员。
您有责任管理这些操作员,包括但不限于更新、监控、恢复和重新安装。
| 运算符 | 描述 | 其他信息 |
|---|---|---|
| GitOps 操作员 |
|
GitOps 概况 |
| Red Hat OpenShift 虚拟化运维工程师 |
|
安装 OpenShift 虚拟化操作器 |
| 潜航者 |
|
潜航者 |
安装 ACM 后导入托管群集
安装 ACM 后,您可以通过 OpenShift Web 控制台或 CLI 导入托管集群。 基于控制台的方法不需要密钥。 CLI 方法需要一个 密钥。
所有由 ACM 管理的集群都必须属于某个集群集。 您可以创建新的群集集,也可以向 Default 群集集添加群集。 如果未指定群集集,托管群集将添加到 Default 选项中。
使用生成的命令导入托管群集
使用 OpenShift 网页控制台生成一个导入命令,然后在您要导入的集群上运行该命令。
-
打开 ACM 中心集群的 OpenShift Web 控制台。
-
在 “车队管理”视图下,点击“导入集群”。
-
输入集群名称,如有需要请选择集群集,如有需要请输入其他标签。
-
在 “导入”模式下,请选择“手动运行导入命令”,然后单击“下一步”。
-
可选:选择一个自动化模板,然后单击 “下一步”。
-
查看详细信息,然后点击“生成命令”。 复制显示的命令。
-
登录到您要导入的集群,并使用针对该集群配置的
kubectl运行复制的命令。
使用服务器 URL 和 API 令牌导入托管集群
获取要导入的集群的 API 令牌和服务器 URL,然后使用 OpenShift Web 控制台导入该集群。
-
获取要导入的集群的 API 令牌和服务器 URL。
-
在 IBM Cloud 控制台中,导航至您的 集群列表,然后点击您要导入的集群。
-
在集群详细信息页面中,单击 OpenShift Web 控制台。
-
点击用户名菜单(显示格式为
IAM#username),然后点击 “复制登录命令”。 -
点击 “显示令牌”。 找到以
oc login开头的命令,并保存 API 令牌 (sha256~XXXX) 和服务器 URL。
-
-
打开 ACM 中心集群的 OpenShift Web 控制台。
-
在 “车队管理”视图下,点击“导入集群”。
-
输入集群名称,如有需要请选择集群集,如有需要请输入其他标签。
-
在 “导入”模式下,请选择“输入现有集群的服务器 URL 和 API 令牌”。 输入服务器地址 URL 以及您获取的 API 令牌,然后点击 “下一步”。
-
可选:选择一个自动化模板,然后单击 “下一步”。
-
查看详细信息,然后单击 “导入”。
使用 kubeconfig 导入托管群集
收集要导入的集群的 kubeconfig 文件,然后使用 OpenShift 网页控制台导入该集群。
-
获取要导入的集群的 kubeconfig 文件。 在 IBM Cloud 命令行界面中,运行以下命令并保存输出结果。
ibmcloud ks cluster config --cluster CLUSTER_NAME --admin --output yaml -
打开 ACM 中心集群的 OpenShift Web 控制台。
-
在 “车队管理”视图下,点击“导入集群”。
-
输入集群名称,如有需要请选择集群集,如有需要请输入其他标签。
-
在 “导入”模式下,选择“Kubeconfig”,将您获取的 kubeconfig 内容粘贴进去,然后点击“下一步”。
-
可选:选择一个自动化模板,然后单击 “下一步”。
-
查看详细信息,然后单击 “导入”。
从 Red Hat OpenShift 集群管理器导入
“从 Red Hat OpenShift 集群管理器导入”导入模式仅支持部署在 AWS ( ROSA )上的 Red Hat OpenShift 服务集群,不适用于 IBM Cloud 集群。
使用 CLI 导入托管群集
CLI 导入方法要求您已在中心集群上为受管集群 创建了一个密钥。
要使用 CLI 导入受管群集,请编辑 ACM 资源以包含要管理的群集。
-
运行该命令编辑 ACM 资源。
oc edit acmhub RESOURCE_NAME -
在资源的
managedClusters部分,添加群集 ID、为 ACM 创建的群集密文名称、密文命名空间,并指定Import操作。 下面的示例导入了CLUSTER_ID_1.managedclusters: - clusterid: "CLUSTER_ID_1" secretname: "SECRET_NAME" secretnamespace: "SECRET_NAMESPACE" # The namespace that the secret was created in action: "Import" -
保存并应用更改。
更新或删除托管群集
若要将托管集群从 ACM 实例中移除,或更新托管集群的 ACM 连接凭据(例如,在令牌轮换或服务器 URL 发生变更后),您必须在中心集群上的 ACM 自定义资源中编辑 managedClusters 部分。 Update 操作会刷新 ACM 用于与托管集群通信的基于密钥的凭证。 这与升级集群的 OpenShift 版本不同。
要更新托管集群的连接凭据,需要该集群的 密钥。
-
运行该命令编辑 ACM 资源。
oc edit acmhub RESOURCE_NAME -
在资源的
managedClusters部分,添加群集 ID、为 ACM 创建的群集密文名称、密文命名空间以及要为群集执行的操作。 格式参见下面的示例。 对于该操作,请指定Delete或Update。 请注意,删除群集不需要密文或密文命名空间。以下示例将删除
CLUSTER_ID_1并更新CLUSTER_ID_2。managedclusters: - clusterid: "CLUSTER_ID_1" action: "Delete" - clusterid: "CLUSTER_ID_2" secretname: "SECRET_NAME" secretnamespace: "SECRET_NAMESPACE" # The namespace that the secret was created in action: "Update" -
保存并应用更改。
升级 ACM 版本
运行该命令将插件升级到新版本。
ibmcloud oc cluster addon update acm --cluster CLUSTER_ID --version ADD-ON_VERSION
要检查附加组件是否更新,请列出群集附加组件。 在输出中,查找 ACM 附加组件的详细信息。
ibmcloud oc cluster addon ls --cluster CLUSTER_ID
删除 ACM 附加组件
请按照以下步骤删除 ACM 附加组件。
-
从集线器群集中删除 ACM 资源。
oc delete acmhub RESOURCE_NAME -
删除资源后,移除 ACM 附加组件。 指定相同的集群 ID。
ibmcloud oc cluster addon disable acm -f --cluster CLUSTER_ID