如何在CI环境中使用gke-gcloud-auth-plugin结合GCP服务账号密钥文件?
解决GKE-GCloud-Auth-Plugin使用服务账号密钥的问题
以下是CI环境下的可行解决方案,步骤清晰易操作:
1. 加载服务账号密钥
先通过环境变量指定服务账号密钥的路径,CI环境中如果密钥是以字符串变量存储的,可先写入临时文件:
# 如果密钥是CI变量字符串,先写入临时文件 echo "$CI_SERVICE_ACCOUNT_KEY" > /tmp/service-account-key.json # 指定密钥路径环境变量 export GOOGLE_APPLICATION_CREDENTIALS="/tmp/service-account-key.json"
如果密钥文件直接存在于CI环境中,直接设置环境变量即可:
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-key.json"
2. 自动生成含插件配置的kubeconfig
不要手动设置--auth-provider=gcp,直接用gcloud命令生成适配新插件的kubeconfig:
gcloud container clusters get-credentials 你的集群名称 --zone 集群所在区域 --project GCP项目ID
这条命令会自动配置kubeconfig,让kubectl调用gke-gcloud-auth-plugin完成认证,无需手动修改auth-provider配置。
3. 强制启用插件(可选)
如果执行上述命令后仍报错,添加环境变量强制启用新插件:
export USE_GKE_GCLOUD_AUTH_PLUGIN=True
该变量会让gcloud和kubectl优先使用独立的gke-gcloud-auth-plugin,而非已移除的内置GCP认证模块。
4. 验证配置
执行基础kubectl命令测试认证是否生效:
kubectl get nodes
补充说明
旧的kubectl config set-credentials --auth-provider=gcp是针对已废弃的内置GCP认证插件,新的gke-gcloud-auth-plugin属于独立的credential plugin,必须通过gcloud container clusters get-credentials生成的配置来调用,或手动在kubeconfig的users段配置exec字段指定插件路径(不推荐手动配置,容易出错)。
内容的提问来源于stack exchange,提问作者bonomo
相关产品推荐
相关产品推荐

