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.20 更新至 4.21)可能会包括集群组件的更新 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>