1. CD 的“安全”指什么:不是慢,而是可证明、可撤销
把发布变慢并不等于更安全;真正需要的是每一步都有证据(谁、何时、改了什么 digest)、 每一步都可撤销(或至少可缓解),以及异常可观测(SLO 与错误预算联动)。 GitOps 的优势正在于此:集群状态由声明式期望驱动,回滚常常是把 Git 指针移回去,而不是 ssh 上去改文件。
2. GitOps 主干:单一真相源与对账循环
选定 Argo CD 或 Flux 之一(或云厂商托管 GitOps),原则不变:Git 仓库描述期望版本; 控制器持续对账(reconcile);人工 kubectl 修改会变成漂移(drift),应被告警或自动修复。 多环境通常用目录/分支/overlay(Kustomize)或 Helm values 分层,避免复制粘贴整份 YAML。
# Argo CD Application (illustrative — English identifiers only)
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: payments-prod
namespace: argocd
spec:
project: production
source:
repoURL: https://git.example.com/org/gitops.git
targetRevision: main
path: overlays/prod/payments
destination:
server: https://kubernetes.default.svc
namespace: payments
syncPolicy:
automated:
prune: true
selfHeal: true
3. 审批与环境门禁:机器跑得快,人要在正确的门签字
环境保护规则(谁可以部署到 prod)、手动审批步骤(流水线中的 approval)、 变更窗口与双人复核(four-eyes)是常见组合。 与 CI 的“自动绿”不同,CD 要显式回答:业务是否接受此刻的风险(错误预算、冻结窗口、大促)。 紧急通道(break-glass)必须留痕、限时、复盘,否则会变成永久后门。
| Mechanism | What it prevents | Typical implementation |
|---|---|---|
| Branch / tag policy | unreviewed config to prod | PR + CODEOWNERS on gitops repo |
| Pipeline approval | ops fatigue “fat finger” | manual gate with role binding |
| Admission policy | unsigned / wrong digest | OPA / Kyverno + cosign verify |
| Freeze window | change during incident | calendar + automated block |
4. 渐进交付:把“全量切换”拆成可观测的小步
蓝绿 / 金丝雀 / 按流量权重降低一次性爆炸半径;配合特性开关把代码发布与功能曝光解耦。 观测要先行:金丝雀阶段必须看黄金信号与业务 KPI,自动晋升或自动回退(需要事先定义阈值,避免“看着仪表盘发呆”)。
5. 回滚与应急:先救命,再讲故事
Kubernetes:Deployment 回滚、Argo Rollouts undo、Istio/网关流量切回。 GitOps:revert commit 或指针回到上一 tag,控制器拉回期望状态。 数据库迁移是经典难点:只向前迁移 + expand/contract 模式,或配套反向数据修复脚本——回滚策略必须在设计迁移时写好,而不是上线当晚现编。 应急通信:明确指挥链、状态页、客户沟通模板,与第 65 章 incident 响应衔接。
6. 审计与合规:让“事后能讲清楚”成为默认输出
审计三要素:身份(谁)、对象(哪个 digest / manifest)、时间线(何时同步成功)。 将 GitOps 同步事件、流水线审批、准入决策与镜像签名验证结果关联到同一变更单,比散落日志更可辩护。 保留策略要满足法规与事故调查需要——不可变存储或 WORM 类桶可降低抵赖风险。
7. 本章清单与预告
- 能描述 GitOps 对账环与漂移处理策略。
- 能组合审批、环境保护、准入策略形成安全 CD。
- 理解渐进交付与特性开关在风险上的分工。
- 能区分常见回滚路径及数据库变更的特殊性。
- 能列出审计最小字段并与供应链证明链衔接。
- 下一章:面试与晋升——DevOps 专家能力模型与答题框架。