设置高级群集管理插件
高级集群管理(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 管理的每个群集,必须在集线器群集上创建一个秘密,其中包含受管群集的访问令牌和服务器 URL。 此步骤可在安装之前或之后完成。 请参阅“为 ACM 准备秘密”。
- 安装或更新 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
为 ACM 准备秘密
对于要使用 ACM 管理的每个群集,必须在集线器群集上创建一个秘密,其中包括受管群集的访问令牌和服务器 URL。
如果要在 ACM 附加组件安装过程中导入托管群集,请在开始安装前完成以下步骤。 如果选择在集线器群集上安装附加组件后创建机密并导入托管群集,则可通过 CLI 完成 额外步骤。
对于每个需要管理的集群,请执行以下步骤。
-
在要使用 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 进行管理。 在导入群集之前,请确保 已为 ACM 创建了所需的密文。
ACM 管理的所有群集必须属于一个群集集。 您可以创建新的群集集,也可以向 Default 群集集添加群集。 如果未指定群集集,托管群集将添加到 Default 选项中。
使用 CLI 导入托管群集
要使用 CLI 导入受管群集,请编辑 ACM 资源以包含要管理的群集。
-
运行该命令编辑 ACM 资源。
oc edit acmhub RESOURCE_NAME -
在资源的
managedClusters部分,添加群集 ID、为 ACM 创建的群集密文名称、密文命名空间,并指定Import操作。 格式参见下面的示例。 下面的示例导入了cluster_id_1.managedclusters: - clusterid: "cluster_id_1" secretname: "managed-secret-1" secretnamespace: "managed-namespace" # The namespace that the secret was created in action: "Import" -
保存并应用更改。
使用 OpenShift 令牌和 API 服务器导入托管群集 URL
收集要导入群集的 OpenShift 令牌和 API 服务器 URL,然后使用 ACM 控制台导入群集。
-
在 IBM Cloud 控制台中,导航至 群集列表,然后单击要导入的群集。
-
在集群详细信息页面中,单击 OpenShift Web 控制台。
-
单击用户名下拉菜单,显示格式为
IAM#username。 从下拉菜单中单击“复制登录命令”。 -
单击显示令牌,显示登录命令。 找到以
oc login开头的命令,并保存 API 令牌 (sha256~XXXX) 和服务器 URL。 -
导航至 ACM 控制台。 单击基础架构 > 群集 > 导入现有群集。
-
按照提示导入群集,并在参数部分指定 API 令牌和服务器 URL。
使用 kubeconfig 导入托管群集
收集 kubeconfig 详情,然后使用 ACM 控制台导入群集。
-
从 IBM Cloud CLI 运行以下命令,获取要导入群集的 kubeconfig。 保存输出中显示的 kubeconfig 文件内容。
ibmcloud ks cluster config --cluster CLUSTER_NAME --admin --output yaml -
导航至 ACM 控制台。 单击基础架构 > 群集 > 导入现有群集。
-
按照提示导入群集,并在参数部分包含 kubeconfig 内容。
使用生成的命令导入托管群集
使用 ACM 控制台生成导入群集的命令,然后在要导入的群集上运行该命令。
- 导航至 ACM 控制台。 单击基础架构 > 群集 > 导入现有群集。
- 选择选项生成导入命令。 复制命令。
- 登录 IBM Cloud CLI,在要导入的群集上运行命令。
更新或删除托管群集
要从 ACM 实例中删除或更新托管群集,必须编辑集线器群集上 ACM 自定义资源的 managedClusters 部分。
-
运行该命令编辑 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: "managed-secret-2" secretnamespace: "managed-namespace-2" # 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