CloudBuild部署Helm到GKE时helm list报错:gke-gcloud-auth-plugin未找到
问题原因
你使用的 alpine/helm:3.11.2 镜像未预装 gke-gcloud-auth-plugin,但你的kubeconfig文件指定了通过该插件完成GKE集群认证,因此执行helm命令时会出现找不到插件的错误。而gcr.io/cloud-builders/kubectl镜像内置了该插件,所以kubectl相关操作能正常运行。
解决方案
方案一:使用含认证插件的镜像运行helm命令
将helm步骤的镜像替换为gcr.io/cloud-builders/gcloud(该镜像已内置gke-gcloud-auth-plugin),在命令中先安装指定版本的helm再执行操作:
- id: 'helm-status' name: 'gcr.io/cloud-builders/gcloud' entrypoint: 'bash' args: - '-c' - | curl https://get.helm.sh/helm-v3.11.2-linux-amd64.tar.gz | tar xz && mv linux-amd64/helm /usr/local/bin/ helm list -A waitFor: ['kubectl-info'] env: - KUBECONFIG=/builder/home/.kube/config - USE_GKE_GCLOUD_AUTH_PLUGIN=True - CLOUDSDK_COMPUTE_REGION=$_DEFAULT_REGION - CLOUDSDK_CONTAINER_CLUSTER=$_GKE_NAME
方案二:在alpine/helm镜像中安装认证插件
若坚持使用alpine镜像,可在步骤中添加插件安装命令(需先添加谷歌软件源):
- id: 'helm-status' name: 'alpine/helm:3.11.2' entrypoint: 'sh' args: - '-c' - | echo "https://packages.cloud.google.com/apk/alpine/edge/main" >> /etc/apk/repositories apk add --no-cache gke-gcloud-auth-plugin helm list -A waitFor: ['kubectl-info'] env: - KUBECONFIG=/builder/home/.kube/config - USE_GKE_GCLOUD_AUTH_PLUGIN=True
方案三:自定义构建包含helm和认证插件的镜像
如果需要多次复用,可提前构建自定义镜像:
- 创建Dockerfile:
FROM alpine/helm:3.11.2 RUN echo "https://packages.cloud.google.com/apk/alpine/edge/main" >> /etc/apk/repositories && \ apk add --no-cache gke-gcloud-auth-plugin
- 通过Cloud Build将镜像推送到GCR,之后在cloudbuild.yaml中直接使用该自定义镜像即可。
内容的提问来源于stack exchange,提问作者hiimjack
相关产品推荐
相关产品推荐

