Kustomize Overlay 管理:控制环境差异而不复制清单

通过 base、components、patches 和构建校验组织 Kubernetes 环境配置,减少 overlay 漂移。

文章目录 · 4 节

Kustomize 适合在共同基础上表达少量环境差异。若每个 overlay 都复制完整 Deployment,安全修复和字段升级很快会变成多处人工同步。

保持目录职责清晰

deploy/
  base/
  components/monitoring/
  overlays/dev/
  overlays/prod/

base 包含所有环境共有且可直接构建的资源;overlay 只表达副本、域名、资源额度等差异;可复用的可选能力放入 component。

patches:
  - target:
      kind: Deployment
      name: api
    patch: |-
      - op: replace
        path: /spec/replicas
        value: 6

在 CI 验证最终结果

kubectl kustomize deploy/overlays/prod > rendered.yaml
kubectl apply --server-side --dry-run=server -f rendered.yaml

只审查 patch 不足以理解最终资源。流水线还应检查策略、镜像标签、命名空间和废弃 API。

控制复杂度

  • overlay 不嵌套多层继承
  • patch 目标使用稳定名称和明确类型
  • Secret 通过外部密钥系统引用
  • 多环境相同的改动优先回收到 base

收尾清单

定期比较各环境渲染结果,将预期差异写成机器可检查的规则。若大量 patch 都在重写同一资源,应重新划分 base,而不是继续叠加例外。