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

Gitlab CI/CD部署GKE集群成功但代码变更未生效,寻求排查

GitLab CI/CD部署GKE后代码变更不生效的排查点

以下是可能遗漏的配置或步骤,按优先级排查:

1. Docker镜像标签未使用唯一标识

如果构建镜像时一直使用latest标签,GKE会默认认为镜像未更新,不会触发拉取新镜像。必须为每次构建生成唯一标签(如Git提交哈希、时间戳):

  • 检查.gitlab-ci.yml中的镜像构建命令,确保用动态标签:
    build-docker:
      script:
        - docker build -t gcr.io/[你的项目ID]/[镜像名]:$CI_COMMIT_SHA .
        - docker push gcr.io/[你的项目ID]/[镜像名]:$CI_COMMIT_SHA
    

2. Deployment未更新镜像标签

即使推送了新镜像,若deployment.yaml里的镜像标签未同步更新,GKE会继续使用旧镜像:

  • 在CI部署步骤中,需要将新的镜像标签替换到Deployment配置里:
    deploy-gke:
      script:
        - sed -i "s/OLD_IMAGE_TAG/$CI_COMMIT_SHA/g" deployment.yaml
        - kubectl apply -f deployment.yaml
    
  • 同时确保deployment.yaml中镜像拉取策略配置正确(若用latest标签必须设置imagePullPolicy: Always,但更推荐用唯一标签):
    spec:
      containers:
      - name: [容器名]
        image: gcr.io/[项目ID]/[镜像名]:$CI_COMMIT_SHA
        imagePullPolicy: Always
    

3. NextJS构建产物未正确写入镜像

检查Dockerfile是否完整复制了构建后的产物,避免因路径错误或遗漏导致旧代码被打包:

  • 正确的NextJS多阶段构建示例:
    FROM node:18-alpine AS builder
    WORKDIR /app
    COPY package*.json ./
    RUN npm install
    COPY . .
    RUN npm run build  # 确保构建命令执行成功
    
    FROM node:18-alpine AS runner
    WORKDIR /app
    COPY --from=builder /app/.next ./.next
    COPY --from=builder /app/public ./public
    COPY --from=builder /app/package*.json ./
    RUN npm install --production
    CMD ["npm", "start"]
    

4. CI/CD步骤执行完整性验证

  • 查看GitLab CI运行日志,确认「构建NextJS」「推送镜像到GCR」「部署GKE」三个步骤均成功执行,无跳过或失败环节。
  • 登录GCR控制台,检查镜像标签的创建时间,确认新镜像已成功推送。

5. GKE Pod更新验证

  • 执行kubectl get pods查看Pod创建时间,确认部署后是否有新Pod启动。
  • 若Pod未更新,可手动执行kubectl rollout restart deployment/[你的部署名]强制重启,验证是否能加载新代码。

内容的提问来源于stack exchange,提问作者Hyeonjun Jeong

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 20:40:47