20.2. 处于 mint 模式的 Cloud Credential Operator
Mint 模式是支持它的 OpenShift Container Platform 的默认 Cloud Credential Operator(CCO)凭证模式。Mint 模式支持 Amazon Web Services (AWS) 和 Google Cloud 集群。
20.2.1. Mint 模式凭证管理 复制链接链接已复制到粘贴板!
对于以 mint 模式使用 CCO 的集群,管理员级别的凭证存储在 kube-system 命名空间中。CCO 使用 admin 凭证来处理集群中的 CredentialsRequest 对象,并为具有有限权限的组件创建用户。
使用 mint 模式时,每个集群组件只有其所需的特定权限。云凭证协调是自动且持续进行的,因此组件可以执行需要额外凭证或权限的操作。
例如,一个次版本集群更新(如从 OpenShift Container Platform 4.19 更新至 4.20)可能会包括集群组件的更新 CredentialsRequest 资源。以 mint 模式运行的 CCO,使用 admin 凭证来处理 CredentialsRequest 资源,并创建有限权限的用户来满足更新的身份验证要求。
默认情况下,mint 模式需要将 admin 凭证存储在集群 kube-system 命名空间中。如果此方法不符合您的机构的安全要求,您可以在安装集群后删除凭证。
20.2.1.1. Mint 模式权限要求 复制链接链接已复制到粘贴板!
以 mint 模式使用 CCO 时,请确保您提供的凭证满足运行或安装 OpenShift Container Platform 的云要求。如果提供的凭证不足以满足 mint 模式,则 CCO 无法创建 IAM 用户。
您在 Amazon Web Services (AWS)中为 mint 模式提供的凭证必须具有以下权限:
例 20.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 中为 mint 模式提供的凭证必须具有以下权限:
例 20.2. 所需的 Google Cloud 权限
-
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
20.2.1.2. 管理凭证 root secret 格式 复制链接链接已复制到粘贴板!
每个云供应商都使用 kube-system 命名空间中的一个凭证 root secret,用于满足所有凭证请求并创建它们对应的 secret。这可以通过 mint 新凭证使用 mint 模式 完成,或使用 passthrough 模式 复制凭证 root secret。
secret 的格式因云而异,也用于每个 CredentialsRequest secret。
Amazon Web Services(AWS)secret 格式
apiVersion: v1
kind: Secret
metadata:
namespace: kube-system
name: aws-creds
stringData:
aws_access_key_id: <base64-encoded_access_key_id>
aws_secret_access_key: <base64-encoded_secret_access_key>
Google Cloud secret 格式
apiVersion: v1
kind: Secret
metadata:
namespace: kube-system
name: gcp-credentials
stringData:
service_account.json: <base64-encoded_service_account>
20.2.2. 维护云供应商凭证 复制链接链接已复制到粘贴板!
如果因为某种原因更改了云供应商凭证,您必须手动更新 Cloud Credential Operator(CCO)用来管理云供应商凭证的 secret。
轮转云凭证的过程取决于 CCO 配置使用的模式。在为使用 mint 模式的集群轮转凭证后,您必须手动删除由删除凭证创建的组件凭证。
先决条件
您的集群会在支持使用您要使用的 CCO 模式手动轮转云凭证的平台上安装:
- 对于 mint 模式,支持 Amazon Web Services (AWS) 和 Google Cloud。
- 您已更改了用于与云供应商接口的凭证。
- 新凭证有足够的权限来在集群中使用 CCO 模式。
流程
-
在 web 控制台的 Administrator 视角中,导航到 Workloads
Secrets。 在 Secrets 页面的表中,找到您的云供应商的 root secret。
Expand 平台 Secret 名称 AWS
aws-credsGoogle Cloud
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'其中
<provider_spec>是您的云供应商的对应值:-
AWS:
AWSProviderSpec -
Google Cloud:
GCPProviderSpec
AWS 输出的部分示例
{ "name": "ebs-cloud-credentials", "namespace": "openshift-cluster-csi-drivers" } { "name": "cloud-credential-operator-iam-ro-creds", "namespace": "openshift-cloud-credential-operator" }-
AWS:
删除每个引用的组件 secret:
$ oc delete secret <secret_name> \1 -n <secret_namespace>2 删除 AWS secret 示例
$ oc delete secret ebs-cloud-credentials -n openshift-cluster-csi-drivers您不需要从供应商控制台手动删除凭证。删除引用的组件 secret 将导致 CCO 从平台中删除现有凭证并创建新凭证。
-
以具有
验证
验证凭证是否已更改:
-
在 web 控制台的 Administrator 视角中,导航到 Workloads
Secrets。 - 验证 Value 字段的内容已改变。