第 6 章 红帽 Operator

6.1. Cloud Credential Operator

用途

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

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

默认行为

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

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

注意

CCO 无法验证 Azure 凭证是否足以满足 passthrough 模式。如果 Azure 凭证对 mint 模式不足,则 CCO 操作时假设凭据足以满足 passthrough 模式。

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

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

要解决凭据不足的问题,请为凭证提供足够权限。如果在安装过程中出现错误,请尝试再次安装。对于新 credentialsRequest CR 的问题,请等待 CCO 尝试再次处理 CR。另外,您可以手动为 AWS、Azure 或 GCP 创建 IAM。详情请参阅为 AWS、Azure 或 GCP 的安装内容 手动创建 IAM 部分。

模式

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

Mint 模式

AWS、Azure 和 GCP 支持 Mint 模式。

Mint 模式是 CCO 的默认和最佳实践设置。在这种模式中,CCO 使用提供的管理员级云凭证来运行集群。

如果在安装后没有删除凭证,则会存储并供 CCO 使用来处理集群中组件的 credentialsRequest CR,并为每个组件创建新凭证,每个凭证只具有所需的特定权限。以 mint 模式持续协调云凭证可进行需要额外凭证或权限(如升级)的操作。

mint 模式将 admin 级别凭证存储在集群 kube-system 命名空间中的要求可能不适用于每个机构的安全要求。

以 mint 模式使用 CCO 时,请确保您提供的凭证满足运行或安装 OpenShift Container Platform 的云要求。如果提供的凭证不足以满足 mint 模式,则 CCO 无法创建 IAM 用户。

表 6.1. Mint 模式凭证要求

权限

AWS

  • iam:CreateAccessKey
  • iam:CreateUser
  • iam:DeleteAccessKey
  • iam:DeleteUser
  • iam:DeleteUserPolicy
  • iam:GetUser
  • iam:GetUserPolicy
  • iam:ListAccessKeys
  • iam:PutUserPolicy
  • iam:TagUser
  • iam:SimulatePrincipalPolicy

Azure

配置 Azure 帐户内容的 创建服务主体部分中指定的权限的服务主体。

GCP

  • resourcemanager.projects.get
  • serviceusage.services.list
  • iam.serviceAccountKeys.create
  • iam.serviceAccountKeys.delete
  • iam.serviceAccounts.create
  • iam.serviceAccounts.delete
  • iam.serviceAccounts.get
  • iam.roles.get
  • resourcemanager.projects.getIamPolicy
  • resourcemanager.projects.setIamPolicy

带有删除或轮转管理员级凭证的 Mint 模式

OpenShift Container Platform 版本 4.4 及更新的版本中支持带有删除或轮转 admin 级别的凭证的 Mint 模式。

这个选项需要在安装过程中存在管理员级别的凭证,但凭证不会永久存储在集群中,且无需长期存在。

以 mint 模式安装 OpenShift Container Platform 后,您可以从集群中删除 admin 级别的凭证 Secret。如果删除了 Secret,CCO 将使用先前的只读凭证来验证所有 credentialsRequest CR 是否有其所需的权限。移除后,如果需要可在底层云上销毁相关的凭证。

除非需要进行管理员级别才可以进行的操作(如在升级过程中),否则不需要管理员级别的凭证。在每次升级前,您必须使用 admin 级别的凭证重新恢复凭证 Secret。如果没有凭证,则可能无法进行升级。

Passthrough 模式

AWS、Azure、GCP、Red Hat OpenStack Platform(RHOSP)、Red Hat Virtualization(RHV)和 VMware vSphere 支持 passthrough 模式。

在 passthrough 模式中,CCO 将提供的云凭证传递给请求云凭证的组件。凭证必须具有执行安装的权限,并可以完成集群中组件所需的操作,但并不需要可以创建新凭证的权限。CCO 不会尝试在 passthrough 模式中创建额外的有限范围凭证。

passthrough 模式权限要求

在使用 CCO 的 passthrough 模式时,请确保您提供的凭证满足运行或安装 OpenShift Container Platform 的云要求。如果提供的凭证由 CCO 传递给一个创建 credentialsRequest CR 的组件,则该组件会在尝试调用没有权限的 API 时报告错误。

您在 AWS、Azure 或 GCP 中提供的 passthrough 模式的凭证必须具有您正在运行或安装的 OpenShift Container Platform 版本所需的所有 credentialsRequest CR 的所有请求权限。要找到云供应商所需的 credentialsRequest CR,请参阅为 AWS、Azure 或 GCP 安装的手动创建 IAM 部分。

要在 Red Hat OpenStack Platform(RHOSP)上安装 OpenShift Container Platform 集群,CCO 需要具有 member 用户角色权限的凭证。

要在 Red Hat Virtualization(RHV)上安装 OpenShift Container Platform 集群,CCO 需要具有以下特权的凭证:

  • DiskOperator
  • DiskCreator
  • UserTemplateBasedVm
  • TemplateOwner
  • TemplateCreator
  • 在用于 OpenShift Container Platform 部署的特定集群中的 ClusterAdmin

要在 VMware vSphere 上安装 OpenShift Container Platform 集群,CCO 需要具有以下 vSphere 权限的凭证:

表 6.2. 所需的 vSphere 权限

类别权限

数据存储

分配空间

目录

Create folderDelete folder

vSphere 标记

所有权限

网络

分配网络

资源

为资源池分配虚拟机

配置集驱动的存储

所有权限

vApp

所有权限

虚拟机器

所有权限

passthrough 模式凭证维护

如果 credentialsRequest CR 随着集群升级而变化,您必须手动更新 passthrough 模式凭证以满足要求。为了避免升级过程中出现凭证问题,请在升级前检查发行镜像中的 credentialsRequest CR。要找到云供应商所需的 credentialsRequest CR,请参阅为 AWS、Azure 或 GCP 安装的手动创建 IAM 部分。

在安装后减少权限

在使用 passthrough 模式时,每个组件都有相同的权限供所有其他组件使用。如果您在安装后不减少权限,则所有组件都有运行安装程序所需的广泛权限。

安装后,您可以将凭证的权限减少到仅限运行集群所需的权限,这由您正在使用的 OpenShift Container Platform 版本的发行镜像中的 credentialsRequest CR 定义。

要找到 AWS、Azure 或 GCP 所需的 credentialsRequest CR,并了解如何更改 CCO 所用权限,请参阅为 AWS、Azure 或 GCP 手动创建 IAM 的部分。

手动模式

AWS 支持手动模式。

在手动模式中,用户管理云凭证而不是 CCO。要使用此模式,您必须检查发行镜像中用于运行或安装的 OpenShift Container Platform 版本的 credentialsRequest CR,在底层云供应商中创建对应的凭证,并在正确的命名空间中创建 Kubernetes Secret,以满足集群云供应商的所有 credentialsRequest CR。

使用手动模式可允许每个集群组件只拥有所需的权限,而无需在集群中存储管理员级别的凭证。此模式还需要连接到 AWS 公共 IAM 端点。但是,每次升级都必须手动将权限与新发行镜像协调。

有关将 AWS 配置为使用手动模式的详情,请参阅 为 AWS 手动创建 IAM

禁用 CCO

Azure 和 GCP 支持禁用 CCO。

要手动管理 Azure 或 GCP 的凭证,必须禁用 CCO。禁用 CCO 有很多与手动运行 CCO 相同的配置和维护要求,但通过不同的过程完成。如需更多信息,请参阅为 Azure 或 GCP 安装手动创建 IAM 部分。

project

openshift-cloud-credential-operator

CRD

  • credentialsrequests.cloudcredential.openshift.io

    • Scope: Namespaced
    • CR: credentialsrequest
    • Validation: Yes

Configuration objects

不需要配置。