如何在GitLab CI的Deploy阶段同时使用Helm与Google Cloud镜像?
解决方案
方法1:使用预集成Helm与Google Cloud SDK的镜像
直接替换deploy阶段的镜像为同时包含两者的环境,避免每次重复安装插件的冗余操作。Google官方的cloud-sdk镜像可直接使用,只需在脚本中补充安装Helm:
修改deploy阶段的镜像配置:
image: google/cloud-sdk:latest
对应的脚本调整如下:
script: # 安装Helm - curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash - helm version # 新版cloud-sdk已默认包含gke-gcloud-auth-plugin,无需额外安装 - export USE_GKE_GCLOUD_AUTH_PLUGIN=True - export KUBECONFIG=kube.conf - helm upgrade $HELM_CHART_NAME ./chart --install --values=./chart/$ENVIRONMENT.yaml --namespace $KUBE_NAMESPACE
方法2:自定义Docker镜像(推荐)
若需要更稳定的流水线环境,可自行构建包含Helm、gcloud及gke-gcloud-auth-plugin的镜像,彻底避免每次流水线重复安装依赖。
创建Dockerfile:
# 基于Google Cloud SDK官方镜像 FROM google/cloud-sdk:latest # 安装Helm RUN curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash # 验证所有工具安装状态 RUN helm version && gcloud version && gke-gcloud-auth-plugin --version
构建镜像后推送到你的容器仓库(如GitLab Container Registry),再在deploy阶段使用该自定义镜像:
image: registry.your-domain.com/your-project/helm-gcloud:latest
此时脚本可简化为:
script: - helm version - export USE_GKE_GCLOUD_AUTH_PLUGIN=True - export KUBECONFIG=kube.conf - helm upgrade $HELM_CHART_NAME ./chart --install --values=./chart/$ENVIRONMENT.yaml --namespace $KUBE_NAMESPACE
方法3:保留原Helm镜像,每次流水线安装依赖(不推荐)
如果必须使用helm:latest镜像,需在每次流水线中完整安装gcloud及插件,步骤如下:
修改deploy阶段的脚本:
script: - helm version # 安装Google Cloud SDK及gke-gcloud-auth-plugin - echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list - curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key --keyring /usr/share/keyrings/cloud.google.gpg add - - apt-get update && apt-get install -y google-cloud-sdk gke-gcloud-auth-plugin - export USE_GKE_GCLOUD_AUTH_PLUGIN=True - export KUBECONFIG=kube.conf - helm upgrade $HELM_CHART_NAME ./chart --install --values=./chart/$ENVIRONMENT.yaml --namespace $KUBE_NAMESPACE
该方法每次流水线都需重新安装依赖,耗时较长,仅适合临时测试场景。
内容的提问来源于stack exchange,提问作者tryingToBeBetter
相关产品推荐
相关产品推荐

