本页面介绍如何轮替以下服务账号的密钥:
如需轮替您的服务账号密钥,请执行以下操作:
- 创建用于存储当前 Secret 备份的目录: - mkdir backup 
- 请注意相关服务账号的以下信息: - 组件访问权限 - 集群 - Secret - 命名空间 - 管理员 - 管理员集群凭据 - kube-system - 管理员 - user-cluster-creds - CLUSTER_NAME-gke-onprem-mgmt - 管理员 - private-registry-creds - kube-system - 用户 - private-registry-creds - kube-system - 如果您不使用私有注册表,则 private-registry-credsSecret 会存储组件访问服务账号密钥。
- 如果您使用私有注册表,则 private-registry-credsSecret 会存储私有注册表的凭据,而不是组件访问服务账号密钥。
 - Connect-register - 集群 - Secret - 命名空间 - 管理员 - 管理员集群凭据 - kube-system - 管理员 - user-cluster-creds - CLUSTER_NAME-gke-onprem-mgmt - Logging-monitoring - 集群 - Secret - 命名空间 - 管理员 - 管理员集群凭据 - kube-system - 管理员 - user-cluster-creds - CLUSTER_NAME-gke-onprem-mgmt - 用户 - google-cloud-credentials - kube-system - 用户 - stackdriver-service-account-key - knative-serving - 审核日志记录 - 集群 - Secret - 命名空间 - 管理员 - 管理员集群凭据 - kube-system - 管理员 - user-cluster-creds - CLUSTER_NAME-gke-onprem-mgmt - 管理员 - kube-apiserver - CLUSTER_NAME - Stackdriver - 集群 - Secret - 命名空间 - 管理员 - 管理员集群凭据 - kube-system - 管理员 - user-cluster-creds - CLUSTER_NAME-gke-onprem-mgmt - 用户 - google-cloud-credentials - kube-system - 用户 - stackdriver-service-account-key - knative-serving 
- 如果您不使用私有注册表,则 
- 使用以下命令为每个 Secret 创建备份: - kubectl get secret SECRET --namespace NAMESPACE \ --kubeconfig KUBECONFIG -o json > backup/SECRET-NAMESPACE.json- 替换以下内容: - NAMESPACE:Secret 所在的命名空间。例如- kube-system。
- KUBECONFIG:管理员集群或用户集群的 kubeconfig 文件的路径。
- SECRET:Secret 的名称。例如- admin-cluster-creds。
 - 例如,为审核日志服务账号运行以下命令: - kubectl get secret admin-cluster-creds --namespace kube-system \ --kubeconfig KUBECONFIG -o json > backup/admin-cluster-creds-kube-system.json kubectl get secret user-cluster-creds --namespace NAMESPACE \ --kubeconfig KUBECONFIG -o json > backup/user-cluster-creds-NAMESPACE.json kubectl get secret kube-apiserver --namespace NAMESPACE \ --kubeconfig KUBECONFIG -o json > backup/kube-apiserver-NAMESPACE.json
- 如需创建新的服务账号密钥文件,请运行以下命令: - gcloud iam service-accounts keys create NEW_KEY_FILE --iam-account IAM_ACCOUNT - 替换以下内容: - NEW_KEY_FILE:新的服务账号密钥文件的名称
- IAM_ACCOUNT:服务账号的电子邮件地址
 
- 在管理员集群配置文件中,找到 - componentAccessServiceAccountKeyPath字段、- gkeConnect部分、- stackdriver部分和- cloudAuditLogging部分。在这些位置,替换服务账号密钥文件的路径。
- 在用户集群配置文件中,找到 - componentAccessServiceAccountKeyPath字段、- gkeConnect部分、- stackdriver部分和- cloudAudigLogging部分。在这些位置,替换服务账号密钥文件的路径。
- 运行以下命令,保存您所做的更改: - 您可以一次为一个组件轮替密钥,也可以将组件设置为 - sakeys以一次旋转轮替密钥。- gkectl update credentials COMPONENT \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config ADMIN_CLUSTER_CONFIG \ --admin-cluster gkectl update credentials COMPONENT \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG- 替换以下内容: - COMPONENT:以下各项中的一项:- componentaccess
- register
- cloudauditlogging
- stackdriver
- sakeys(轮替所有组件密钥)
 
- ADMIN_CLUSTER_KUBECONFIG:管理员集群的 kubeconfig 文件的路径。
- ADMIN_CLUSTER_CONFIG:管理员集群配置文件的路径。
- USER_CLUSTER_CONFIG:用户集群配置文件的路径。
 
节点重新创建
某些服务账号密钥轮替操作可能需要更长时间,因为需要重新创建节点:
| 服务账号 | 需要重新创建节点 | 
|---|---|
| 组件访问权限 | 如果使用的是 Artifact Registry:是 如果使用的是私有注册数据库:否 | 
| 审核日志记录 | 管理员集群:是,但仅限控制平面节点 使用 kubeception 的用户集群:否 使用 Controlplane V2 的用户集群:是,但仅限控制平面节点 | 
| Logging-monitoring | 否 | 
| Connect-register | 否 | 
对于需要重新创建节点的密钥轮替,系统会在滚动更新过程中替换节点;也就是说,系统会逐个重新创建节点。
密钥轮替期间可能出现的停机时间与集群升级期间的停机时间类似。如需了解详情,请参阅升级过程中的停机时间。
恢复备份
如果您需要恢复之前创建的 Secret 的备份,请运行以下命令:
kubectl apply -f backup/
轮替服务账号密钥方面的高级集群差异
只有高级集群部分支持 gkectl update credentials 命令。下表列出了支持和不支持的命令变体:
| 命令 | 说明 | 支持 | 
|---|---|---|
| gkectl update credentials certificate-authorities rotate | 轮替证书授权机构 | 支持 | 
| gkectl update credentials certificate-authorities status | (预览版)查看证书授权机构变换状态。 | 支持 | 
| gkectl update credentials certificate-authorities update-kubeconfig | 下载具有最新客户端证书的 kubeconfig 文件。 | 支持 | 
| gkectl update credentials cloudauditlogging | 更新 Cloud Audit Logs 凭证。 | 不支持 | 
| gkectl update credentials componentaccess | 为使用 Google Distributed Cloud for VMware 创建的集群更新组件访问服务账号密钥凭证。 | 支持 | 
| gkectl update credentials f5bigip | 更新 F5 BIG-IP 负载均衡器凭证。 | 不需要 | 
| gkectl update credentials ksa-signing-key rotate | 轮替 Kubernetes 服务账号 (KSA) 令牌签名密钥。 | 不支持 | 
| gkectl update credentials ksa-signing-key status | 查看正在进行的 KSA 令牌签名密钥轮替的状态。 | 不支持 | 
| gkectl update credentials | 更新集群凭据 | 支持 | 
| gkectl update credentials privateregistry | 为集群更新私有注册数据库凭证。 | 支持 | 
| gkectl update credentials register | 更新注册服务账号密钥凭证。 | 支持 | 
| gkectl update credentials sakeys | 更新集群的服务账号密钥凭证。 | 支持 | 
| gkectl update credentials stackdriver | (预览版)更新 Google Cloud Observability 凭证。 | 支持 | 
| gkectl update credentials vsphere | 更新集群的 vSphere 凭证。 | 支持 | 
如需全面了解高级集群支持或不支持的 Google Distributed Cloud for VMware 特性和功能,请参阅运行高级集群时的差异。