×

对于具有手动维护凭据的集群,云凭据操作符 (CCO) 的 `Upgradable` 状态默认为 `False`。

  • 对于次要版本(例如,从 4.12 到 4.13),此状态会阻止您进行更新,直到您解决了任何更新的权限并注释了 `CloudCredential` 资源以指示权限已根据下一版本的需要进行更新。此注释会将 `Upgradable` 状态更改为 `True`。

  • 对于 z 流版本(例如,从 4.13.0 到 4.13.1),不会添加或更改任何权限,因此不会阻止更新。

在更新具有手动维护凭据的集群之前,您必须在您要更新到的 OpenShift Container Platform 版本的发布镜像中容纳任何新的或更改的凭据。

具有手动维护凭据的集群的更新要求

在使用云凭据操作符 (CCO) 更新使用手动维护凭据的集群之前,必须更新新版本的云提供商资源。

如果您的集群的云凭据管理是使用 CCO 实用程序 (ccoctl) 配置的,请使用 ccoctl 实用程序更新资源。那些使用手动模式(无 ccoctl 实用程序)配置的集群需要手动更新资源。

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

更新云提供商资源和 `upgradeable-to` 注释的过程只能使用命令行工具完成。

按平台类型划分的云凭据配置选项和更新要求

某些平台仅支持以一种模式使用 CCO。对于安装在这些平台上的集群,平台类型决定了凭据更新要求。

对于支持 CCO 多种模式的平台,必须确定集群配置为使用的模式,并针对该配置采取必要的措施。

Decision tree showing the possible update paths for your cluster depending on the configured CCO credentials mode.
图 1. 按平台类型划分的凭据更新要求
Red Hat OpenStack Platform (RHOSP) 和 VMware vSphere

这些平台不支持以手动模式使用 CCO。这些平台上的集群会自动处理云提供商资源的变化,不需要更新upgradeable-to注释。

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

IBM Cloud 和 Nutanix

安装在这些平台上的集群使用ccoctl实用程序进行配置。

这些平台上集群的管理员必须采取以下措施:

  1. 提取并准备新版本的CredentialsRequest自定义资源 (CR)。

  2. 为新版本配置ccoctl实用程序,并使用它来更新云提供商资源。

  3. 使用upgradeable-to注释指示集群已准备好更新。

Microsoft Azure Stack Hub

这些集群使用带有长期凭据的手动模式,并且不使用ccoctl实用程序。

这些平台上集群的管理员必须采取以下措施:

  1. 提取并准备新版本的CredentialsRequest自定义资源 (CR)。

  2. 手动更新新版本的云提供商资源。

  3. 使用upgradeable-to注释指示集群已准备好更新。

Amazon Web Services (AWS)、全球 Microsoft Azure 和 Google Cloud Platform (GCP)

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

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

使用 Web 控制台确定云凭据操作员模式

您可以使用 Web 控制台确定云凭据操作员 (CCO) 配置为使用的模式。

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

先决条件
  • 您可以访问具有集群管理员权限的 OpenShift Container Platform 帐户。

步骤
  1. 以具有cluster-admin角色的用户身份登录到 OpenShift Container Platform Web 控制台。

  2. 导航到**管理** → **集群设置**。

  3. 在**集群设置**页面上,选择**配置**选项卡。

  4. 在**配置资源**下,选择**CloudCredential**。

  5. 在**CloudCredential 详情**页面上,选择**YAML**选项卡。

  6. 在 YAML 块中,检查spec.credentialsMode的值。以下值是可能的,但并非所有值都受所有平台支持:

    • '':CCO 正在以默认模式运行。在此配置中,CCO 以 mint 或 passthrough 模式运行,具体取决于安装期间提供的凭据。

    • Mint:CCO 正在以 mint 模式运行。

    • Passthrough:CCO 正在以 passthrough 模式运行。

    • Manual:CCO 正在以手动模式运行。

    要确定spec.credentialsMode''MintManual的 AWS、GCP 或全球 Microsoft Azure 集群的特定配置,必须进一步调查。

    AWS 和 GCP 集群支持使用删除了根密钥的 mint 模式。如果集群专门配置为使用 mint 模式或默认使用 mint 模式,则必须在更新之前确定集群上是否存在根密钥。

    使用手动模式的 AWS、GCP 或全球 Microsoft Azure 集群可能配置为使用 AWS STS、GCP 工作负载身份或 Microsoft Entra 工作负载 ID 从集群外部创建和管理云凭据。您可以通过检查集群Authentication对象来确定您的集群是否使用此策略。

  7. 仅使用 mint 模式的 AWS 或 GCP 集群:要确定集群是否在没有根密钥的情况下运行,请导航到**工作负载** → **密钥**,并查找您的云提供商的根密钥。

    确保**项目**下拉菜单设置为**所有项目**。

    平台 密钥名称

    AWS

    aws-creds

    GCP

    gcp-credentials

    • 如果您看到其中一个值,则您的集群正在使用带有根密钥的 mint 或 passthrough 模式。

    • 如果您没有看到这些值,则您的集群正在使用删除了根密钥的 mint 模式下的 CCO。

  8. 仅使用手动模式的 AWS、GCP 或全球 Microsoft Azure 集群:要确定集群是否配置为从集群外部创建和管理云凭据,必须检查集群Authentication对象的 YAML 值。

    1. 导航到**管理** → **集群设置**。

    2. 在**集群设置**页面上,选择**配置**选项卡。

    3. 在**配置资源**下,选择**Authentication**。

    4. 在**Authentication 详情**页面上,选择**YAML**选项卡。

    5. 在 YAML 块中,检查.spec.serviceAccountIssuer参数的值。

      • 包含与您的云提供商关联的 URL 的值表示 CCO 正在手动模式下使用短期凭据进行组件操作。这些集群使用ccoctl实用程序从集群外部创建和管理云凭据进行配置。

      • 空值 ('') 表示集群正在手动模式下使用 CCO,但未使用ccoctl实用程序进行配置。

后续步骤
  • 如果您正在更新一个具有以 mint 或 passthrough 模式运行的 CCO 且存在根密钥的集群,则无需更新任何云提供商资源,可以直接继续更新过程的下一部分。

  • 如果您的集群正在使用删除了根密钥的 mint 模式下的 CCO,则必须在继续更新过程的下一部分之前,使用管理员级凭据恢复凭据密钥。

  • 如果您的集群使用 CCO 实用程序 (ccoctl) 进行配置,则必须采取以下措施:

    1. 提取并准备新版本的CredentialsRequest自定义资源 (CR)。

    2. 为新版本配置ccoctl实用程序,并使用它来更新云提供商资源。

    3. 更新upgradeable-to注释以指示集群已准备好更新。

  • 如果您的集群正在手动模式下使用 CCO,但未使用ccoctl实用程序进行配置,则必须采取以下措施:

    1. 提取并准备新版本的CredentialsRequest自定义资源 (CR)。

    2. 手动更新新版本的云提供商资源。

    3. 更新upgradeable-to注释以指示集群已准备好更新。

使用 CLI 确定云凭据操作员模式

您可以使用 CLI 确定云凭据操作员 (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 正在以手动模式运行。

    要确定spec.credentialsMode''MintManual的 AWS、GCP 或全球 Microsoft Azure 集群的特定配置,必须进一步调查。

    AWS 和 GCP 集群支持使用删除了根密钥的 mint 模式。如果集群专门配置为使用 mint 模式或默认使用 mint 模式,则必须在更新之前确定集群上是否存在根密钥。

    使用手动模式的 AWS、GCP 或全球 Microsoft Azure 集群可能配置为使用 AWS STS、GCP 工作负载身份或 Microsoft Entra 工作负载 ID 从集群外部创建和管理云凭据。您可以通过检查集群Authentication对象来确定您的集群是否使用此策略。

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

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

    其中<secret_name> 对 AWS 为 aws-creds,对 GCP 为 gcp-credentials

    如果存在 root 密钥,则此命令的输出将返回有关密钥的信息。错误表示集群上不存在 root 密钥。

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

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

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

    • 与您的云提供商关联的 URL 输出表示 CCO 正在使用手动模式以及组件的短期凭据。这些集群使用ccoctl实用程序配置,以便在集群外部创建和管理云凭据。

    • 空输出表示集群正在手动模式下使用 CCO,但未使用ccoctl实用程序进行配置。

后续步骤
  • 如果您正在更新一个具有以 mint 或 passthrough 模式运行的 CCO 且存在根密钥的集群,则无需更新任何云提供商资源,可以直接继续更新过程的下一部分。

  • 如果您的集群正在使用删除了根密钥的 mint 模式下的 CCO,则必须在继续更新过程的下一部分之前,使用管理员级凭据恢复凭据密钥。

  • 如果您的集群使用 CCO 实用程序 (ccoctl) 进行配置,则必须采取以下措施:

    1. 提取并准备新版本的CredentialsRequest自定义资源 (CR)。

    2. 为新版本配置ccoctl实用程序,并使用它来更新云提供商资源。

    3. 更新upgradeable-to注释以指示集群已准备好更新。

  • 如果您的集群正在手动模式下使用 CCO,但未使用ccoctl实用程序进行配置,则必须采取以下措施:

    1. 提取并准备新版本的CredentialsRequest自定义资源 (CR)。

    2. 手动更新新版本的云提供商资源。

    3. 更新upgradeable-to注释以指示集群已准备好更新。

提取和准备凭据请求资源

在更新使用手动模式的云凭据操作符 (CCO) 的集群之前,必须为新版本提取和准备CredentialsRequest自定义资源 (CR)。

先决条件
  • 安装与更新版本匹配的 OpenShift CLI (oc)。

  • 以具有cluster-admin权限的用户身份登录集群。

步骤
  1. 通过运行以下命令获取要应用的更新的拉取规范

    $ oc adm upgrade

    此命令的输出包括类似于以下内容的可用更新的拉取规范

    部分示例输出
    ...
    Recommended updates:
    
    VERSION IMAGE
    4.17.0  quay.io/openshift-release-dev/ocp-release@sha256:6a899c54dda6b844bb12a247e324a0f6cde367e880b73ba110c056df6d018032
    ...
  2. 使用要使用的发行版镜像设置$RELEASE_IMAGE变量,请运行以下命令

    $ RELEASE_IMAGE=<update_pull_spec>

    其中<update_pull_spec>是要使用的发行版镜像的拉取规范。例如

    quay.io/openshift-release-dev/ocp-release@sha256:6a899c54dda6b844bb12a247e324a0f6cde367e880b73ba110c056df6d018032
  3. 通过运行以下命令从 OpenShift Container Platform 发行版镜像中提取CredentialsRequest自定义资源 (CR) 列表

    $ oc adm release extract \
      --from=$RELEASE_IMAGE \
      --credentials-requests \
      --included \(1)
      --to=<path_to_directory_for_credentials_requests> (2)
    1 --included参数仅包含特定集群配置针对目标版本所需的清单。
    2 指定要存储CredentialsRequest对象的目录的路径。如果指定的目录不存在,则此命令将创建它。

    此命令将为每个CredentialsRequest对象创建一个 YAML 文件。

  4. 对于发行版镜像中的每个CredentialsRequest CR,请确保集群中存在与spec.secretRef.namespace字段中的文本匹配的命名空间。此字段是存储保存凭据配置的生成密钥的位置。

    AWS CredentialsRequest对象示例
    apiVersion: cloudcredential.openshift.io/v1
    kind: CredentialsRequest
    metadata:
      name: cloud-credential-operator-iam-ro
      namespace: openshift-cloud-credential-operator
    spec:
      providerSpec:
        apiVersion: cloudcredential.openshift.io/v1
        kind: AWSProviderSpec
        statementEntries:
        - effect: Allow
          action:
          - iam:GetUser
          - iam:GetUserPolicy
          - iam:ListAccessKeys
          resource: "*"
      secretRef:
        name: cloud-credential-operator-iam-ro-creds
        namespace: openshift-cloud-credential-operator (1)
    1 此字段指示必须存在的用于保存生成的密钥的命名空间。

    其他平台的CredentialsRequest CR 格式类似,但具有不同的平台特定值。

  5. 对于集群中尚不存在与spec.secretRef.namespace中指定的名称匹配的命名空间的任何CredentialsRequest CR,请运行以下命令创建命名空间

    $ oc create namespace <component_namespace>
后续步骤
  • 如果您的集群的云凭据管理是使用 CCO 实用程序 (ccoctl) 配置的,请为集群更新配置ccoctl实用程序并使用它来更新您的云提供商资源。

  • 如果您的集群未使用ccoctl实用程序配置,请手动更新您的云提供商资源。

配置云凭据操作符实用程序以进行集群更新

要将使用手动模式的云凭据操作符 (CCO) 在集群外部创建和管理云凭据的集群升级,请提取并准备 CCO 实用程序 (ccoctl) 二进制文件。

ccoctl实用程序是一个 Linux 二进制文件,必须在 Linux 环境中运行。

先决条件
  • 您可以访问具有集群管理员访问权限的 OpenShift Container Platform 帐户。

  • 您已安装 OpenShift CLI (oc)。

  • 您的集群使用ccoctl实用程序配置,以便在集群外部创建和管理云凭据。

  • 您已从 OpenShift Container Platform 发行版镜像中提取了CredentialsRequest自定义资源 (CR),并确保集群中存在与spec.secretRef.namespace字段中的文本匹配的命名空间。

步骤
  1. 通过运行以下命令为 OpenShift Container Platform 发行版镜像设置变量

    $ RELEASE_IMAGE=$(oc get clusterversion -o jsonpath={..desired.image})
  2. 通过运行以下命令从 OpenShift Container Platform 发行版镜像中获取 CCO 容器镜像

    $ CCO_IMAGE=$(oc adm release info --image-for='cloud-credential-operator' $RELEASE_IMAGE -a ~/.pull-secret)

    确保$RELEASE_IMAGE的架构与您将在其中使用ccoctl工具的环境的架构匹配。

  3. 通过运行以下命令从 OpenShift Container Platform 发行版镜像中的 CCO 容器镜像中提取ccoctl二进制文件

    $ oc image extract $CCO_IMAGE \
      --file="/usr/bin/ccoctl.<rhel_version>" \(1)
      -a ~/.pull-secret
    1 对于<rhel_version>,请指定与主机使用的 Red Hat Enterprise Linux (RHEL) 版本相对应的值。如果未指定值,则默认使用ccoctl.rhel8。以下值有效
    • rhel8:对于使用 RHEL 8 的主机,请指定此值。

    • rhel9:对于使用 RHEL 9 的主机,请指定此值。

  4. 更改权限以使ccoctl可执行,请运行以下命令

    $ chmod 775 ccoctl.<rhel_version>
验证
  • 要验证ccoctl是否已准备好使用,请显示帮助文件。运行命令时使用相对文件名,例如

    $ ./ccoctl.rhel9
    示例输出
    OpenShift credentials provisioning tool
    
    Usage:
      ccoctl [command]
    
    Available Commands:
      aws          Manage credentials objects for AWS cloud
      azure        Manage credentials objects for Azure
      gcp          Manage credentials objects for Google cloud
      help         Help about any command
      ibmcloud     Manage credentials objects for {ibm-cloud-title}
      nutanix      Manage credentials objects for Nutanix
    
    Flags:
      -h, --help   help for ccoctl
    
    Use "ccoctl [command] --help" for more information about a command.

使用云凭据操作符实用程序更新云提供商资源

使用 CCO 实用程序 (ccoctl) 配置的 OpenShift Container Platform 集群的升级过程类似于在安装过程中创建云提供商资源。

在 AWS 集群上,一些ccoctl命令会调用 AWS API 来创建或修改 AWS 资源。您可以使用--dry-run标志来避免进行 API 调用。使用此标志会在本地文件系统上创建 JSON 文件。您可以查看和修改 JSON 文件,然后使用--cli-input-json参数使用 AWS CLI 工具应用它们。

先决条件
  • 您已从 OpenShift Container Platform 发行版镜像中提取了CredentialsRequest自定义资源 (CR),并确保集群中存在与spec.secretRef.namespace字段中的文本匹配的命名空间。

  • 您已从发行版镜像中提取并配置了ccoctl二进制文件。

步骤
  1. 使用ccoctl工具处理所有CredentialsRequest对象,方法是运行云提供商的命令。以下命令处理CredentialsRequest对象

    Amazon Web Services (AWS)
    $ ccoctl aws create-all \(1)
      --name=<name> \(2)
      --region=<aws_region> \(3)
      --credentials-requests-dir=<path_to_credentials_requests_directory> \(4)
      --output-dir=<path_to_ccoctl_output_dir> \(5)
      --create-private-s3-bucket (6)
    1 要单独创建 AWS 资源,请使用“安装具有自定义配置的 AWS 集群”内容中的“单独创建 AWS 资源”步骤。如果您需要在修改 AWS 资源之前查看 `ccoctl` 工具创建的 JSON 文件,或者 `ccoctl` 工具自动创建 AWS 资源的过程不符合您组织的要求,则此选项可能很有用。
    2 指定用于标记为跟踪而创建的任何云资源的名称。
    3 指定将创建云资源的 AWS 区域。
    4 指定包含组件 `CredentialsRequest` 对象文件的目录。
    5 可选:指定您希望 `ccoctl` 实用程序创建对象的目录。默认情况下,该实用程序在运行命令的目录中创建对象。
    6 可选:默认情况下,`ccoctl` 实用程序将 OpenID Connect (OIDC) 配置文件存储在公共 S3 存储桶中,并使用 S3 URL 作为公共 OIDC 端点。要改为将 OIDC 配置存储在私有 S3 存储桶中(通过公共 CloudFront 分发 URL 由 IAM 身份提供程序访问),请使用 `--create-private-s3-bucket` 参数。
    Google Cloud Platform (GCP)
    $ ccoctl gcp create-all \
      --name=<name> \(1)
      --region=<gcp_region> \(2)
      --project=<gcp_project_id> \(3)
      --credentials-requests-dir=<path_to_credentials_requests_directory> \(4)
      --output-dir=<path_to_ccoctl_output_dir> (5)
    1 指定为跟踪而创建的所有 GCP 资源的用户定义名称。
    2 指定将创建云资源的 GCP 区域。
    3 指定将创建云资源的 GCP 项目 ID。
    4 指定包含用于创建 GCP 服务帐户的 `CredentialsRequest` 清单文件的目录。
    5 可选:指定您希望 `ccoctl` 实用程序创建对象的目录。默认情况下,该实用程序在运行命令的目录中创建对象。
    IBM Cloud
    $ ccoctl ibmcloud create-service-id \
      --credentials-requests-dir=<path_to_credential_requests_directory> \(1)
      --name=<cluster_name> \(2)
      --output-dir=<installation_directory> \(3)
      --resource-group-name=<resource_group_name> (4)
    1 指定包含组件 `CredentialsRequest` 对象文件的目录。
    2 指定 OpenShift Container Platform 集群的名称。
    3 可选:指定您希望 `ccoctl` 实用程序创建对象的目录。默认情况下,该实用程序在运行命令的目录中创建对象。
    4 可选:指定用于限定访问策略的资源组的名称。
    Microsoft Azure
    $ ccoctl azure create-managed-identities \
      --name <azure_infra_name> \(1)
      --output-dir ./output_dir \
      --region <azure_region> \(2)
      --subscription-id <azure_subscription_id> \(3)
      --credentials-requests-dir <path_to_directory_for_credentials_requests> \
      --issuer-url "${OIDC_ISSUER_URL}" \(4)
      --dnszone-resource-group-name <azure_dns_zone_resourcegroup_name> \(5)
      --installation-resource-group-name "${AZURE_INSTALL_RG}" (6)
    1 `name` 参数的值用于创建 Azure 资源组。要使用现有的 Azure 资源组而不是创建一个新的资源组,请使用 `--oidc-resource-group-name` 参数,其值为现有组名。
    2 指定现有集群的区域。
    3 指定现有集群的订阅 ID。
    4 指定现有集群的 OIDC 发行者 URL。您可以通过运行以下命令来获取此值。
    $ oc get authentication cluster \
      -o jsonpath \
      --template='{ .spec.serviceAccountIssuer }'
    5 指定包含 DNS 区域的资源组的名称。
    6 指定 Azure 资源组名称。您可以通过运行以下命令来获取此值。
    $ oc get infrastructure cluster \
      -o jsonpath \
      --template '{ .status.platformStatus.azure.resourceGroupName }'
    Nutanix
    $ ccoctl nutanix create-shared-secrets \
      --credentials-requests-dir=<path_to_credentials_requests_directory> \(1)
      --output-dir=<ccoctl_output_dir> \(2)
      --credentials-source-filepath=<path_to_credentials_file> (3)
    1 指定包含组件 `CredentialsRequests` 对象文件的目录的路径。
    2 可选:指定您希望 `ccoctl` 实用程序创建对象的目录。默认情况下,该实用程序在运行命令的目录中创建对象。
    3 可选:指定包含凭据数据 YAML 文件的目录。默认情况下,`ccoctl` 预期此文件位于 `/.nutanix/credentials`。

    对于每个 `CredentialsRequest` 对象,`ccoctl` 会根据 OpenShift Container Platform 发行版镜像中每个 `CredentialsRequest` 对象中定义的内容创建所需的提供程序资源和权限策略。

  2. 通过运行以下命令将密钥应用于您的集群。

    $ ls <path_to_ccoctl_output_dir>/manifests/*-credentials.yaml | xargs -I{} oc apply -f {}
验证

您可以通过查询云提供商来验证是否创建了所需的提供程序资源和权限策略。有关更多信息,请参阅您的云提供商文档,了解如何列出角色或服务帐户。

后续步骤
  • 更新 `upgradeable-to` 注解以指示集群已准备好升级。

手动更新云提供商资源

在升级具有手动维护的凭据的集群之前,您必须为要升级到的发行版映像创建任何新凭据的密钥。您还必须检查现有凭据所需的权限,并在新发行版中适应这些组件的新权限要求。

先决条件
  • 您已从 OpenShift Container Platform 发行版镜像中提取了CredentialsRequest自定义资源 (CR),并确保集群中存在与spec.secretRef.namespace字段中的文本匹配的命名空间。

步骤
  1. 为新发行版映像添加的任何 `CredentialsRequest` 自定义资源创建包含密钥的 YAML 文件。必须使用每个 `CredentialsRequest` 对象的 `spec.secretRef` 中定义的名称空间和密钥名称来存储密钥。

    AWS 示例 YAML 文件
    包含密钥的 AWS `CredentialsRequest` 对象示例
    apiVersion: cloudcredential.openshift.io/v1
    kind: CredentialsRequest
    metadata:
      name: <component_credentials_request>
      namespace: openshift-cloud-credential-operator
      ...
    spec:
      providerSpec:
        apiVersion: cloudcredential.openshift.io/v1
        kind: AWSProviderSpec
        statementEntries:
        - effect: Allow
          action:
          - s3:CreateBucket
          - s3:DeleteBucket
          resource: "*"
          ...
      secretRef:
        name: <component_secret>
        namespace: <component_namespace>
      ...
    AWS `Secret` 对象示例
    apiVersion: v1
    kind: Secret
    metadata:
      name: <component_secret>
      namespace: <component_namespace>
    data:
      aws_access_key_id: <base64_encoded_aws_access_key_id>
      aws_secret_access_key: <base64_encoded_aws_secret_access_key>
    Azure 示例 YAML 文件

    全局 Azure 和 Azure Stack Hub 使用相同的 `CredentialsRequest` 对象和密钥格式。

    包含密钥的 Azure `CredentialsRequest` 对象示例
    apiVersion: cloudcredential.openshift.io/v1
    kind: CredentialsRequest
    metadata:
      name: <component_credentials_request>
      namespace: openshift-cloud-credential-operator
      ...
    spec:
      providerSpec:
        apiVersion: cloudcredential.openshift.io/v1
        kind: AzureProviderSpec
        roleBindings:
        - role: Contributor
          ...
      secretRef:
        name: <component_secret>
        namespace: <component_namespace>
      ...
    Azure `Secret` 对象示例
    apiVersion: v1
    kind: Secret
    metadata:
      name: <component_secret>
      namespace: <component_namespace>
    data:
      azure_subscription_id: <base64_encoded_azure_subscription_id>
      azure_client_id: <base64_encoded_azure_client_id>
      azure_client_secret: <base64_encoded_azure_client_secret>
      azure_tenant_id: <base64_encoded_azure_tenant_id>
      azure_resource_prefix: <base64_encoded_azure_resource_prefix>
      azure_resourcegroup: <base64_encoded_azure_resourcegroup>
      azure_region: <base64_encoded_azure_region>
    GCP 示例 YAML 文件
    包含密钥的 GCP `CredentialsRequest` 对象示例
    apiVersion: cloudcredential.openshift.io/v1
    kind: CredentialsRequest
    metadata:
      name: <component_credentials_request>
      namespace: openshift-cloud-credential-operator
      ...
    spec:
      providerSpec:
        apiVersion: cloudcredential.openshift.io/v1
        kind: GCPProviderSpec
          predefinedRoles:
          - roles/iam.securityReviewer
          - roles/iam.roleViewer
          skipServiceCheck: true
          ...
      secretRef:
        name: <component_secret>
        namespace: <component_namespace>
      ...
    GCP `Secret` 对象示例
    apiVersion: v1
    kind: Secret
    metadata:
      name: <component_secret>
      namespace: <component_namespace>
    data:
      service_account.json: <base64_encoded_gcp_service_account_file>
  2. 如果存储在密钥中的任何现有凭据的 `CredentialsRequest` 自定义资源已更改权限要求,请根据需要更新权限。

后续步骤
  • 更新 `upgradeable-to` 注解以指示集群已准备好升级。

指示集群已准备好升级

对于具有手动维护凭据的集群,云凭据操作符 (CCO) 的 `Upgradable` 状态默认为 `False`。

先决条件
  • 对于您要升级到的发行版映像,您已手动或使用 Cloud Credential Operator 实用程序 ( `ccoctl` ) 处理了任何新凭据。

  • 您已安装 OpenShift CLI (oc)。

步骤
  1. 以具有cluster-admin角色的用户身份登录到集群上的oc

  2. 编辑 `CloudCredential` 资源以在 `metadata` 字段中添加 `upgradeable-to` 注解,方法是运行以下命令。

    $ oc edit cloudcredential cluster
    要添加的文本
    ...
      metadata:
        annotations:
          cloudcredential.openshift.io/upgradeable-to: <version_number>
    ...

    其中 `` 是您要升级到的版本,格式为 `x.y.z`。例如,对于 OpenShift Container Platform 4.12.2,请使用 `4.12.2`。

    添加注释后,可升级状态可能需要几分钟才能更改。

验证
  1. 在 Web 控制台的**管理员**视角中,导航到**管理**→**集群设置**。

  2. 要查看 CCO 状态详细信息,请单击**集群运算符**列表中的**cloud-credential**。

    • 如果**条件**部分中的**可升级**状态为**False**,请验证 `upgradeable-to` 注解是否没有错别字。

  3. 当**条件**部分中的**可升级**状态为**True** 时,开始 OpenShift Container Platform 升级。