19.2. 处于 mint 模式的 Cloud Credential Operator
Mint 模式是支持它的 OpenShift Container Platform 的默认 Cloud Credential Operator(CCO)凭证模式。Mint 模式支持 Amazon Web Services (AWS) 和 Google Cloud Platform (GCP) 集群。
19.2.1. Mint 模式凭证管理 复制链接链接已复制到粘贴板!
对于以 mint 模式使用 CCO 的集群,管理员级别的凭证存储在 kube-system
命名空间中。CCO 使用 admin
凭证来处理集群中的 CredentialsRequest
对象,并为具有有限权限的组件创建用户。
使用 mint 模式时,每个集群组件只有其所需的特定权限。云凭证协调是自动且持续进行的,因此组件可以执行需要额外凭证或权限的操作。
例如,一个次版本集群更新(如从 OpenShift Container Platform 4.16 更新至 4.17)可能会包括集群组件的更新 CredentialsRequest
资源。以 mint 模式运行的 CCO,使用 admin
凭证来处理 CredentialsRequest
资源,并创建有限权限的用户来满足更新的身份验证要求。
默认情况下,mint 模式需要将 admin
凭证存储在集群 kube-system
命名空间中。如果此方法不符合您的机构的安全要求,您可以在安装集群后删除凭证。
19.2.1.1. Mint 模式权限要求 复制链接链接已复制到粘贴板!
以 mint 模式使用 CCO 时,请确保您提供的凭证满足运行或安装 OpenShift Container Platform 的云要求。如果提供的凭证不足以满足 mint 模式,则 CCO 无法创建 IAM 用户。
您在 Amazon Web Services (AWS)中为 mint 模式提供的凭证必须具有以下权限:
例 19.1. 所需的 AWS 权限
-
iam:CreateAccessKey
-
iam:CreateUser
-
iam:DeleteAccessKey
-
iam:DeleteUser
-
iam:DeleteUserPolicy
-
iam:GetUser
-
iam:GetUserPolicy
-
iam:ListAccessKeys
-
iam:PutUserPolicy
-
iam:TagUser
-
iam:SimulatePrincipalPolicy
您在 Google Cloud Platform (GCP)中为 mint 模式提供的凭证必须具有以下权限:
例 19.2. 所需的 GCP 权限
-
resourcemanager.projects.get
-
serviceusage.services.list
-
iam.serviceAccountKeys.create
-
iam.serviceAccountKeys.delete
-
iam.serviceAccountKeys.list
-
iam.serviceAccounts.create
-
iam.serviceAccounts.delete
-
iam.serviceAccounts.get
-
iam.roles.create
-
iam.roles.get
-
iam.roles.list
-
iam.roles.undelete
-
iam.roles.update
-
resourcemanager.projects.getIamPolicy
-
resourcemanager.projects.setIamPolicy
19.2.1.2. 管理凭证 root secret 格式 复制链接链接已复制到粘贴板!
每个云供应商都使用 kube-system
命名空间中的一个凭证 root secret,用于满足所有凭证请求并创建它们对应的 secret。这可以通过 mint 新凭证使用 mint 模式 完成,或使用 passthrough 模式 复制凭证 root secret。
secret 的格式因云而异,也用于每个 CredentialsRequest
secret。
Amazon Web Services(AWS)secret 格式
Google Cloud Platform(GCP)secret 格式
19.2.2. 维护云供应商凭证 复制链接链接已复制到粘贴板!
如果因为某种原因更改了云供应商凭证,您必须手动更新 Cloud Credential Operator(CCO)用来管理云供应商凭证的 secret。
轮转云凭证的过程取决于 CCO 配置使用的模式。在为使用 mint 模式的集群轮转凭证后,您必须手动删除由删除凭证创建的组件凭证。
先决条件
您的集群会在支持使用您要使用的 CCO 模式手动轮转云凭证的平台上安装:
- 对于 mint 模式,支持 Amazon Web Services (AWS)和 Google Cloud Platform (GCP)。
- 您已更改了用于与云供应商接口的凭证。
- 新凭证有足够的权限来在集群中使用 CCO 模式。
流程
-
在 web 控制台的 Administrator 视角中,导航到 Workloads
Secrets。 在 Secrets 页面的表中,找到您的云供应商的 root secret。
Expand 平台 Secret 名称 AWS
aws-creds
GCP
gcp-credentials
-
点击与 secret 相同的行
中的 Options 菜单,然后选择 Edit Secret。
- 记录 Value 字段的内容。您可以使用这些信息验证在更新凭证后该值是否不同。
- 使用云供应商的新身份验证信息更新 Value 字段的文本,然后点 Save。
如果集群的 CCO 配置为使用 mint 模式,请删除各个
CredentialsRequest
对象引用的每个组件 secret。-
以具有
cluster-admin
角色的用户身份登录 OpenShift Container Platform CLI。 获取所有引用的组件 secret 的名称和命名空间:
oc -n openshift-cloud-credential-operator get CredentialsRequest \ -o json | jq -r '.items[] | select (.spec.providerSpec.kind=="<provider_spec>") | .spec.secretRef'
$ oc -n openshift-cloud-credential-operator get CredentialsRequest \ -o json | jq -r '.items[] | select (.spec.providerSpec.kind=="<provider_spec>") | .spec.secretRef'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
<provider_spec>
是您的云供应商的对应值:-
AWS:
AWSProviderSpec
-
GCP:
GCPProviderSpec
AWS 输出的部分示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
AWS:
删除每个引用的组件 secret:
oc delete secret <secret_name> \ -n <secret_namespace>
$ oc delete secret <secret_name> \
1 -n <secret_namespace>
2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除 AWS secret 示例
oc delete secret ebs-cloud-credentials -n openshift-cluster-csi-drivers
$ oc delete secret ebs-cloud-credentials -n openshift-cluster-csi-drivers
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您不需要从供应商控制台手动删除凭证。删除引用的组件 secret 将导致 CCO 从平台中删除现有凭证并创建新凭证。
-
以具有
验证
验证凭证是否已更改:
-
在 web 控制台的 Administrator 视角中,导航到 Workloads
Secrets。 - 验证 Value 字段的内容已改变。