本页面介绍如何轮替以下服务账号的密钥:
如需轮替您的服务账号密钥,请执行以下操作:
创建用于存储当前 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-creds
Secret 会包含您的组件访问服务帐号的密钥。 - 如果您使用私有注册表,则
private-registry-creds
Secret 会存储私有注册表的凭据,而不是组件访问服务账号密钥。
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 用量计量
集群 Secret 命名空间 管理 user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt 用户 usage-metering-bigquery-service-account-key kube-system 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
部分以及usageMetering
部分。在这些位置,替换服务账号密钥文件的路径。运行以下命令以保存您所做的更改。您可以一次轮替一个组件的密钥,也可以通过将组件设置为
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
usagemetering
stackdriver
sakeys
(轮替多个组件的密钥。)
ADMIN_CLUSTER_KUBECONFIG
:管理员集群的 kubeconfig 文件的路径。ADMIN_CLUSTER_CONFIG
:管理员集群配置文件的路径。USER_CLUSTER_CONFIG
:用户集群配置文件的路径。
重新创建节点
某些服务帐号密钥轮替可能需要更长时间,因为需要重新创建节点:
服务账号 | 需要重新创建节点 |
---|---|
组件访问权限 | 如果使用 Container Registry:是 如果使用私有注册表:否 |
审核日志记录 | 管理员集群:是 已启用 Contrlplane V2 的用户集群:是,但仅限控制平面节点 |
Logging-monitoring | 否 |
Connect-register | 否 |
用量计量 | 否 |
对于需要重新创建节点的密钥轮替,节点会在滚动更新过程中替换;也就是说,会逐个重新创建节点。
密钥轮替期间可能的停机时间类似于集群升级的停机时间。如需了解详情,请参阅升级期间的停机时间。
恢复备份
如果您需要恢复之前创建的 Secret 的备份,请运行以下命令:
kubectl apply -f backup/