GCP凭证轮换后GitLab上Kubernetes部署失败求助
问题解决:GKE凭证轮换后GitLab流水线Kubernetes部署失败
核心结论
是的,你必须同步更新KUBE_TOKEN——GKE集群的服务账号令牌会随凭证自动轮换失效,旧令牌无法再通过集群认证,这是部署报错的直接原因。另外,gitlab-admin是Kubernetes集群内部的服务账号,不是GCP IAM账号,所以你在GCP IAM或服务账号列表里找不到它是正常的。
解决步骤
1. 获取有效的KUBE_TOKEN
操作需要你在本地安装并配置好gcloud CLI(已授权你的GCP项目):
- 先获取GKE集群的本地凭证:
gcloud container clusters get-credentials <你的集群名称> --zone <集群所在区域> - 查找
gitlab-admin服务账号所在的命名空间(流水线里默认用uat,也可能在其他命名空间比如kube-system):kubectl get serviceaccounts --all-namespaces | grep gitlab-admin - 查看该服务账号关联的密钥(Secret):
在输出的kubectl describe serviceaccount gitlab-admin -n <找到的命名空间>Mountable secrets或Tokens部分找到对应的Secret名称。 - 提取并解码令牌:
把解码后的字符串复制,更新到GitLab项目的kubectl get secret <关联的Secret名称> -n <命名空间> -o jsonpath='{.data.token}' | base64 --decodeKUBE_TOKEN流水线变量中。
2. 验证配置有效性
更新变量后,可先在本地测试配置是否正确:
# 替换成你GitLab里的KUBE_URL、KUBE_CA和新的KUBE_TOKEN export KUBE_URL="你的集群地址" export KUBE_CA="你的CA证书内容" export KUBE_TOKEN="新获取的令牌" kubectl config set-cluster k8s --server="${KUBE_URL}" --certificate-authority=<(echo "${KUBE_CA}" | base64 --decode) kubectl config set-credentials gitlab-admin --token="${KUBE_TOKEN}" kubectl config set-context default --cluster=k8s --user=gitlab-admin --namespace=uat kubectl config use-context default # 测试集群连接 kubectl cluster-info
如果能正常返回集群信息,说明配置没问题,再重新运行GitLab流水线。
3. 长期优化建议(避免后续凭证轮换问题)
手动管理KUBE_TOKEN容易因轮换失效,建议改用GCP服务账号自动配置kubectl:
- 在GCP IAM中创建一个服务账号,赋予
roles/container.admin(GKE集群管理员)权限。 - 下载该服务账号的JSON密钥文件,作为GitLab项目的变量(比如命名为
GCP_SERVICE_ACCOUNT_KEY)。 - 修改GitLab流水线脚本,替换原有的kubectl配置步骤:
这种方式会自动获取最新的集群凭证,无需手动维护script: - echo "${GCP_SERVICE_ACCOUNT_KEY}" > service-account-key.json - gcloud auth activate-service-account --key-file=service-account-key.json - gcloud container clusters get-credentials <集群名称> --zone <区域> --project <项目ID> # 后续kubectl命令无需手动配置上下文,直接执行即可 - sed -i "s#__IMAGETAG__#${LOWERCASE_CONTAINER_IMAGE_WEBSERVER}#g" kubernetes/server.yaml # ... 其他部署步骤KUBE_URL、KUBE_CA、KUBE_TOKEN。
额外注意
流水线中environment.name设置为staging,但脚本里把__ENVIRONMENT__替换成了prod,这可能是笔误,后续如果涉及环境配置逻辑,建议改成uat保持一致。
内容的提问来源于stack exchange,提问作者LuisBoris
相关产品推荐
相关产品推荐

