第 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. 导航至 Administration Cluster 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. 进入到 Workloads Secrets,再查找云供应商的 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 的情况下运行,请进入到 Workloads Secrets 并为您的云供应商查找 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. 导航至 Administration Cluster 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. 其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.