设计一条从 Dev → QA → Prod 的镜像晋升流水线

解读

面试官想验证候选人是否能把“镜像即交付物”理念落地到国内企业真实的多环境晋升场景,兼顾合规、安全、可回滚、可审计三大硬性要求。回答必须体现:

  1. 镜像从构建到生产全生命周期不可变
  2. 每一步都有准入质检门控(CVE 扫描、签名、自动化测试)
  3. 与中国常用基础设施(阿里云 ACR、企业微信/飞书通知、堡垒机、等保 2.0)无缝结合
  4. 灰度、回滚、溯源一键完成,无需人工登录宿主机

知识点

  • 镜像命名规范:<项目>-<版本>-<git-sha>-<环境后缀>,禁止 latest
  • 多阶段构建最小化基础镜像(alpine、distroless、ubi-minimal)
  • Harbor 镜像仓库的项目级隔离、不可变标签、Webhook、CIS 扫描
  • Cosign/Notation 实现镜像签名,配合 OPA/Kyverno 做准入策略
  • GitLab CI 或 GitHub Actions 的 environment protection + manual gate
  • 阿里云 ACR 企业版的实例同步、VPC 访问控制、操作审计日志
  • Kubernetes 多集群(dev/qa/prod)通过ACK One 多集群舰队统一治理
  • Argo CD Image Updater 自动改写 Git 仓库中的镜像摘要,实现GitOps 回滚
  • 通知闭环:企业微信群机器人 + 飞书卡片,携带镜像摘要、扫描报告、回滚按钮

答案

我设计的晋升流水线分七步,全部通过GitLab CI + Harbor + ACK 实现,零人工干预即可直达到生产。

  1. 开发提交代码
    开发者 push 到 feature 分支,GitLab CI 触发 docker-build job,使用 多阶段构建 生成镜像:
    myapp:1.3.5-4f51a2-dev
    构建完成后自动推送到 Harbor 的 dev 项目,并触发 Trivy 扫描;若 HIGH 及以上 CVE>0,则流水线失败,飞书告警。

  2. Dev 环境自动部署
    扫描通过后,CI 调用 Argo CD 同步 dev 集群,镜像摘要写入 Git 仓库的 env/dev/kustomization.yaml
    自动化测试(API、UI、性能)在 dev 集群跑完,通过率≥95% 才允许晋升。

  3. QA 门控与镜像晋升
    研发负责人点击 GitLab 的 manual gate “promote-qa”,CI 执行 skopeo copy 把镜像从 harbor-dev 同步到 harbor-qa 项目,标签不变、摘要不变,并自动加 Cosign 签名 qa-4f51a2.sig
    Harbor 的不可变策略确保 qa 项目内同名标签不可覆盖,满足等保审计。

  4. QA 环境部署与验收
    Argo CD 检测到 qa 仓库镜像摘要变化,自动同步到 ACK qa 集群;QA 团队执行 自动化回归 + 手工业务验收
    若发现缺陷,直接在 GitLab 提 issue,回滚只需 Git revert 上一次摘要,Argo CD 自动拉回旧版本,平均回滚时间 < 60 秒

  5. Prod 审批与镜像晋升
    验收通过后,产品经理+运维经理双人会签(通过企业微信审批应用),CI 收到 webhook 后执行 skopeo copyharbor-prod 项目,再次签名 prod-4f51a2.sig,并写入 镜像 SBOM 到 Harbor 附件,满足等保 2.0 供应链要求

  6. 生产灰度发布
    使用 ACK 蓝绿 + 金丝雀 双策略:

    • 先起 10% 金丝雀,通过 Prometheus + Alertmanager 检测 P99 延迟、错误率
    • 若 30 分钟无异常,自动全量;若异常,Argo Rollouts 一键回滚到上一个摘要
      全程镜像摘要不变,无需重新构建,保证“构建-交付-运行”一致性。
  7. 审计与闭环
    Harbor 操作日志镜像签名SBOMCVE 报告全部写入 阿里云 OSS 长期存储,保留 180 天
    飞书群卡片推送“生产发布成功”消息,附带镜像摘要、回滚按钮、审计链接,实现通知即审计

通过以上七步,镜像在 Dev→QA→Prod 全程不可变、可追踪、可回滚,并满足国内等保、密评、供应链安全要求。

拓展思考

  1. 如果公司采用混合云,Harbor 到华为云 SWR 的跨云同步怎样保证低延迟与一致性?可引入 Dragonfly P2P 做镜像预热,减少 80% 跨云流量。
  2. 面对突发监管要求,需要秒级冻结某一基础镜像版本,可基于 OPA Gatekeeper 在集群侧拦截含特定 sha256 的镜像启动,无需重新打标签。
  3. 未来引入 SBOM 与漏洞数据库联动,可在 CI 阶段实现 “1 天漏洞窗口” 策略:若新披露 CVE 影响已晋升镜像,自动阻塞生产 rollout 并@安全负责人,实现左移安全闭环。