第 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 配置为在 mint、passthrough 或 manual 模式下操作。这些选项为 CCO 使用云凭证处理集群中的 credentialsRequest CR 提供了透明性和灵活性,并允许配置 CCO 以适应您的机构的安全要求。不是所有 CCO 模式都支持所有云供应商。
- Mint:在 mint 模式中,CCO 使用提供的管理员级云凭证为集群中组件创建新凭证,且只具有所需的特定权限。
- Passthrough:在 passthrough 模式中,CCO 将提供的云凭证传递给请求云凭证的组件。
- 带组件的长期凭证的手动模式 :在手动模式中,您可以管理长期云凭证而不是 CCO。
-
带组件的短期凭证的手动模式 :对于某些供应商,您可以在安装过程中使用 CCO 实用程序 (
ccoctl) 为各个组件实施短期凭证。这些凭证在 OpenShift Container Platform 集群外创建和管理。
| 云供应商 | Mint | Passthrough | 使用长期凭证手动 | 使用短期凭证手动 |
|---|---|---|---|---|
| Alibaba Cloud | X [1] | |||
| Amazon Web Services (AWS) | X | X | X | X |
| Global Microsoft Azure | X | X | X | |
| Microsoft Azure Stack Hub | X | |||
| Google Cloud Platform (GCP) | X | X | X | X |
| IBM Cloud® | X [1] | |||
| Nutanix | X [1] | |||
| Red Hat OpenStack Platform (RHOSP) | X | |||
| VMware vSphere | X |
-
此平台在安装过程中使用
ccoctl工具配置长期凭证。
19.1.2. 确定 Cloud Credential Operator 模式 复制链接链接已复制到粘贴板!
对于支持多个模式中使用 CCO 的平台,您可以使用 Web 控制台或 CLI 确定 CCO 要使用的模式。
图 19.1. 确定 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 帐户。
流程
-
以具有
cluster-admin角色的用户身份登录到 OpenShift Container Platform web 控制台。 -
导航至 Administration
Cluster Settings。 - 在 Cluster Settings 页面中,选择 Configuration 选项卡。
- 在 Configuration resource 下,选择 CloudCredential。
- 在 CloudCredential 详情页中,选择 YAML 选项卡。
在 YAML 块中,检查
spec.credentialsMode的值。以下是可能的值,但它们可能并不会在所有平台上都被支持:-
'':CCO 在默认模式下运行。在这个配置中,CCO 以 mint 或 passthrough 模式运行,具体取决于安装期间提供的凭证。 -
Mint:CCO 在 mint 模式中运行。 -
Passthrough:CCO 在 passthrough 模式运行。 -
Manual:CCO 以手动模式运行。
重要要确定 AWS、GCP 或全局 Microsoft Azure 集群的特定配置,其
spec.credentialsMode为''、Mint或Manual,您必须进一步调查。AWS 和 GCP 集群支持使用删除了 root secret 的 mint 模式。
使用手动模式的 AWS、GCP 或全局 Microsoft Azure 集群可能会被配置为从使用 AWS STS、GCP Workload Identity 或 Microsoft Entra Workload ID 的集群外部创建和管理云凭证。您可以通过检查集群
Authentication对象来确定集群是否使用了此策略。-
仅使用默认 (
'') 的 AWS 或 GCP 集群 :要确定集群是否处于 mint 还是 passthrough 模式运行,请检查集群 root secret 上的注解:进入到 Workloads
Secrets,再查找云供应商的 root secret。 注意确保将 项目 下拉菜单设置为 All Projects。
Expand 平台 Secret 名称 AWS
aws-credsGCP
gcp-credentials要查看集群正在使用的 CCO 模式,请点 Annotations 下的
1 注解,并检查 value 字段。可能会有以下值:-
Mint:CCO 在 mint 模式中运行。 -
Passthrough:CCO 在 passthrough 模式运行。
如果您的集群使用 mint 模式,您也可以确定集群是否在没有 root secret 的情况下运行。
-
只使用 mint 模式的 AWS 或 GCP 集群:要确定集群是否在没有 root secret 的情况下运行,请进入到 Workloads
Secrets 并为您的云供应商查找 root secret。 注意确保将 项目 下拉菜单设置为 All Projects。
Expand 平台 Secret 名称 AWS
aws-credsGCP
gcp-credentials- 如果您看到这些值之一,您的集群将使用 mint 或 passthrough 模式,并带有 root secret。
- 如果没有看到这些值,您的集群将以 mint 模式使用 CCO,并删除 root secret。
仅使用手动模式的 AWS、GCP 或全局 Microsoft Azure 集群 :要确定集群是否被配置为从集群外部创建和管理云凭证,您必须检查集群
Authentication对象 YAML 值。-
导航至 Administration
Cluster Settings。 - 在 Cluster Settings 页面中,选择 Configuration 选项卡。
- 在 Configuration resource 下,选择 Authentication。
- 在 Authentication details 页面中,选择 YAML 选项卡。
在 YAML 块中,检查
.spec.serviceAccountIssuer参数的值。-
包含与云供应商关联的 URL 的值表示 CCO 使用手动模式和组件的短期凭证。集群被配置为使用
ccoctl实用程序从集群外创建和管理云凭证。 -
空值 (
'') 表示集群在手动模式中使用 CCO,但没有使用ccoctl工具进行配置。
-
包含与云供应商关联的 URL 的值表示 CCO 使用手动模式和组件的短期凭证。集群被配置为使用
-
导航至 Administration
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)。
流程
-
以具有
cluster-admin角色的用户身份登录到集群中的oc。 要确定 CCO 被配置为使用的模式,请输入以下命令:
oc get cloudcredentials cluster \ -o=jsonpath={.spec.credentialsMode}$ oc get cloudcredentials cluster \ -o=jsonpath={.spec.credentialsMode}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下输出值可能,但并非所有平台上都不支持所有值:
-
'':CCO 在默认模式下运行。在这个配置中,CCO 以 mint 或 passthrough 模式运行,具体取决于安装期间提供的凭证。 -
Mint:CCO 在 mint 模式中运行。 -
Passthrough:CCO 在 passthrough 模式运行。 -
Manual:CCO 以手动模式运行。
重要要确定 AWS、GCP 或全局 Microsoft Azure 集群的特定配置,其
spec.credentialsMode为''、Mint或Manual,您必须进一步调查。AWS 和 GCP 集群支持使用删除了 root secret 的 mint 模式。
使用手动模式的 AWS、GCP 或全局 Microsoft Azure 集群可能会被配置为从使用 AWS STS、GCP Workload Identity 或 Microsoft Entra Workload ID 的集群外部创建和管理云凭证。您可以通过检查集群
Authentication对象来确定集群是否使用了此策略。-
仅使用默认 (
'') 的 AWS 或 GCP 集群 :要确定集群是否以 mint 还是 passthrough 模式运行,请运行以下命令:oc get secret <secret_name> \ -n kube-system \ -o jsonpath \ --template '{ .metadata.annotations }'$ oc get secret <secret_name> \ -n kube-system \ -o jsonpath \ --template '{ .metadata.annotations }'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
<secret_name>是 AWS 的aws-creds或 GCP 的gcp-credentials。此命令显示集群 root secret 对象中
.metadata.annotations参数的值。可能会有以下输出值:-
Mint:CCO 在 mint 模式中运行。 -
Passthrough:CCO 在 passthrough 模式运行。
如果您的集群使用 mint 模式,您也可以确定集群是否在没有 root secret 的情况下运行。
-
仅使用 mint 模式的 AWS 或 GCP 集群:要确定集群是否在没有 root secret 的情况下运行,请运行以下命令:
oc get secret <secret_name> \ -n=kube-system
$ oc get secret <secret_name> \ -n=kube-systemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
<secret_name>是 AWS 的aws-creds或 GCP 的gcp-credentials。如果存在 root secret,这个命令的输出会返回有关 secret 的信息。错误表示集群中不存在 root secret。
仅使用手动模式的 AWS、GCP 或全局 Microsoft Azure 集群:要确定集群是否被配置为从集群外部创建和管理云凭证,请运行以下命令:
oc get authentication cluster \ -o jsonpath \ --template='{ .spec.serviceAccountIssuer }'$ oc get authentication cluster \ -o jsonpath \ --template='{ .spec.serviceAccountIssuer }'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令显示集群
Authentication对象中.spec.serviceAccountIssuer参数的值。-
与云供应商关联的 URL 的输出表示 CCO 使用手动模式和组件的短期凭证。集群被配置为使用
ccoctl实用程序从集群外创建和管理云凭证。 -
空输出表示集群以手动模式使用 CCO,但没有使用
ccoctl工具进行配置。
-
与云供应商关联的 URL 的输出表示 CCO 使用手动模式和组件的短期凭证。集群被配置为使用
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。另外,您可以将集群配置为使用云供应商支持的不同的 CCO 模式。