第 7 章 准备使用手动维护的凭证更新集群

默认情况下,带有手动维护凭证的集群的 Cloud Credential Operator(CCO)U gradable 状态为 False

  • 对于次发行版本(例如从 4.12 升级到 4.13),这个状态会阻止升级,直到您解决了任何更新的权限并 添加了 CloudCredential 资源,以指示下一版本根据需要更新权限。此注解将 Upgradable 状态更改为 True
  • 对于 z-stream 版本(例如从 4.13.0 到 4.13.1),没有添加或更改任何权限,因此不会阻止升级。

在使用手动维护的凭证更新集群前,您必须在要升级到的 OpenShift Container Platform 版本的发行镜像中包含任何新的或更改的凭证。

7.1. 使用手动维护的凭证更新集群的要求

在通过 Cloud Credential Operator (CCO) 更新使用手动维护凭证的集群前,您必须为新版本更新云供应商资源。

如果使用 CCO 实用程序 (ccoctl) 配置集群的云凭证管理,请使用 ccoctl 实用程序更新资源。配置为在没有 ccoctl 工具的情况下使用手动模式的集群需要手动更新资源。

更新云供应商资源后,您必须更新集群的 upgradeable-to 注解,以指示它已准备好更新。

注意

更新云供应商资源和 upgradeable-to 注解的过程只能通过命令行工具完成。

7.1.1. 云凭证配置选项并根据平台类型更新要求

有些平台只支持在一个模式中使用 CCO。对于在这些平台上安装的集群,平台类型决定了凭证更新要求。

对于支持多个模式中使用 CCO 的平台,您必须确定集群配置为使用哪种模式,并对该配置执行所需操作。

图 7.1. 按平台类型进行凭证更新要求

决策树根据配置的 CCO 凭证模式,显示集群的可能更新路径。
Red Hat OpenStack Platform (RHOSP)、Red Hat Virtualization (RHV)和 VMware vSphere

这些平台不支持在手动模式中使用 CCO。这些平台上的集群会自动处理云供应商资源的更改,不需要对 upgradeable-to 的注解进行更新。

这些平台上的集群管理员应该跳过更新过程的手动维护凭证部分。

Alibaba Cloud、IBM Cloud 和 Nutanix

在这些平台上安装的集群使用 ccoctl 工具进行配置。

这些平台上的集群管理员必须执行以下操作:

  1. 为新版本配置 ccoctl 工具。
  2. 使用 ccoctl 实用程序更新云供应商资源。
  3. 指明集群可以使用 upgradeable-to 注解进行更新。
Microsoft Azure Stack Hub

这些集群使用带有长期凭证的手动模式,且不使用 ccoctl 工具。

这些平台上的集群管理员必须执行以下操作:

  1. 为新版本手动更新云供应商资源。
  2. 指明集群可以使用 upgradeable-to 注解进行更新。
Amazon Web Services (AWS)、全局 Microsoft Azure 和 Google Cloud Platform (GCP)

在这些平台上安装的集群支持多个 CCO 模式。

所需的更新过程取决于集群配置为使用的模式。如果您不确定 CCO 在集群中要使用的模式,您可以使用 Web 控制台或 CLI 来决定此信息。

7.1.2. 使用 Web 控制台确定 Cloud Credential Operator 模式

您可以使用 Web 控制台确定 Cloud Credential Operator (CCO) 配置为使用哪种模式。

注意

只有 Amazon Web Services (AWS)、全局 Microsoft Azure 和 Google Cloud Platform (GCP) 集群支持多个 CCO 模式。

先决条件

  • 您可以使用集群管理员权限访问 OpenShift Container Platform 帐户。

流程

  1. 以具有 cluster-admin 角色的用户身份登录到 OpenShift Container Platform web 控制台。
  2. 导航至 AdministrationCluster Settings
  3. Cluster Settings 页面中,选择 Configuration 选项卡。
  4. Configuration resource 下,选择 CloudCredential
  5. CloudCredential 详情页中,选择 YAML 选项卡。
  6. 在 YAML 块中,检查 spec.credentialsMode 的值。以下是可能的值,但它们可能并不会在所有平台上都被支持:

    • '' :CCO 在默认模式下运行。在这个配置中,CCO 以 mint 或 passthrough 模式运行,具体取决于安装期间提供的凭证。
    • Mint :CCO 在 mint 模式中运行。
    • Passthrough :CCO 在 passthrough 模式运行。
    • Manual :CCO 以手动模式运行。
    重要

    要确定 AWS 或 GCP 集群的特定配置,其 spec.credentialsMode'', Mint, 或 Manual,您必须进一步调查。

    AWS 和 GCP 集群支持使用删除了 root secret 的 mint 模式。如果集群被特别配置为使用 mint 模式或默认使用 mint 模式,则必须在更新前确定集群中是否存在 root secret。

    使用手动模式的 AWS 或 GCP 集群可能会被配置为使用 AWS 安全令牌服务 (STS) 或 GCP Workload Identity 从集群外部创建和管理云凭证。您可以通过检查集群 Authentication 对象来确定集群是否使用了此策略。

  7. 只使用 mint 模式的 AWS 或 GCP 集群:要确定集群是否在没有 root secret 的情况下运行,请进入到 WorkloadsSecrets 并为您的云供应商查找 root secret。

    注意

    确保将 项目 下拉菜单设置为 All Projects

    平台Secret 名称

    AWS

    aws-creds

    GCP

    gcp-credentials

    • 如果您看到这些值之一,您的集群将使用 mint 或 passthrough 模式,并带有 root secret。
    • 如果没有看到这些值,您的集群将以 mint 模式使用 CCO,并删除 root secret。
  8. 只使用手动模式的 AWS 或 GCP 集群 :要确定集群是否被配置为从集群外创建和管理云凭证,您必须检查 cluster Authentication 对象 YAML 值。

    1. 导航至 AdministrationCluster Settings
    2. Cluster Settings 页面中,选择 Configuration 选项卡。
    3. Configuration resource 下,选择 Authentication
    4. Authentication details 页面中,选择 YAML 选项卡。
    5. 在 YAML 块中,检查 .spec.serviceAccountIssuer 参数的值。

      • 包含与云供应商关联的 URL 的值表示 CCO 在 AWS STS 或 GCP Workload Identity 中使用手动模式从集群外部创建和管理云凭证。这些集群使用 ccoctl 工具进行配置。
      • 空值 ('') 表示集群在手动模式中使用 CCO,但没有使用 ccoctl 工具进行配置。

后续步骤

  • 如果您要更新以 mint 或 passthrough 模式运行的 CCO 的集群,且存在 root secret,则不需要更新任何云供应商资源,并可以继续进入更新过程的下一部分。
  • 如果您的集群在 mint 模式中使用删除了 root secret 的 CCO,则必须重新使用管理员级别的凭证重新恢复凭证 secret,然后才能继续更新过程的下一部分。
  • 如果您的集群使用 CCO 实用程序 (ccoctl) 配置,您必须执行以下操作:

    1. 为新版本配置 ccoctl 工具,并使用它来更新云供应商资源。
    2. 更新 upgradeable-to 注解,以指示集群已准备好更新。
  • 如果您的集群以手动模式使用 CCO,但没有使用 ccoctl 工具配置,则必须执行以下操作:

    1. 为新版本手动更新云供应商资源。
    2. 更新 upgradeable-to 注解,以指示集群已准备好更新。

7.1.3. 使用 CLI 确定 Cloud Credential Operator 模式

您可以使用 CLI 确定 Cloud Credential Operator (CCO) 配置为使用哪种模式。

注意

只有 Amazon Web Services (AWS)、全局 Microsoft Azure 和 Google Cloud Platform (GCP) 集群支持多个 CCO 模式。

先决条件

  • 您可以使用集群管理员权限访问 OpenShift Container Platform 帐户。
  • 已安装 OpenShift CLI(oc)。

流程

  1. 以具有 cluster-admin 角色的用户身份登录到集群中的 oc
  2. 要确定 CCO 被配置为使用的模式,请输入以下命令:

    $ oc get cloudcredentials cluster \
      -o=jsonpath={.spec.credentialsMode}

    以下输出值可能,但并非所有平台上都不支持所有值:

    • '' :CCO 在默认模式下运行。在这个配置中,CCO 以 mint 或 passthrough 模式运行,具体取决于安装期间提供的凭证。
    • Mint :CCO 在 mint 模式中运行。
    • Passthrough :CCO 在 passthrough 模式运行。
    • Manual :CCO 以手动模式运行。
    重要

    要确定 AWS 或 GCP 集群的特定配置,其 spec.credentialsMode'', Mint, 或 Manual,您必须进一步调查。

    AWS 和 GCP 集群支持使用删除了 root secret 的 mint 模式。如果集群被特别配置为使用 mint 模式或默认使用 mint 模式,则必须在更新前确定集群中是否存在 root secret。

    使用手动模式的 AWS 或 GCP 集群可能会被配置为使用 AWS 安全令牌服务 (STS) 或 GCP Workload Identity 从集群外部创建和管理云凭证。您可以通过检查集群 Authentication 对象来确定集群是否使用了此策略。

  3. 仅使用 mint 模式的 AWS 或 GCP 集群:要确定集群是否在没有 root secret 的情况下运行,请运行以下命令:

    $ oc get secret <secret_name> \
      -n=kube-system

    其中 <secret_name> 是 AWS 的 aws-creds 或 GCP 的 gcp-credentials

    如果存在 root secret,这个命令的输出会返回有关 secret 的信息。错误表示集群中不存在 root secret。

  4. 仅使用手动模式的 AWS 或 GCP 集群 :要确定集群是否被配置为从集群外部创建和管理云凭证,请运行以下命令:

    $ oc get authentication cluster \
      -o jsonpath \
      --template='{ .spec.serviceAccountIssuer }'

    此命令显示集群 Authentication 对象中 .spec.serviceAccountIssuer 参数的值。

    • 包含与云供应商关联的 URL 的输出表示 CCO 在 AWS STS 或 GCP Workload Identity 中使用手动模式从集群外部创建和管理云凭证。这些集群使用 ccoctl 工具进行配置。
    • 空输出表示集群以手动模式使用 CCO,但没有使用 ccoctl 工具进行配置。

后续步骤

  • 如果您要更新以 mint 或 passthrough 模式运行的 CCO 的集群,且存在 root secret,则不需要更新任何云供应商资源,并可以继续进入更新过程的下一部分。
  • 如果您的集群在 mint 模式中使用删除了 root secret 的 CCO,则必须重新使用管理员级别的凭证重新恢复凭证 secret,然后才能继续更新过程的下一部分。
  • 如果您的集群使用 CCO 实用程序 (ccoctl) 配置,您必须执行以下操作:

    1. 为新版本配置 ccoctl 工具,并使用它来更新云供应商资源。
    2. 更新 upgradeable-to 注解,以指示集群已准备好更新。
  • 如果您的集群以手动模式使用 CCO,但没有使用 ccoctl 工具配置,则必须执行以下操作:

    1. 为新版本手动更新云供应商资源。
    2. 更新 upgradeable-to 注解,以指示集群已准备好更新。