第 7 章 准备使用手动维护的凭证更新集群
默认情况下,带有手动维护凭证的集群的 Cloud Credential Operator(CCO)U gradable
状态为 False
。
-
对于次发行版本(例如从 4.10 升级到 4.11),这个状态会阻止升级,直到您解决了任何更新的权限并
添加了 CloudCredential
资源,以指示下一版本根据需要更新权限。此注解将Upgradable
状态更改为True
。 - 对于 z-stream 版本(例如从 4.10.0 到 4.10.1),没有添加或更改任何权限,因此不会阻止升级。
在使用手动维护的凭证更新集群前,您必须在要升级到的 OpenShift Container Platform 版本的发行镜像中包含任何新的或更改的凭证。
7.1. 使用手动维护的凭证更新集群的要求
在通过 Cloud Credential Operator (CCO) 更新使用手动维护凭证的集群前,您必须为新版本更新云供应商资源。
如果使用 CCO 实用程序 (ccoctl
) 配置集群的云凭证管理,请使用 ccoctl
实用程序更新资源。配置为在没有 ccoctl
工具的情况下使用手动模式的集群需要手动更新资源。
更新云供应商资源后,您必须更新集群的 upgradeable-to
注解,以指示它已准备好更新。
更新云供应商资源和 upgradeable-to
注解的过程只能通过命令行工具完成。
7.1.1. 云凭证配置选项并根据平台类型更新要求
有些平台只支持在一个模式中使用 CCO。对于在这些平台上安装的集群,平台类型决定了凭证更新要求。
对于支持多个模式中使用 CCO 的平台,您必须确定集群配置为使用哪种模式,并对该配置执行所需操作。
图 7.1. 按平台类型进行凭证更新要求
- Red Hat OpenStack Platform (RHOSP)、Red Hat Virtualization (RHV)和 VMware vSphere
这些平台不支持在手动模式中使用 CCO。这些平台上的集群会自动处理云供应商资源的更改,不需要对
upgradeable-to
的注解进行更新。这些平台上的集群管理员应该跳过更新过程的手动维护凭证部分。
- Alibaba Cloud 和 IBM Cloud
在这些平台上安装的集群使用
ccoctl
工具进行配置。这些平台上的集群管理员必须执行以下操作:
-
为新版本配置
ccoctl
工具。 -
使用
ccoctl
实用程序更新云供应商资源。 -
指明集群可以使用
upgradeable-to
注解进行更新。
-
为新版本配置
- Microsoft Azure Stack Hub
这些集群使用带有长期凭证的手动模式,且不使用
ccoctl
工具。这些平台上的集群管理员必须执行以下操作:
- 为新版本手动更新云供应商资源。
-
指明集群可以使用
upgradeable-to
注解进行更新。
- Amazon Web Services (AWS)、全局 Microsoft Azure 和 Google Cloud Platform (GCP)
在这些平台上安装的集群支持多个 CCO 模式。
所需的更新过程取决于集群配置为使用的模式。如果您不确定 CCO 在集群中要使用的模式,您可以使用 Web 控制台或 CLI 来决定此信息。
7.1.2. 使用 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 集群的特定配置,其
spec.credentialsMode
为''
,Mint
, 或Manual
,您必须进一步调查。AWS 和 GCP 集群支持使用删除了 root secret 的 mint 模式。如果集群被特别配置为使用 mint 模式或默认使用 mint 模式,则必须在更新前确定集群中是否存在 root secret。
使用手动模式的 AWS 或 GCP 集群可能会被配置为使用 AWS 安全令牌服务 (STS) 或 GCP Workload Identity 从集群外部创建和管理云凭证。您可以通过检查集群
Authentication
对象来确定集群是否使用了此策略。-
只使用 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。
只使用手动模式的 AWS 或 GCP 集群 :要确定集群是否被配置为从集群外创建和管理云凭证,您必须检查 cluster
Authentication
对象 YAML 值。-
导航至 Administration
Cluster Settings。 - 在 Cluster Settings 页面中,选择 Configuration 选项卡。
- 在 Configuration resource 下,选择 Authentication。
- 在 Authentication details 页面中,选择 YAML 选项卡。
在 YAML 块中,检查
.spec.serviceAccountIssuer
参数的值。-
包含与云供应商关联的 URL 的值表示 CCO 在 AWS STS 或 GCP Workload Identity 中使用手动模式从集群外部创建和管理云凭证。这些集群使用
ccoctl
工具进行配置。 -
空值 (
''
) 表示集群在手动模式中使用 CCO,但没有使用ccoctl
工具进行配置。
-
包含与云供应商关联的 URL 的值表示 CCO 在 AWS STS 或 GCP Workload Identity 中使用手动模式从集群外部创建和管理云凭证。这些集群使用
-
导航至 Administration
后续步骤
- 如果您要更新以 mint 或 passthrough 模式运行的 CCO 的集群,且存在 root secret,则不需要更新任何云供应商资源,并可以继续进入更新过程的下一部分。
- 如果您的集群在 mint 模式中使用删除了 root secret 的 CCO,则必须重新使用管理员级别的凭证重新恢复凭证 secret,然后才能继续更新过程的下一部分。
如果您的集群使用 CCO 实用程序 (
ccoctl
) 配置,您必须执行以下操作:-
为新版本配置
ccoctl
工具,并使用它来更新云供应商资源。 -
更新
upgradeable-to
注解,以指示集群已准备好更新。
-
为新版本配置
如果您的集群以手动模式使用 CCO,但没有使用
ccoctl
工具配置,则必须执行以下操作:- 为新版本手动更新云供应商资源。
-
更新
upgradeable-to
注解,以指示集群已准备好更新。
7.1.3. 使用 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}
以下输出值可能,但并非所有平台上都不支持所有值:
-
''
:CCO 在默认模式下运行。在这个配置中,CCO 以 mint 或 passthrough 模式运行,具体取决于安装期间提供的凭证。 -
Mint
:CCO 在 mint 模式中运行。 -
Passthrough
:CCO 在 passthrough 模式运行。 -
Manual
:CCO 以手动模式运行。
重要要确定 AWS 或 GCP 集群的特定配置,其
spec.credentialsMode
为''
,Mint
, 或Manual
,您必须进一步调查。AWS 和 GCP 集群支持使用删除了 root secret 的 mint 模式。如果集群被特别配置为使用 mint 模式或默认使用 mint 模式,则必须在更新前确定集群中是否存在 root secret。
使用手动模式的 AWS 或 GCP 集群可能会被配置为使用 AWS 安全令牌服务 (STS) 或 GCP Workload Identity 从集群外部创建和管理云凭证。您可以通过检查集群
Authentication
对象来确定集群是否使用了此策略。-
仅使用 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。
仅使用手动模式的 AWS 或 GCP 集群 :要确定集群是否被配置为从集群外部创建和管理云凭证,请运行以下命令:
$ oc get authentication cluster \ -o jsonpath \ --template='{ .spec.serviceAccountIssuer }'
此命令显示集群
Authentication
对象中.spec.serviceAccountIssuer
参数的值。-
包含与云供应商关联的 URL 的输出表示 CCO 在 AWS STS 或 GCP Workload Identity 中使用手动模式从集群外部创建和管理云凭证。这些集群使用
ccoctl
工具进行配置。 -
空输出表示集群以手动模式使用 CCO,但没有使用
ccoctl
工具进行配置。
-
包含与云供应商关联的 URL 的输出表示 CCO 在 AWS STS 或 GCP Workload Identity 中使用手动模式从集群外部创建和管理云凭证。这些集群使用
后续步骤
- 如果您要更新以 mint 或 passthrough 模式运行的 CCO 的集群,且存在 root secret,则不需要更新任何云供应商资源,并可以继续进入更新过程的下一部分。
- 如果您的集群在 mint 模式中使用删除了 root secret 的 CCO,则必须重新使用管理员级别的凭证重新恢复凭证 secret,然后才能继续更新过程的下一部分。
如果您的集群使用 CCO 实用程序 (
ccoctl
) 配置,您必须执行以下操作:-
为新版本配置
ccoctl
工具,并使用它来更新云供应商资源。 -
更新
upgradeable-to
注解,以指示集群已准备好更新。
-
为新版本配置
如果您的集群以手动模式使用 CCO,但没有使用
ccoctl
工具配置,则必须执行以下操作:- 为新版本手动更新云供应商资源。
-
更新
upgradeable-to
注解,以指示集群已准备好更新。