×

云凭证运算符 (CCO) 将云提供商凭证管理为自定义资源定义 (CRD)。CCO 同步CredentialsRequest自定义资源 (CR) 以允许 OpenShift Container Platform 组件请求具有集群运行所需特定权限的云提供商凭证。

通过为install-config.yaml文件中的credentialsMode参数设置不同的值,可以将 CCO 配置为以几种不同的模式运行。如果未指定模式,或将credentialsMode参数设置为空字符串 (""),则 CCO 将以其默认模式运行。

模式

通过为install-config.yaml文件中的credentialsMode参数设置不同的值,可以将 CCO 配置为以薄荷直通手动模式运行。这些选项提供了 CCO 如何使用云凭证处理集群中的CredentialsRequest CR 的透明性和灵活性,并允许将 CCO 配置为适合您组织的安全要求。并非所有 CCO 模式都支持所有云提供商。

  • 薄荷模式:在薄荷模式下,CCO 使用提供的管理员级云凭证为集群中的组件创建新的凭证,这些凭证仅具有所需的特定权限。

  • 直通模式:在直通模式下,CCO 将提供的云凭证传递给请求云凭证的组件。

  • 使用组件的长期凭证的手动模式:在手动模式下,您可以管理长期云凭证,而不是 CCO。

  • 使用组件的短期凭证的手动模式:对于某些提供商,您可以在安装过程中使用 CCO 实用程序 (ccoctl) 为各个组件实现短期凭证。这些凭证是在 OpenShift Container Platform 集群外部创建和管理的。

表 1. CCO 模式支持矩阵
云提供商 薄荷模式 直通模式 使用长期凭证的手动模式 使用短期凭证的手动模式

亚马逊网络服务 (AWS)

X

X

X

X

全球 Microsoft Azure

X

X

X

Microsoft Azure Stack Hub

X

谷歌云平台 (GCP)

X

X

X

X

IBM Cloud®

X [1]

Nutanix

X [1]

Red Hat OpenStack 平台 (RHOSP)

X

VMware vSphere

X

  1. 此平台在安装过程中使用ccoctl实用程序配置长期凭据。

确定云凭据操作员模式

对于支持在多种模式下使用 CCO 的平台,您可以使用 Web 控制台或 CLI 确定 CCO 配置为使用的模式。

Decision tree showing how to determine the configured CCO credentials mode for your cluster.
图 1. 确定 CCO 配置

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

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

只有亚马逊网络服务 (AWS)、全球 Microsoft Azure 和谷歌云平台 (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 模式或直通模式运行。

    • Mint:CCO 处于 mint 模式。

    • Passthrough:CCO 处于直通模式。

    • Manual:CCO 处于手动模式。

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

    AWS 和 GCP 集群支持在删除根密钥的情况下使用 mint 模式。

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

  7. 仅使用默认值 ('') 的 AWS 或 GCP 集群:要确定集群是在 mint 模式还是直通模式下运行,请检查集群根密钥上的注释

    1. 导航到**工作负载** → **密钥**,并查找您的云提供商的根密钥。

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

      平台 密钥名称

      AWS

      aws-creds

      GCP

      gcp-credentials

    2. 要查看集群正在使用的 CCO 模式,请单击**注释**下的1 个注释,然后检查值字段。以下是可能的取值

      • Mint:CCO 处于 mint 模式。

      • Passthrough:CCO 处于直通模式。

      如果您的集群使用 mint 模式,您还可以确定集群是否在没有根密钥的情况下运行。

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

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

    平台 密钥名称

    AWS

    aws-creds

    GCP

    gcp-credentials

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

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

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

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

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

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

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

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

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

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

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

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

只有亚马逊网络服务 (AWS)、全球 Microsoft Azure 和谷歌云平台 (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 模式或直通模式运行。

    • Mint:CCO 处于 mint 模式。

    • Passthrough:CCO 处于直通模式。

    • Manual:CCO 处于手动模式。

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

    AWS 和 GCP 集群支持在删除根密钥的情况下使用 mint 模式。

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

  3. 仅使用默认值 ('') 的 AWS 或 GCP 集群:要确定集群是在 mint 模式还是直通模式下运行,请运行以下命令

    $ oc get secret <secret_name> \
      -n kube-system \
      -o jsonpath \
      --template '{ .metadata.annotations }'

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

    此命令显示集群根密钥对象中.metadata.annotations参数的值。以下是可能的输出值

    • Mint:CCO 处于 mint 模式。

    • Passthrough:CCO 处于直通模式。

    如果您的集群使用 mint 模式,您还可以确定集群是否在没有根密钥的情况下运行。

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

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

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

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

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

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

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

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

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

默认行为

对于支持多种模式的平台(AWS、Azure 和 GCP),当 CCO 在其默认模式下运行时,它会动态检查提供的凭据以确定它们足以处理哪些模式的CredentialsRequest CR。

默认情况下,CCO 会确定凭据是否足以用于 mint 模式(这是首选的操作模式),并使用这些凭据为集群中的组件创建相应的凭据。如果凭据不足以用于 mint 模式,它会确定它们是否足以用于直通模式。如果凭据不足以用于直通模式,则 CCO 无法充分处理CredentialsRequest CR。

如果在安装过程中确定提供的凭据不足,则安装将失败。对于 AWS,安装程序在流程早期失败并指示缺少哪些必需的权限。其他提供商可能不会提供有关错误原因的具体信息,直到遇到错误为止。

如果在成功安装后更改了凭据,并且 CCO 确定新的凭据不足,则 CCO 会对任何新的CredentialsRequest CR 设置条件,以指示由于凭据不足而无法处理它们。

要解决凭据不足的问题,请提供具有足够权限的凭据。如果安装过程中出现错误,请尝试重新安装。对于新的CredentialsRequest (CR) 问题,请等待CCO尝试重新处理该CR。或者,您可以将集群配置为使用云提供商支持的不同CCO模式。