Kubernetes 服务账号 (KSA) 为 Pod 中运行的进程提供身份。
Kubernetes 服务账号与应用用于对 Google Cloud API 进行授权调用的 Google Cloud 服务账号不同。
Google Distributed Cloud 使用加密私钥对其颁发给 Pod 的 KSA 令牌进行签名。它在 Pod 向 Kubernetes API 服务器发送请求时,使用相应的公钥验证令牌。当 Pod 使用 Workload Identity 调用 Google Cloud API 时,Google Cloud 会使用同一公钥对 Pod 的身份进行身份验证。
在创建用户集群期间,Google Distributed Cloud 会生成私钥和公钥。此外,在创建集群期间,Google Distributed Cloud 会将集群注册到舰队,并向 Google Cloud 提供公钥。
稍后,您可以轮替私钥/公钥对。轮替会自动颁发由新私钥签名的新令牌。在轮替结束时,集群会出现新的私钥、新的公钥和刷新令牌。此外,Google Cloud 还具有新的公钥。
绑定令牌和旧版令牌
Pod 在调用 Kubernetes API 服务器时可以使用旧版令牌或绑定令牌进行身份验证和授权。绑定令牌的生命周期有限,并使用映射卷分发给 Pod。旧版令牌永不过期,并保留在 Kubernetes Secret 中。我们建议您使用绑定令牌,因为它们更安全。
绑定令牌和旧版令牌在密钥轮替期间都会刷新。
启动密钥轮替
在开始密钥轮替之前,请考虑以下几点:
在密钥轮替期间,您无法开始另一个密钥轮替、证书授权机构轮替或集群更新。
无法暂停或回滚密钥轮替。所有旧密钥都会被删除。
密钥轮替会删除现有集群节点并创建新节点。
如需启动密钥轮替,请执行以下操作:
gkectl update credentials ksa-signing-key rotate \ --config USER_CLUSTER_CONFIG \ --kubeconfig ADMIN_CLUSTER_KUBECONIFG \ [--skip-prompt]
请替换以下内容:
USER_CLUSTER_CONFIG:用户集群配置文件的路径
ADMIN_KUBECONFIG_FILE:管理员集群 kubeconfig 文件的路径
如果您不想收到提示,请添加 --skip-prompt
。
查看密钥轮替的状态
如需查看密钥轮替的状态,请执行以下操作:
gkectl update credentials ksa-signing-key status \ --config USER_CLUSTER_CONFIG \ --kubeconfig ADMIN_CLUSTER_KUBECONIFG
如果密钥轮替已完成,您将看到类似于以下内容的消息:
State of KSASigningKeyRotation with KSASigningKeyVersion 2 is - status: True, reason: KSASigningKeyRotationCompleted, message:{"tokenVersion":2,"privateKeyVersion":2,"publicKeyVersions":[2]}
如果 KSA 签名密钥轮替仍在进行中,您将看到类似于以下内容的消息:
State of KSASigningKeyRotation with KSASigningKeyVersion 2 is - status: False, reason: KSASigningKeyRotationProcessedReason, message:{"tokenVersion":2,"privateKeyVersion":2,"publicKeyVersions":[1,2]}