GitOps 与声明式部署

共 20 题
📑 题目列表 20 题
#
★★★

1. Argo CD 的控制循环如何将 Git 期望状态同步到集群(diff/sync)?

Argo CD 的控制循环如何工作,如何将 Git 中的期望状态同步到集群(diff/sync)?

  • 控制循环:期望状态 vs 实际状态
  • diff 比对与 sync 动作
  • 自愈、钩子与同步策略

Argo CD 采用 controller 定时轮询 Git 仓库与集群,比较期望状态(Git 中的 manifest)与实际状态(集群中的资源),若不一致则标记为 OutOfSync,并根据同步策略(自动/手动)执行 sync 将集群收敛到期望状态。diff 发生在 manifest 处理的多个层面:先比较 Git 原始 manifest 与集群中渲染后的资源,再比较实际资源与期望的差异条目。sync 通过 kubectl apply / kubectl patch 等机制执行,可配合 sync hooks(PreSync/Sync/PostSync)在同步前后执行初始化、迁移、验证等任务。同步支持 prune(删除多余资源)、自愈(auto-heal 自动纠正漂移)与强制同步(替换冲突资源)。

Argo CD 的"声明式收敛"是 GitOps 的核心:以 Git 为唯一事实来源,控制循环持续保证集群与 Git 一致,diff 定位差异、sync 收敛差异,这是"自愈式 IaC"的实现基础。

#
★★★

2. ArgoCD 的 App-of-Apps 与 ApplicationSet 如何管理大规模多环境应用?

ArgoCD 的 App-of-Apps 与 ApplicationSet 如何管理大规模、多环境的应用?

  • App-of-Apps 模式:用根 Application 管理多个子 Application
  • ApplicationSet:以生成器按参数批量生成 Application
  • 大规模多环境场景的适用性

App-of-Apps 是一个根 Application 的 manifest 里声明多个子 Application,每个子 Application 再指向具体的仓库路径或 Helm chart,从而把成百上千个应用的管理收敛到一棵树,便于分层组织与整体同步。ApplicationSet 则用生成器(list、git、cluster、matrix 等)根据参数组合批量生成 Application,例如按"环境×集群"矩阵一次性生成 dev/prod 各集群的 Application,避免手写重复的 Application 定义。两者常配合使用:ApplicationSet 负责按集群/环境批量生成,App-of-Apps 负责按应用组织依赖,适合大规模多环境、多集群的场景。

大规模管理的关键是"用声明式的方式生成声明式":App-of-Apps 解决组织与分层,ApplicationSet 解决批量生成与参数化,避免手工维护海量 Application 对象。

#
★★★

3. Flux 的多集群管理中 Kustomization、HelmRelease、多租户 RBAC 与 Image Automation

Flux 如何实现多集群管理,Kustomization、HelmRelease、多租户 RBAC 与 Image Automation 如何工作?

  • Kustomization:目录级同步与依赖
  • HelmRelease:Helm 图表交付
  • 多租户 RBAC 与 Image Automation 自动更新

Flux 的多集群模型是"一集群一控制面":每个集群部署一组 Flux 控制器,通过 GitRepository/Kustomization 或 HelmRelease 跟踪同一 Git 仓库中的不同路径来实现多环境同步。Kustomization 负责把仓库目录同步为集群资源,支持依赖顺序与后置验证;HelmRelease 通过 HelmReconciler 把 Helm chart 渲染并部署,支持依赖与升级。多租户 RBAC 用 Flux 的 Kustomization 与 RBAC 机制隔离不同团队/命名空间,避免越权。Image Automation(ImagePolicy + ImageUpdateAutomation)监听镜像仓库的新 tag/digest,自动更新 Git 中对应的 manifest 并重新同步,实现"镜像晋级即自动部署"。

Flux 的多集群能力以"仓库驱动 + 控制器分层"为核心:Kustomization 管目录、HelmRelease 管 chart、RBAC 管隔离、Image Automation 管持续更新,各控制器协作完成多集群交付。

#
★★★

4. GitOps 在 pull 模式与 push 模式的取舍

GitOps 的 pull 模式与 push 模式各有什么特点,如何取舍?

  • pull 模式:集群主动拉取,Agent 在集群内
  • push 模式:CI 主动推送部署
  • 安全、网络穿透与模型一致性

pull 模式(Argo CD、Flux 的默认)由集群内的 Agent(controller)主动拉取 Git 中的期望状态并同步到集群,集群无需暴露对外端口,权限更安全,也能应对集群与 CI 网络不可达的情况;push 模式(传统 CI 直接 kubectl apply)由 CI 侧主动推送,实现简单、反馈即时,但需要在 CI 中持有集群凭据,扩大了攻击面。取舍上:pull 模式更符合 GitOps"集群自愈"理念且更安全,适合生产集群;push 模式适合快速原型或 CI 与集群网络直连的场景。实际常是"git 作为唯一事实来源 + pull 模式收敛",把 push 派生的镜像信息写回 Git 再由 pull 同步。

核心取舍是"谁持有凭据、谁主动触达":pull 把凭据留在集群内、由集群拉取,安全性更高;push 由 CI 持凭据主动推送,简单但暴露面大。生产环境倾向 pull。

#
★★★

5. GitOps 删除同步与 Prune 中资源删除如何安全执行、orphan 资源识别与级联删除风险控制

GitOps 的删除同步与 Prune 如何安全执行,orphan 资源如何识别,级联删除风险如何控制?

  • Prune 机制:删除 Git 中已移除的资源
  • orphan 资源识别与清点
  • 级联删除风险与保护策略

prune 是 GitOps 同步的重要能力:当 Git manifest 中删除了某个资源,同步时同步删除集群中对应资源,避免"Git 删了但集群残留"的漂移。安全执行需注意:先做 dry-run 预览将要删除的资源,确认删除集合;对关键资源可加注解/保护(如 Argo CD 的 argocd.argoproj.io/sync-options: Prune=false 或 finalizer、ProtectedResource 白名单)防止误删;对 orphan 资源(Git 中已不存在但集群仍存在)要识别并决定是否清理,避免级联删除事故。级联删除风险指删除某资源(如 Deployment 关联的 ConfigMap/Secret)引发连锁删除,需评估依赖关系并分批执行。

prune 是一把双刃剑:不做会漂移,乱做会误删。安全的关键在于"先预览、再保护、分批次、可回滚",把删除也纳入可审计的变更流。

#
★★★

6. 渐进式发布与 GitOps 协同中金丝雀/蓝绿期间 Git 期望状态与实际流量状态的偏差如何管理

渐进式发布(金丝雀/蓝绿)期间,Git 期望状态与实际流量状态存在偏差,如何管理?

  • Git 期望状态 vs 运行流量状态的偏差来源
  • 渐进式发布工具(Argo Rollouts/Flagger)如何协调
  • 偏差的收敛与回滚

渐进式发布时,Git 中只有一个期望状态(新版本),但流量实际按权重分配给新旧版本,二者存在"声明式状态"与"流量状态"的偏差。管理方式是用渐进式发布控制器(Argo Rollouts、Flagger)在 Git 期望状态之上叠加一层"流量编排":Git 声明新版本,控制器逐步把流量从旧版本切到新版本,期间结合分析(Analysis)指标判定是否继续放大或回滚,最终收敛到 Git 期望状态(新版本全量)。回滚时控制器把流量切回旧版本,同时可选择把 Git 恢复到上一版本。关键是把"流量状态"与"Git 状态"通过控制器解耦,避免直接操作流量导致 Git 状态与实际不一致。

GitOps 的"期望状态"描述的是终态,而渐进式发布描述的是到达终态的过程。控制器作为中间层,让 Git 声明终态、控制器编排过程,二者协调而非冲突。

#
★★

7. Flux 与 ArgoCD 在同步机制、通知与多集群管理上的差异?

Flux 与 ArgoCD 在同步机制、通知与多集群管理上有哪些差异?

  • 同步机制:轮询 vs 事件驱动
  • 通知:事件桥接 vs 拆分级
  • 多集群:单控制面 vs 多集群

同步机制上,ArgoCD 依赖 controller 轮询 Git 仓库并支持 webhook 加速,Flux 同样轮询并支持 webhook/receiver,但 Flux 更强调事件驱动式精准源码跟踪;通知上,ArgoCD 内置通知控制器(notifications)支持多种 receiver,Flux 通过 Notification Controller 把事件通知到 Slack/Teams 等;多集群管理上,ArgoCD 用"一个控制面管理多个集群"(多 cluster 注册到单一 ArgoCD),Flux 通常"每集群一组控制器"并把仓库按集群路径组织,也支持多集群通过引导。ArgoCD 偏向集中式多集群管理,Flux 偏向分布式多集群。此外 ArgoCD 内置 UI 与 ApplicationSet,Flux 命令式 CLI 更轻量。

两者理念相近(声明式+收敛),差异在架构取舍:ArgoCD 集中控制、功能丰富、UI 完善;Flux 轻量、原生 Cloud Native、多集群分布。选型取决于集中管理需求与团队偏好。

#
★★

8. GitOps 与 IaC 的协同中 Terraform 管理集群外基础设施、GitOps 管理集群内资源的边界如何划分

GitOps 与 IaC 如何协同,Terraform 管理集群外基础设施与 GitOps 管理集群内资源的边界如何划分?

  • 边界:集群外(IaaS)用 Terraform,集群内(K8s)用 GitOps
  • 创建顺序与依赖
  • 混合形态与协作

边界划分原则是"谁离集群越远,越倾向 IaC(Terraform);谁在集群内,越倾向 GitOps"。Terraform 负责集群外基础设施:VPC、网络、存储、负载均衡、以及集群本身(EKS/ACK 等)的创建与版本迭代;GitOps(Argo CD/Flux)负责集群内资源的持续交付:Namespace、Deployment、Service、ConfigMap、Helm 应用等。协同上,Terraform 先创建集群,再引导 GitOps 控制器(在集群内 bootstrap),之后集群内资源都交给 GitOps 管理;Terraform 只管集群及其外围,不管理集群内应用的持续变化。二者都遵守"声明式+版本控制+审批",形成"基础设施层与集群内层"的两级管理。

边界拆分避免工具职责重叠:Terraform 管"创建集群"这种低频、需强一致性的资源,GitOps 管"集群内应用"这种高频、需持续收敛的资源。混合时用 Terraform 引导 GitOps,再移交控制权。

#
★★

9. GitOps 中期望状态(desired state)如何定义并作为唯一事实来源?

GitOps 中期望状态(desired state)如何定义,为什么能作为唯一事实来源?

  • 期望状态的定义:声明式 manifest 描述系统应处于的形态
  • 唯一事实来源的条件:版本化、可审计、可回滚
  • 与集群实际状态的区分

期望状态通过声明式 manifest 定义,即用 YAML 描述系统"应该长什么样"(Deployment 副本数、镜像版本、资源配置等),而不是描述"如何达到"(命令式)。它能作为唯一事实来源,因为 Git 提供了版本控制、变更审计、审批(PR)与回滚能力:任何变更都记录在 Git 历史中,可追溯谁改了什么、何时改,可轻松回滚到任意历史版本。GitOps 控制器持续把集群实际状态收敛到该期望状态,因此 Git 成为权威的"系统期望"定义。实际状态(集群运行中的资源)可能被手动改动或漂移,但最终会被 GitOps 纠正回期望状态。

"唯一事实来源"的资本来自 Git 的版本化与可审计性:声明式定义目标、Git 记录历史、控制器保证收敛。三者缺一不可,共同让 Git 成为系统真实意图的权威载体。

#
★★

10. GitOps 如何获取集群实际状态并与期望状态做差异比对?

GitOps 如何获取集群的实际状态,并与期望状态做差异比对?

  • 获取实际状态:通过 API Server 读取集群资源
  • 差异比对:desired vs live 的 diff
  • 比对结果与动作

GitOps 控制器(如 Argo CD、Flux)通过集群 API Server 读取集群中实际资源(live state),把期望状态(Git 的 manifest 渲染后的 desired state)与之一一比对。比对时先做字段归一化(如忽略默认值、注解差异),再逐字段比较 spec 是否一致,生成差异列表(哪些资源需更新、哪些需新增、哪些需删除)。若存在差异,则标记 OutOfSync;若配置了自动同步且差异允许,则执行 apply/patch 收敛。Argo CD 的 diff 还支持忽略某些字段(如 ignoreDifferences 配置忽略默认值、注解差异),Flux 的 Kustomize 则通过 server-side apply 与 ownerReference 进行资源认领与差异管理。比对结果最终反馈到状态呈现(health/sync 状态)与审计,供人判断是否收敛到位。

差异比对是"收敛"的判定依据:只有准确拿到 live 状态并做归一化 diff,才能判断"是否漂移"与"该不该同步"。归一化处理(忽略默认值、annotations)是避免"假漂移"导致误同步的关键。

#
★★

11. GitOps 的"配置漂移"如何检测(Diff/自动同步),误同步如何防范?

GitOps 中"配置漂移"如何检测,Diff 与自动同步如何工作,误同步如何防范?

  • 配置漂移的检测机制(定期 Diff/轮询)
  • 自动同步与手动同步的取舍
  • 误同步的防范(dry-run、白名单、审计)

配置漂移指集群实际状态与 Git 期望状态不一致,通常由人工直接改集群、脚本改动或外部控制器修改引起。GitOps 控制器通过定期轮询(并配合 webhook 加速)持续执行 Diff,把期望状态与实际状态比对,发现差异即标记漂移。检测到漂移后有两种处置:配置自动同步(auto-sync)时控制器会自动收敛回期望状态,适合"自愈";否则标记 OutOfSync 等待人工审定。误同步的防范关键:一是同步前先做 dry-run/预览,确认将要执行的变更集合;二是对关键资源设置保护(如忽略某些字段、白名单资源、Prune=false);三是配置自动同步的自愈范围(auto-heal)要与审计配合,避免控制器把人为的临时调整也"纠正"掉造成事故;四是记录所有同步动作与触发者,便于追溯。

漂移检测是"收敛"的输入,自动同步是"收敛"的执行。核心矛盾是"自愈"与"误纠正":同步越自动越省心,但也越可能误改,因此必须用 dry-run、保护、审计来平衡,避免把"漂移"与"误操作"混为一谈。

#
★★

12. GitOps 的核心,即声明式、版本控制与自动同步如何结合?

GitOps 的核心是什么,声明式、版本控制与自动同步三者如何构成其定义?

  • 声明式(desired state)的核心地位
  • 版本控制(Git)作为单一事实来源
  • 自动同步/收敛机制

GitOps 的核心是"以 Git 作为基础设施与应用的唯一事实来源,用声明式描述期望状态,并由控制器自动收敛实际状态到期望状态"。三个支柱缺一不可:声明式——用 YAML 描述"系统应该是什么样"而非"如何操作",这是可版本化、可比较的基础;版本控制——Git 提供变更历史、审批(PR)、回滚与审计,使任何变更都可追溯、可逆;自动同步——控制器(如 Argo CD/Flux)持续比较并收敛,实现"自愈"与漂移消除。三者结合,使部署、升级、回滚都变成"改 Git 即生效",且全程可审计。

这一问是 GitOps 的定义性考题。答题要点是"单一事实来源 + 声明式 + 自动收敛"三位一体,并说明三者各承担什么角色,避免只答"把 Git 当配置源"这种表面理解。

#
★★

13. 大规模 GitOps 同步性能中 Webhook 触发与轮询的取舍、同步风暴与并发限流的治理

大规模 GitOps 部署中,Webhook 触发与轮询如何取舍,同步风暴与并发限流如何治理?

  • Webhook vs 轮询的触发机制与延迟差异
  • 同步风暴的成因与危害
  • 并发限流与同步队列治理

大规模 GitOps 的性能关键在触发与同步的节奏。触发上,轮询(polling)简单可靠但延迟高、频繁空转;Webhook 事件驱动延迟低,但需要接收端暴露接口、处理对事件顺序与幂等。取舍上,通常用 webhook 加速关键变更、轮询兜底,二者结合。同步风暴指大量 Application 或大量资源同时触发同步,导致集群 API 与控制器负载突增、资源冲突、限流甚至故障。治理手段:一是控制并发同步数(Argo CD 的并发 Application 限制、同步并行度参数),对同步队列做限流;二是对同源变更做合并/去重,避免重复同步;三是设置同步超时与重试策略,避免堆积;四是按环境/集群分批错峰同步,避免集中风暴。

大规模场景下"同步"本身成为资源竞争点。答题要体现"触发既要低延迟又要可靠、同步要限流防风暴"的工程权衡,体现对控制器负载与集群 API 压力的理解。

#
★★

14. GitOps 分支保护与变更审批中签名提交、PR 评审与自动同步之间的权限边界设计

GitOps 中分支保护与变更审批如何设计,签名提交、PR 评审与自动同步之间的权限边界如何划分?

  • 分支保护(protected branch)与 required reviews
  • 签名提交(signed commit)与 provider 校验
  • 自动同步与审批流之间的权限边界

GitOps 的变更审批发生在"Git 层"而非"集群层":生产分支通常设为受保护分支,要求 PR(MR)评审通过、状态检查通过才能合并,从而保证只有经过评审的期望状态才能进入 Git。签名提交(GPG/cosign 签名)用于验证提交确实来自可信作者,防止伪造提交;资源供应商(如 Argo CD 的 GPG 验证、Flux 的 PGP 验证)会校验提交签名,签名不合法则拒绝同步。自动同步与审批的权限边界:自动同步只负责"按 Git 收敛",不能绕过 Git 的审批;它只持有从 Git 读取并同步的权限,不持有直接改集群的凭据。因此权限边界是"改 Git 需审批、同步由控制器执行、控制器不越权改 Git 或绕过审批"。

这一问的核心是"网关前移":GitOps 把变更审批放到 Git 层,权限边界清晰——人改 Git 要审批,控制器只管同步。签名提交补强"谁改的",PR 评审补强"改得对不对",二者与自动同步共同构成安全闭环。

#

15. Argo CD 的同步与回滚机制中 sync 策略、资源钩子(hooks)与回滚到历史版本的流程

Argo CD 的同步与回滚机制如何工作,sync 策略、资源钩子(hooks)与回滚到历史版本的流程如何?

  • sync 策略(自动/手动、prune、force)
  • sync hooks(PreSync/Sync/PostSync)
  • 回滚到历史版本(revision)的流程

Argo CD 的同步把 Git 期望状态应用到集群。sync 策略可配置自动同步(auto-sync)与手动同步,自动同步还支持 prune(删除多余资源)、self-heal(自愈)、force(强制替换冲突资源)。sync hooks 在同步前后执行特定任务:PreSync 用于初始化/迁移,Sync 用于执行同步主体,PostSync 用于验证/通知,本阶段等待成功才继续。回滚流程是:把 Application 的 targetRevision 指回历史版本(如上一个 commit/tag),或同步到 Git 历史中的某个 revision,Argo CD 会重新 diff 并收敛集群到该历史状态,从而完成回滚;回滚后仍需验证并更新运行状态。

同步与回滚是 Argo CD 的核心操作。答题要点是"同步三要素(策略、hooks、差量)+ 回滚即改 targetRevision 重新收敛",体现对同步生命周期与回滚原理的理解。

#

16. GitOps 中 CI 的产物如何交付给 CD,即镜像 digest、清单生成与推送仓库的分工与安全边界

GitOps 中 CI 的产物如何交付给 CD,镜像 digest、清单生成与推送仓库的分工与安全边界如何划分?

  • CI 产物交付:镜像 digest 与 manifest 更新
  • 清单生成与推送仓库的分工(CI 写 Git,CD 同步)
  • 安全边界:CI 不直接部署生产

GitOps 中 CI 与 CD 的分工是:CI 负责构建、测试并推送"镜像"到制品仓库,产出不可变的镜像 digest;随后 CI 把"新镜像 digest 更新到 Git 仓库中的 manifest"(通常通过写一个 Kustomize 新版本、更新 values 或生成 patch 并提交),这就是"清单生成与推送"。CD(Argo CD/Flux)只负责从 Git 读取 manifest 并同步到集群,不直接接触 CI 构建产物。安全边界上,CI 不持有集群部署凭据,只持有写"制品仓库 + 派生的 manifest 提交"的权限;生产部署由 CD 依据 Git 收敛完成。核心是"CI 把结果交给 Git,CD 从 Git 取",避免 CI 直接操作生产集群。

这一问考察 GitOps 的"CI 与 CD 解耦":CI 产 digest 并写 Git,CD 读 Git 并同步。安全边界是"CI 不直接部署生产",从而把发布权限收敛到 Git 审批与 CD 控制器。

#

17. GitOps 中密钥如何管理(SealedSecrets/SOPS/External Secrets)而不落入 Git?

GitOps 中密钥如何管理而不落入 Git,SealedSecrets/SOPS/External Secrets 如何工作?

  • 密钥不入 Git 的诉求
  • SealedSecrets/SOPS 加密与 External Secrets 引用
  • 与 GitOps 声明式的结合

GitOps 要求 manifest 可入 Git,但密钥不能明文落入 Git。常用方案三选:SealedSecrets——在集群内用控制器公钥加密生成 SealedSecret 资源,可安全入库,解密时由控制器私钥在集群内还原为 Secret;SOPS——用 GPG/KMS 等对不同字段加密,加密后的 manifest 可入库,解密密钥由外部管理;External Secrets——manifest 中只写"引用"(如引 ExternalSecret 指向 Vault/云 KMS 的某个 key),由 External Secrets Operator 在运行时拉取并生成 Secret。三者都保证"密钥不落 Git、Git 只存密文或引用",且与 GitOps 声明式结合,解密/拉取在集群内完成。

密钥管理是 GitOps 落地的关键难点。答题要点是"方案分类 + 各自加密/引用机制 + 密钥不落 Git 的共性原则",体现对 GitOps 安全边界的理解。

#

18. GitOps 同步失败的排障中 manifest 校验失败、资源冲突、权限不足与网络问题如何区分定位

GitOps 同步失败如何排障,manifest 校验失败、资源冲突、权限不足与网络问题如何区分定位?

  • 同步失败的类型分类
  • 各类失败的典型症状与定位手段
  • 排障流程与日志/事件分析

GitOps 同步失败需按类型区分定位:manifest 校验失败——manifest 语法错误、字段非法、模板渲染失败,症状是同步前就报错,可看渲染结果与校验日志;资源冲突——期望资源与集群现有资源 owner/字段冲突(如被其他控制器管理),症状是 apply 返回 conflict,需看 API 事件与 ownerReference;权限不足——控制器/服务账号缺少 RBAC 权限,症状是 forbidden/unauthorized,需排查 RBAC 绑定;网络问题——Git 仓库或集群 API 不可达、webhook 失败,症状是拉取/同步超时,需排查网络与证书。排障流程:先看同步状态与事件,再分别检查 manifest 渲染、RBAC、网络连通性,配合日志定位到具体阶段。

排障题要体现"分类定位"的思路:把失败归因到 manifest/资源/权限/网络四类,用各自对应的检查手段(渲染、事件、RBAC、连通性)定位,避免盲目重试。

#

19. GitOps 工具的 Provider/插件机制中 ArgoCD/Flux 如何通过插件与云 API 集成管理基础设施

GitOps 工具的 Provider/插件机制如何工作,ArgoCD/Flux 如何通过插件与云 API 集成管理基础设施?

  • Provider/插件机制的作用
  • Argo CD Config Management Plugin 与 Flux 的 provider
  • 与云 API 集成管理基础设施

GitOps 工具的插件机制用于扩展"渲染与同步"能力,让 Git 中的多种资源形态都能被处理。Argo CD 的 Config Management Plugin(CMP)允许接入自定义渲染器(如 Kustomize、Helm、Jsonnet 或自定义脚本),把非标准 manifest 渲染成可同步资源;Flux 通过 Kustomization/HelmRelease 以及自定义控制器、provider 扩展同步能力。与云 API 集成方面,插件可调用云 API 获取动态信息(如某个云的凭证、网络、数据库状态)注入 manifest 或作为 Provider 管理基础设施资源,使 GitOps 能管理"集群外但声明式可控"的资源。核心是"插件让 GitOps 的声明式范围从集群内扩展到更多资源形态与云服务"。

这一问考察插件化扩展能力。答题要点是"插件负责渲染/同步扩展,可对接云 API 管理基础设施,从而扩大 GitOps 的声明式边界",体现对 GitOps 生态可扩展性的理解。

#

20. 多环境 GitOps 的仓库布局中环境目录(dev/staging/prod)、promotion 流程与并行版本如何处理

多环境 GitOps 的仓库布局如何设计,环境目录(dev/staging/prod)、promotion 流程与并行版本如何处理?

  • 环境目录布局(按环境分目录)与复用
  • promotion(晋级)流程:不同环境间制品晋升
  • 并行版本处理与回滚

多环境 GitOps 的仓库布局通常按环境分目录,如 dev/staging/prod/,每个环境目录存该环境的 manifest 与覆盖值,通过 Kustomize/Helm 的 overlay 复用公共基线,避免重复。promotion 流程是:制品(镜像 digest)先在 dev 验证,再把同一 digest 晋升到 staging、prod,通过更新各环境目录中的 manifest 实现逐环境晋级,晋级时保留各环境各自的验证与门禁。并行版本处理:多环境可同时处于不同版本(dev 新、prod 旧),需用明确的环境覆盖与版本记录区分,回滚时只需把某环境目录指回上一版本并同步。关键在于"环境清晰隔离 + 制品晋升传递 + 版本可追溯"。

多环境布局的关键是"用目录表达环境、用 promotion 表达晋升、用版本记录表达并行"。答题要体现环境隔离与制品晋级的一致性,避免各环境配置漂移。