×

薄荷模式是支持它的平台上 OpenShift Container Platform 的默认云凭据操作符 (CCO) 凭据模式。薄荷模式支持 Amazon Web Services (AWS) 和 Google Cloud Platform (GCP) 集群。

薄荷模式凭据管理

对于使用薄荷模式下的 CCO 的集群,管理员级凭据存储在kube-system命名空间中。CCO 使用admin凭据处理集群中的CredentialsRequest对象并为具有有限权限的组件创建用户。

使用薄荷模式,每个集群组件只有其所需的特定权限。云凭据协调是自动且持续的,以便组件可以执行需要额外凭据或权限的操作。

例如,次要版本集群更新(例如从 OpenShift Container Platform 4.16 更新到 4.17)可能包含集群组件的更新的CredentialsRequest资源。在薄荷模式下运行的 CCO 使用admin凭据处理CredentialsRequest资源并创建具有有限权限的用户以满足更新的身份验证要求。

默认情况下,薄荷模式要求将admin凭据存储在集群kube-system命名空间中。如果这种方法不符合您组织的安全要求,您可以在安装集群后删除凭据

薄荷模式权限要求

在薄荷模式下使用 CCO 时,请确保您提供的凭据满足您在其上运行或安装 OpenShift Container Platform 的云的要求。如果提供的凭据不足以用于薄荷模式,则 CCO 无法创建 IAM 用户。

您为 Amazon Web Services (AWS) 中的薄荷模式提供的凭据必须具有以下权限

必需的 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) 中的薄荷模式提供的凭据必须具有以下权限

必需的 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

管理员凭据根密钥格式

按照惯例,每个云提供商都在kube-system命名空间中使用凭据根密钥,然后使用该密钥满足所有凭据请求并创建各自的密钥。这可以通过使用密钥生成模式生成新凭据来完成,也可以通过使用直通模式复制凭据根密钥来完成。

密钥的格式因云提供商而异,并且也用于每个CredentialsRequest密钥。

Amazon Web Services (AWS) 密钥格式
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 Platform (GCP) 密钥格式
apiVersion: v1
kind: Secret
metadata:
  namespace: kube-system
  name: gcp-credentials
stringData:
  service_account.json: <base64-encoded_service_account>

维护云提供商凭据

如果您的云提供商凭据因任何原因发生更改,您必须手动更新云凭据操作员 (CCO) 用于管理云提供商凭据的密钥。

旋转云凭据的过程取决于 CCO 配置为使用的模式。在您为使用密钥生成模式的集群旋转凭据后,您必须手动删除由已删除凭据创建的组件凭据。

先决条件
  • 您的集群安装在支持使用您正在使用的 CCO 模式手动旋转云凭据的平台上。

    • 对于密钥生成模式,支持 Amazon Web Services (AWS) 和 Google Cloud Platform (GCP)。

  • 您已更改用于与云提供商交互的凭据。

  • 新凭据具有 CCO 在您的集群中配置为使用的模式所需的足够权限。

步骤
  1. 在 Web 控制台的**管理员**视角中,导航到**工作负载**→**密钥**。

  2. 在**密钥**页面上的表格中,找到您的云提供商的根密钥。

    平台 密钥名称

    AWS

    aws-creds

    GCP

    gcp-credentials

  3. 单击与密钥位于同一行的选项菜单kebab,然后选择**编辑密钥**。

  4. 记录**值**字段或多个字段的内容。您可以使用此信息来验证在更新凭据后值是否不同。

  5. 使用云提供商的新身份验证信息更新**值**字段或多个字段中的文本,然后单击**保存**。

  6. 删除各个CredentialsRequest对象引用的每个组件密钥。

    1. 以具有cluster-admin角色的用户身份登录到 OpenShift Container Platform CLI。

    2. 获取所有引用的组件密钥的名称和命名空间

      $ 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

      • GCP:GCPProviderSpec

      AWS 的部分示例输出
      {
        "name": "ebs-cloud-credentials",
        "namespace": "openshift-cluster-csi-drivers"
      }
      {
        "name": "cloud-credential-operator-iam-ro-creds",
        "namespace": "openshift-cloud-credential-operator"
      }
    3. 删除每个引用的组件密钥

      $ oc delete secret <secret_name> \(1)
        -n <secret_namespace> (2)
      1 指定密钥的名称。
      2 指定包含密钥的命名空间。
      AWS 密钥删除示例
      $ oc delete secret ebs-cloud-credentials -n openshift-cluster-csi-drivers

      您不需要手动从您的提供商控制台中删除凭据。删除引用的组件密钥将导致 CCO 从平台中删除现有凭据并创建新的凭据。

验证

要验证凭据是否已更改

  1. 在 Web 控制台的**管理员**视角中,导航到**工作负载**→**密钥**。

  2. 验证**值**字段或多个字段的内容是否已更改。