You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 18:24:31