设置高级群集管理插件(仅限部分地区)

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

高级群集管理插件仅适用于部分地区。

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

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

准备工作

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

  1. 查看 ACM 计划类型 并决定您要使用的计划。 请注意,对于虚拟化 ACM,建议托管群集运行裸机工作节点。
  2. 确保您的群集满足以下要求。
    • 您的集线器群集必须是 VPC 群集,至少有 3 个运行 RHCOS 的工作节点,至少有 6 个 VCPU 和 64GB 内存。 为实现高可用性,请确保群集在 3 个区域中每个区域至少有一个工作节点。
    • 每个托管群集必须至少有 3 个运行 RHCOS 的工作节点,至少有 6 个 VCPU 和 64GB 内存
    • 此外,如果要使用 ACM for Virtualization 计划,建议使用裸机工作节点。 对于 ACM for Kubernetes 计划,托管集群可以运行裸机节点VSI
  3. 查看 ACM 附加组件 自动安装的操作符,以及可以作为增强功能安装的 可选操作符
  4. 您必须拥有 IBM Cloud Kubernetes Service 中群集的 管理员平台访问角色和管理器服务访问角色
  5. 您必须拥有一个至少有 3 个工作节点的 VPC 集群。 每个工作节点必须至少有 4 个 CPU 和 16GB 内存。 为实现高可用性,请确保群集在 3 个区域中每个区域至少有一个工作节点。
  6. 在群集上创建用于 ACM 的受信任配置文件
  7. 对于要使用 ACM 管理的每个群集,必须在集线器群集上创建一个秘密,其中包含受管群集的访问令牌和服务器 URL。 此步骤可在安装之前或之后完成。 请参阅“为 ACM 准备秘密”。
  8. 安装或更新 CLI

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

请按照以下步骤创建用于 ACM 的受信任配置文件。

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

    • 命名空间等于 kube-system
    • Satellite 服务角色 - Satellite Link 管理员、阅读器
    • Kubernetes Service 角色 - 经理、编辑
    • 计费服务角色 - 阅读器、操作员
  2. 创建受信任配置文件后,从控制台的受信任配置文件页面复制 ID。

  3. 使用受信任配置文件的 ID 创建以下秘密。 保存以下文本并输入您的证书。 您可以按照步骤手动创建密文,也可以使用 shell 脚本 在群集中自动创建密文

    IBMCLOUD_AUTHTYPE=pod-identity
    IBMCLOUD_PROFILEID=<TRUSTED-PROFILE-ID>
    
  4. 在群集中创建一个包含受信任配置文件凭据的秘密。 将以下 YAML 保存到名为 ibm-cloud-credentials.yaml 的文件中。 在 ibm-credentials.env: 字段中,输入受信任配置文件的 ID。

    apiVersion: v1
    data:
      ibm-credentials.env: # Trusted profile ID
    kind: Secret
    metadata:
      name: ibm-cloud-credentials
      namespace: kube-system
    type: Opaque
    
  5. 登录您的账户。 如果适用,请将相应的资源组设定为目标。 设置集群的上下文。

  6. 在集群中创建私钥。

    kubectl apply -f ibm-cloud-credentials.yaml
    

为 ACM 准备秘密

对于要使用 ACM 管理的每个群集,必须在集线器群集上创建一个秘密,其中包括受管群集的访问令牌和服务器 URL。

如果要在 ACM 附加组件安装过程中导入托管群集,请在开始安装前完成以下步骤。 如果选择在集线器群集上安装附加组件后创建机密并导入托管群集,则可以通过 CLI 完成其他步骤

为要管理的每个群集完成以下步骤。

  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 服务器的令牌端点。 将 <master_URL> 替换为上一步中找到的 URL。 请注意,输出中的值不是访问令牌。

    curl <master_URL>/.well-known/oauth-authorization-server | jq -r .token_endpoint
    

    示例输出。

    <token_endpoint>/oauth/token
    
  3. 使用先前检索的端点登录群集。 将 <URL> 替换为上一步中找到的 oauth 服务器的 <token_endpoint>。 在输出中,找到位置响应中包含的 <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> 包含在位置响应字符串中。

    < 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. 选择要使用的 ACM 计划:ACM for VirtualizationACM for Kubernetes。 您可以随时从 ACM for Virtualization 计划升级到 ACM for Kubernetes 计划,但请注意,升级是永久性的,无法逆转。

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

    您只能在安装过程中使用用户界面导入托管群集。 在集线器群集上安装 ACM 附加组件后,必须 使用 CLI 来导入托管群集。

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

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

    1. 导航至 OpenShift Web Console Multicluster Hub。
    2. 从下拉菜单中选择“车队管理”。
    3. 查找群集列表,检查群集是否以 Hub 控制平面类型列出。
  10. 可选:查看您可以安装的 附加操作符,以增强 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. 运行该命令以启用插件。 如果要在安装过程中导入群集,请务必指定 billingPlanisLicenseAccepted 参数,以及可选的 --managedClusters 参数。

    ibmcloud oc ibmcloud oc cluster addon enable acm --cluster HUB_CLUSTER_ID 'managedClusters=["clusterid:CLUSTER_ID;secretname:SECRET_NAME;secretnamespace:SECRET_NAMESPACE;action:IMPORT"]' --param 'billingPlan=PLAN' --param 'isLicenseAccepted=BOOLEAN' --param
    

    命令参数。 有关每种参数类型的示例,请参阅下面的示例命令。

    --cluster
    必需。 要安装 ACM 附加组件的集线器群的 ID。
    --param 'managedClusters=["]
    可选。 在插件安装过程中,包含该参数一次或多次可导入托管群集。 您也可以稍后再完成此步骤。 更多信息,请参阅 为 ACM 准备机密
    指定以下值:
    • clusterid :要导入的托管群集的 ID。
    • secretname :在集线器群集上创建的密文名称。 该秘密包含托管群集的凭证。
    • 秘密名称空间 :您在中心集群上创建的秘密的命名空间。 该秘密包含托管群集的凭证。
    • action:IMPORT :指定托管群集 IMPORT 操作的参数。
    --param 'billingPlan='
    必需。 您要为 ACM 选择的计费计划。 选项包括 KUBERNETESACM for Kubernetes 计划)或 VIRTUALIZATIONACM for Virtualization 计划)。 请注意,以后可以从 ACM for Virtualization 升级到 ACM for Kubernetes,但升级是永久性的,无法逆转。
    --param 'isLicenseAccepted='
    必需。 指定 TRUE 以接受所选计费计划的许可协议。 接受本许可即表示您同意适用的条款和条件,并确认您了解所选计划中包含的服务。

    使用 虚拟化 ACM 计费计划安装 ACM 附加组件并导入托管群集的示例命令。

    ibmcloud ks cluster addon enable acm --cluster a5bcde982dfer2nwxq73 --param 'managedClusters=["clusterid:w7rthce34gfbq7ww12d3;secretname:managed-secret-1;secretnamespace:managed-ns1;action:Import"]' --param 'billingPlan=KUBERNETES' --param 'isLicenseAccepted=true'
    
  5. 确认附加组件已安装。 插件可能需要几分钟才能显示以下输出。

    1. 在集线器群集上,检查是否已创建 acmhub 资源。

      oc get acmhub
      

      示例输出。

          NAME       AGE
          acm-auto   1h
      
    2. 在集线器群集上,检查 acmhub 的状态。

      oc describe acmhubstatus
      

      示例输出。

      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 进行管理。 在导入群集之前,请确保 已为 ACM 创建了所需的密文

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

使用 CLI 导入托管群集

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

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

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

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

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

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

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

  3. 单击用户名下拉菜单,显示格式为 IAM#username。 从下拉菜单中单击“复制登录命令”。

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

  5. 导航至 ACM 控制台。 单击基础架构 > 群集 > 导入现有群集

  6. 按照提示导入群集,并在参数部分指定 API 令牌和服务器 URL。

使用 kubeconfig 导入托管群集

收集 kubeconfig 详情,然后使用 ACM 控制台导入群集。

  1. 从 IBM Cloud CLI 运行以下命令,获取要导入群集的 kubeconfig。 保存输出中显示的 kubeconfig 文件内容。

    ibmcloud ks cluster config --cluster <cluster_name> --admin --output yaml
    
  2. 导航至 ACM 控制台。 单击基础架构 > 群集 > 导入现有群集

  3. 按照提示导入群集,并在参数部分包含 kubeconfig 内容。

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

使用 ACM 控制台生成导入群集的命令,然后在要导入的群集上运行该命令。

  1. 导航至 ACM 控制台。 单击基础架构 > 群集 > 导入现有群集
  2. 选择选项生成导入命令。 复制命令。
  3. 登录 IBM Cloud CLI,在要导入的群集上运行命令。

更新或删除托管群集

要从 ACM 实例中删除或更新托管群集,必须编辑集线器群集上 ACM 自定义资源的 managedClusters 部分。

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

    oc edit acmhub <resource_name>
    
  2. 在资源的 managedClusters 部分,添加群集 ID、为 ACM 创建的群集密文名称、密文命名空间以及要为群集执行的操作。 格式参见下面的示例。 对于操作,请指定 DeleteUpdate。 请注意,删除群集不需要密文或密文命名空间。

    下面的示例删除了 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"  
    
  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>