轮替集群凭据

本页面介绍如何在 Google Kubernetes Engine (GKE) 中执行凭据轮替。

概览

您可以执行凭据轮替以便为集群撤消凭据并颁发新凭据。这样会轮替集群根证书授权机构 (CA) 私钥,以及由该 CA 签署的所有证书和私钥,包括集群客户端证书(来自 MasterAuth API)字段)、API 服务器的密钥和证书以及 kubelet 客户端证书。请参阅集群信任,详细了解如何在集群内使用这些凭据。

Google 建议您定期使用凭据轮替来缩短凭据生命周期并进一步保护您的 GKE 集群。 这些凭据不会自动轮替。

除轮替凭据外,凭据轮替还执行 IP 轮替。

准备工作

在开始之前,请确保您已执行以下任务:

使用以下任一方法设定默认的 gcloud 设置:

  • 使用 gcloud init(如果您想要在系统引导下完成默认设置)。
  • 使用 gcloud config(如果您想单独设置项目 ID、区域和地区)。

使用 gcloud init

如果您收到 One of [--zone, --region] must be supplied: Please specify location 错误,请完成本部分。

  1. 运行 gcloud init 并按照说明操作:

    gcloud init

    如果您要在远程服务器上使用 SSH,请使用 --console-only 标志来防止命令启动浏览器:

    gcloud init --console-only
  2. 按照说明授权 gcloud 使用您的 Google Cloud 帐号。
  3. 创建新配置或选择现有配置。
  4. 选择 Google Cloud 项目。
  5. 为可用区级集群选择默认 Compute Engine 可用区,或为区域级集群或 Autopilot 集群选择区域。

使用 gcloud config

  • 设置默认项目 ID
    gcloud config set project PROJECT_ID
  • 如果您使用的是可用区级集群,请设置默认计算可用区
    gcloud config set compute/zone COMPUTE_ZONE
  • 如果您使用的是 Autopilot 集群或区域级集群,请设置默认计算区域
    gcloud config set compute/region COMPUTE_REGION
  • gcloud 更新到最新版本:
    gcloud components update

凭据轮替的工作方式

凭据轮替是一个多步骤流程,其中包含迁移到新 IP 地址这一环节:

  • 当您启动凭据轮替时,除了原始 IP 地址,集群控制层面(主实例)还会开始通过新 IP 地址提供服务。新凭据会颁发给工作负载和控制层面。
  • 启动轮替后,您必须更新集群的 API 客户端(例如使用 kubectl 命令行界面的开发机器)才能开始通过新 IP 地址与控制层面通信。
  • 完成轮替后,控制层面会停止通过旧 IP 地址处理流量,并且旧凭据会被撤消。

执行凭据轮替

以下部分介绍如何执行凭据轮替。

启动轮替

要启动凭据轮替,请运行以下 gcloud 命令,该命令会创建新凭据并将其颁发给控制层面。此命令还会将控制层面配置为通过两个 IP 地址(原始 IP 地址和新 IP 地址)提供服务。

gcloud container clusters update cluster-name --start-credential-rotation

重新配置控制层面后,GKE 会自动更新集群的节点以使用新 IP 地址和凭据。每个节点池都会标记为“需要重新创建”。只有在自动重新创建完成之后,GKE 才会结束凭据轮替。

检查轮替

要启动轮替操作,请运行以下命令:

gcloud container operations list | grep "AUTO_UPGRADE_NODES.*RUNNING"

此命令返回更新操作的操作 ID

要轮询操作,请将操作 ID 传递给以下命令:

gcloud container operations wait operation-id

节点池会逐一重新创建,并且每个节点池都有自己的操作。如果您有多个节点池,则可以使用上述说明轮询每个操作。

更新 API 客户端

启动凭据轮替后,您必须更新集群外的所有 API 客户端(例如开发者机器上的 kubectl)才能使用新凭据。

要更新 API 客户端,请为每个客户端运行以下命令:

gcloud container clusters get-credentials cluster-name

完成轮替

要完成轮替,请运行以下命令,将控制层面配置为仅通过新凭据提供服务:

gcloud container clusters update cluster-name --complete-credential-rotation

后续步骤