第 19 章 管理云供应商凭证

19.1. 关于 Cloud Credential Operator

Cloud Credential Operator(CCO) 将云供应商凭证作为自定义资源定义 (CRD) 进行管理。CredentialsRequest 自定义资源(CR)的 CCO 同步,允许 OpenShift Container Platform 组件使用集群运行所需的特定权限请求云供应商凭证。

通过在 install-config.yaml 文件中为 credentialsMode 参数设置不同的值,可将 CCO 配置为以几种不同模式操作。如果没有指定模式,或将 credentialsMode 参数被设置为空字符串("")。

19.1.1. 模式

通过在 install-config.yaml 文件中为 credentialsMode 参数设置不同的值,可将 CCO 配置为在 mintpassthroughmanual 模式下操作。这些选项为 CCO 使用云凭证处理集群中的 credentialsRequest CR 提供了透明性和灵活性,并允许配置 CCO 以适应您的机构的安全要求。不是所有 CCO 模式都支持所有云供应商。

  • Mint:在 mint 模式中,CCO 使用提供的管理员级云凭证为集群中组件创建新凭证,且只具有所需的特定权限。
  • Passthrough:在 passthrough 模式中,CCO 将提供的云凭证传递给请求云凭证的组件。
  • Manual:在手动模式中,用户管理云凭证而不是 CCO。

    • 使用 AWS Security Token Service 手动:在手动模式中,您可以将 AWS 集群配置为使用 Amazon Web Services Security Token Service(AWS STS)。借助这一配置,CCO 对不同组件使用临时凭证。
    • 使用 GCP Workload Identity: 在手动模式中,您可以将 GCP 集群配置为使用 GCP Workload Identity。借助这一配置,CCO 对不同组件使用临时凭证。

表 19.1. CCO 模式支持列表

云供应商MintPassthroughManual

Alibaba Cloud

  

X

Amazon Web Services (AWS)

X

X

X

Microsoft Azure

 

X [1]

X

Google Cloud Platform (GCP)

X

X

X

IBM Cloud

  

X

Nutanix

  

X

Red Hat OpenStack Platform(RHOSP)

 

X

 

Red Hat Virtualization(RHV)

 

X

 

VMware vSphere

 

X

 
  1. 手动模式是唯一支持 Microsoft Azure Stack Hub 的 CCO 配置。

19.1.2. 确定 Cloud Credential Operator 模式

对于支持多个模式中使用 CCO 的平台,您可以使用 Web 控制台或 CLI 确定 CCO 要使用的模式。

图 19.1. 确定 CCO 配置

决策树显示如何为集群决定配置的 CCO 凭证模式。

19.1.2.1. 使用 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 模式。

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

  7. 仅使用默认 ('') 的 AWS 或 GCP 集群 :要确定集群是否处于 mint 还是 passthrough 模式运行,请检查集群 root secret 上的注解:

    1. 进入到 WorkloadsSecrets,再查找云供应商的 root secret。

      注意

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

      平台Secret 名称

      AWS

      aws-creds

      GCP

      gcp-credentials

    2. 要查看集群正在使用的 CCO 模式,请点 Annotations 下的 1 注解,并检查 value 字段。可能会有以下值:

      • Mint :CCO 在 mint 模式中运行。
      • Passthrough :CCO 在 passthrough 模式运行。

      如果您的集群使用 mint 模式,您也可以确定集群是否在没有 root secret 的情况下运行。

  8. 只使用 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。
  9. 只使用手动模式的 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 工具进行配置。

19.1.2.2. 使用 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 模式。

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

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

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

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

    此命令显示集群 root secret 对象中 .metadata.annotations 参数的值。可能会有以下输出值:

    • Mint :CCO 在 mint 模式中运行。
    • Passthrough :CCO 在 passthrough 模式运行。

    如果您的集群使用 mint 模式,您也可以确定集群是否在没有 root secret 的情况下运行。

  4. 仅使用 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。

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

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

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

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

19.1.3. 默认行为

对于支持多个模式的平台(AWS、Azure 和 GCP),当 CCO 采用默认模式运行时,它会动态检查提供的凭证,以确定它们足以处理 credentialsRequest CR 的模式。

默认情况下,CCO 决定凭证是否足以满足 mint 模式(首选操作模式),并使用这些凭证为集群中组件创建适当的凭证。如果凭据不足以满足 mint 模式,它会决定凭证是否足以满足 passthrough 模式。如果凭据不足以满足 passthrough 模式,则 CCO 无法正确处理 CredentialsRequest CR。

如果确定提供的凭证在安装过程中不足,安装会失败。对于 AWS,安装程序在进程早期失败,并指示缺少哪些所需权限。在遇到错误之前,其他供应商可能不会提供有关错误原因的具体信息。

如果在安装成功后修改凭证,并且 CCO 确定新凭证不足,CCO 会给任何新的 CredentialsRequest CR 设置条件,表示因为凭证不足而无法处理这些凭证。

要解决凭据不足的问题,请为凭证提供足够权限。如果在安装过程中出现错误,请尝试再次安装。对于新 CredentialsRequest CR 的问题,请等待 CCO 尝试再次处理 CR。另外,您可以为 AWSAzureGCP 手动创建 IAM。

19.1.4. 其他资源