设置高级群集管理插件

高级集群管理(ACM)插件为客户提供了一种简化的方式,可跨多个集群管理监控、工作负载放置和安全策略。

IBM Cloud 集群不支持从 OperatorHub 安装 ACM。 要安装 ACM,请按照本页上的说明进行操作。

安装 ACM 的群集是集线器群集。 在安装过程中或安装后,您可以指定多个受管群集,以便使用 ACM 进行管理。

准备工作

在安装 ACM 附加组件之前,请查看以下前提步骤和信息。

  1. 确保您的群集满足以下要求。
    • 您的集线器群集必须是 VPC 群集,至少有 3 个运行 RHCOS 的工作节点,至少有 6 个 VCPU 和 64GB 内存。 为实现高可用性,请确保群集在 3 个区域中每个区域至少有一个工作节点。
    • 每个托管群集必须至少有 3 个运行 RHCOS 的工作节点,至少有 6 个 VCPU 和 64GB 内存。
  2. 查看 ACM 附加组件 自动安装的操作符,以及可以作为增强功能安装的 可选操作符。
  3. 您必须拥有 IBM Cloud Kubernetes Service 中群集的 管理员平台访问角色和管理器服务访问角色。
  4. 您必须拥有一个至少有 3 个工作节点的 VPC 集群。 每个工作节点必须至少有 4 个 CPU 和 16GB 内存。 为实现高可用性,请确保群集在 3 个区域中每个区域至少有一个工作节点。
  5. 在群集上创建用于 ACM 的受信任配置文件。
  6. 可选:如果您希望在 ACM 附加组件的安装过程中导入托管集群,或者计划在安装完成后通过 CLI 导入托管集群,或者计划稍后更新托管集群的连接凭据,则必须在中心集群上为每个托管集群创建一个密钥。 请参阅 《为 ACM 准备密钥》。 如果您仅计划在安装完成后通过 OpenShift Web 控制台导入托管集群,则无需执行此步骤。
  7. 安装或更新 CLI。

为 ACM 创建受信任的配置文件

请按照以下步骤创建一个用于 ACM 的受信任配置文件,并将其分配给中心集群。

一旦将受信任的配置文件添加到集群中,就无法将其移除,且无法恢复使用 API 密钥来管理您的资源。 请务必仔细按照以下步骤操作,以确保您的受信任配置文件设置正确。

使用用户界面创建受信任的配置文件

  1. 按照步骤 创建受信任的个人资料。 在配置文件的条件中,请务必指定以下访问权限。

    • 计算资源:Red Hat OpenShift
    • 所有服务资源
    • 当命名空间等于 kube-system
    • Kubernetes Service 角色 - 经理、编辑
  2. 创建受信任配置文件后,从控制台的受信任配置文件页面复制 ID。

使用 CLI 创建受信任的配置文件

  1. 创建受信任的配置文件。
    ibmcloud iam trusted-profile-create acm-operator-profile
    
  2. 创建计算资源信任规则,其作用域限定在 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
    
  3. 将 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
    

为集群设置受信任配置文件

  1. 获取受信任的配置文件 ID。
    ibmcloud iam trusted-profiles
    
  2. 将受信任的配置文件分配给该集群。
    ibmcloud oc experimental trusted-profile set --cluster CLUSTER_NAME_OR_ID --trusted-profile TRUSTED_PROFILE_ID
    

如果此命令执行失败或未被识别,可能是您的 Kubernetes Service 插件已过时。 运行 ibmcloud plugin update ks 将其更新至最新版本,然后重试。

  1. 请确认已在此集群中创建了受信任配置文件的密钥。 该命令的执行可能需要长达10分钟。 请等待密钥出现,然后再继续安装 ACM 插件。 如果在密钥创建之前继续操作,ACM 插件的安装将会失败。
    oc get secrets -n kube-system | grep ibm-cloud-credentials
    

为 ACM 准备秘密

为 ACM 创建密钥是可选的。 仅当您希望在 ACM 附加组件的安装过程中导入托管集群、计划 在安装完成后通过 CLI 导入托管集群,或者计划稍后 更新托管集群的连接凭据 时,才需要填写本节内容。

如果您计划在安装完成后通过 OpenShift Web 控制台导入托管集群,且后续无需更新连接凭据,则无需创建密钥。

对于每个需要管理的集群,请在中心集群上完成以下步骤。

  1. 在要使用 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>
    ...
    
  2. 获取 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
    
  3. 使用上一步获取的端点来获取访问令牌。 执行以下 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
    ...
    
  4. 在集线器群集上,创建一个包含群集访问令牌和服务器 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 操作员安装到集线器群集。

  1. 如果要在安装过程中导入一个或多个托管群集来使用 ACM 管理,请按照 为 ACM 准备密 码中 的步骤在集线器群集上创建所需的密码。 保存秘密名称和命名空间。 您也可以暂时跳过这一步,在安装过程结束后再完成,但需要额外的 CLI 步骤。

  2. 登录 IBM Cloud 控制台并导航至 群集页面。 单击要安装 ACM 的群集。

  3. 在群集详细信息页面,找到附加组件部分。

  4. 在 Available to install(可用安装 )下,找到 Red Hat Advanced Cluster Management(高级群集管理 )选项,然后单击 Install(安装 )。

  5. 在安装页面,选择要安装的 ACM 附加组件版本。

  6. 选择导入托管群集的方式。 要在安装插件后导入群集,请选择从 CLI 导入。 如果您在集线器群集上创建了所需的机密,并希望现在导入托管群集,请选择“立即导入”。

    您只能在安装过程中使用 IBM Cloud 用户界面导入托管集群。 在集线器集群上安装 ACM 附加组件后,您可以 使用 CLI 或 OpenShift Web 控制台导入受管集群。

    1. 如果选择了“立即导入”选项,请单击弹出菜单中的“导入群集”。
    2. 要导入账户中存在的群集,请选择群集并输入密名和命名空间。 然后,单击下一步。
    3. 要导入跨账户或外部群集,请指定群集 ID、密文名称和密文命名空间。 然后,点击 “导入集群”。
  7. 单击创建。

  8. 确认群集上已安装插件。

    1. 导航至 OpenShift Web Console Multicluster Hub。
    2. 从下拉菜单中选择“车队管理”。
    3. 查找群集列表,检查群集是否以 Hub 控制平面类型列出。
  9. 可选:查看您可以安装的 附加操作符,以增强 ACM 功能。

通过命令行界面(CLI)安装 ACM

使用 CLI 在集线器群集上安装 ACM 附加组件。

  1. 查找 ACM 附加组件的默认版本。

    ibmcloud oc cluster addon versions
    
  2. 查看 ACM 附加选项。 在命令中,指定上一步中找到的默认版本。 请注意安装附加组件时要包含的任何选项。

    ibmcloud oc cluster addon options --addon acm --version DEFAULT_VERSION
    
  3. 如果要导入群集由附加组件管理,请按照“为 ACM 准备机密”中的步骤(如果尚未完成)进行操作。 请务必保存集群 ID 以及在集线器集群上创建的秘密的名称和命名空间。 您也可以在集线器群集上安装附加组件后完成此过程,但 安装后导入托管群集 需要额外的步骤。

  4. 运行该命令以启用该插件。 如果要在安装过程中导入群集,请务必指定 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 以接受所选计费计划的许可协议。 接受本许可即表示您同意适用的条款和条件,并确认您了解所选计划中包含的服务。
  5. 确认附加组件已安装。 插件可能需要几分钟才能显示以下输出。

    1. 在集线器群集上,检查是否已创建 acmhub 资源。
        oc get acmhub
        ```
        示例输出。
    
        ```sh {: screen}
            NAME       AGE
            acm-auto   1h
        ```
    2. 在集线器群集上,检查 `acmhub` 的状态。
    
    ```sh {: pre}
        oc describe acmhubstatus
        ```
        示例输出。
    
        ```sh {: screen}
        status
            phase: Ready
        ```
    
  6. 可选:查看您可以安装的 附加操作符,以增强 ACM 功能。

ACM 操作员

查看 ACM 附加组件自动安装的操作符,以及可以作为增强功能安装的可选操作符。

自动安装的操作员

安装 ACM 附加组件时,集线器群集或托管群集上会自动安装以下操作符。

为 ACM 自动安装操作员。
运算符 描述
高级群集管理 (ACM) 操作员 安装在轮毂组上。
MultiCluster 发动机操作员 由 ACM 操作员安装在受管群集上。

可选操作员

以下操作符为可选操作符,可安装在集线器群集或托管群集上,以增强 ACM 功能。 请注意,IBM 不负责管理这些操作员。

您有责任管理这些操作员,包括但不限于更新、监控、恢复和重新安装。

ACM 的可选操作符。
运算符 描述 其他信息
GitOps 操作员
  • 用于从 ACM 控制台运行 Argo-cd 应用程序。
  • 在集线器群集和任何受管群集上安装。
GitOps 概况
Red Hat OpenShift 虚拟化运维工程师
  • 用于管理 VM 工作负载和容器工作负载。
  • 安装在托管群集上。
  • 仅适用于裸机群集(仅适用于托管群集)。
安装 OpenShift 虚拟化操作器
潜航者 潜航者

安装 ACM 后导入托管群集

安装 ACM 后,您可以通过 OpenShift Web 控制台或 CLI 导入托管集群。 基于控制台的方法不需要密钥。 CLI 方法需要一个 密钥。

所有由 ACM 管理的集群都必须属于某个集群集。 您可以创建新的群集集,也可以向 Default 群集集添加群集。 如果未指定群集集,托管群集将添加到 Default 选项中。

使用生成的命令导入托管群集

使用 OpenShift 网页控制台生成一个导入命令,然后在您要导入的集群上运行该命令。

  1. 打开 ACM 中心集群的 OpenShift Web 控制台。

  2. 在 “车队管理”视图下,点击“导入集群”。

  3. 输入集群名称,如有需要请选择集群集,如有需要请输入其他标签。

  4. 在 “导入”模式下,请选择“手动运行导入命令”,然后单击“下一步”。

  5. 可选:选择一个自动化模板,然后单击 “下一步”。

  6. 查看详细信息,然后点击“生成命令”。 复制显示的命令。

  7. 登录到您要导入的集群,并使用针对该集群配置的 kubectl 运行复制的命令。

使用服务器 URL 和 API 令牌导入托管集群

获取要导入的集群的 API 令牌和服务器 URL,然后使用 OpenShift Web 控制台导入该集群。

  1. 获取要导入的集群的 API 令牌和服务器 URL。

    1. 在 IBM Cloud 控制台中,导航至您的 集群列表,然后点击您要导入的集群。

    2. 在集群详细信息页面中,单击 OpenShift Web 控制台。

    3. 点击用户名菜单(显示格式为 IAM#username ),然后点击 “复制登录命令”。

    4. 点击 “显示令牌”。 找到以 oc login 开头的命令,并保存 API 令牌 (sha256~XXXX) 和服务器 URL。

  2. 打开 ACM 中心集群的 OpenShift Web 控制台。

  3. 在 “车队管理”视图下,点击“导入集群”。

  4. 输入集群名称,如有需要请选择集群集,如有需要请输入其他标签。

  5. 在 “导入”模式下,请选择“输入现有集群的服务器 URL 和 API 令牌”。 输入服务器地址 URL 以及您获取的 API 令牌,然后点击 “下一步”。

  6. 可选:选择一个自动化模板,然后单击 “下一步”。

  7. 查看详细信息,然后单击 “导入”。

使用 kubeconfig 导入托管群集

收集要导入的集群的 kubeconfig 文件,然后使用 OpenShift 网页控制台导入该集群。

  1. 获取要导入的集群的 kubeconfig 文件。 在 IBM Cloud 命令行界面中,运行以下命令并保存输出结果。

    ibmcloud ks cluster config --cluster CLUSTER_NAME --admin --output yaml
    
  2. 打开 ACM 中心集群的 OpenShift Web 控制台。

  3. 在 “车队管理”视图下,点击“导入集群”。

  4. 输入集群名称,如有需要请选择集群集,如有需要请输入其他标签。

  5. 在 “导入”模式下,选择“Kubeconfig”,将您获取的 kubeconfig 内容粘贴进去,然后点击“下一步”。

  6. 可选:选择一个自动化模板,然后单击 “下一步”。

  7. 查看详细信息,然后单击 “导入”。

从 Red Hat OpenShift 集群管理器导入

“从 Red Hat OpenShift 集群管理器导入”导入模式仅支持部署在 AWS ( ROSA )上的 Red Hat OpenShift 服务集群,不适用于 IBM Cloud 集群。

使用 CLI 导入托管群集

CLI 导入方法要求您已在中心集群上为受管集群 创建了一个密钥。

要使用 CLI 导入受管群集,请编辑 ACM 资源以包含要管理的群集。

  1. 运行该命令编辑 ACM 资源。

    oc edit acmhub RESOURCE_NAME
    
  2. 在资源的 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"
    
  3. 保存并应用更改。

更新或删除托管群集

若要将托管集群从 ACM 实例中移除,或更新托管集群的 ACM 连接凭据(例如,在令牌轮换或服务器 URL 发生变更后),您必须在中心集群上的 ACM 自定义资源中编辑 managedClusters 部分。 Update 操作会刷新 ACM 用于与托管集群通信的基于密钥的凭证。 这与升级集群的 OpenShift 版本不同。

要更新托管集群的连接凭据,需要该集群的 密钥。

  1. 运行该命令编辑 ACM 资源。

    oc edit acmhub RESOURCE_NAME
    
  2. 在资源的 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"
    
  3. 保存并应用更改。

升级 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 附加组件。

  1. 从集线器群集中删除 ACM 资源。

    oc delete acmhub RESOURCE_NAME
    
  2. 删除资源后,移除 ACM 附加组件。 指定相同的集群 ID。

    ibmcloud oc cluster addon disable acm -f --cluster CLUSTER_ID