DevOps 是把每次变更变成一条可重复、可验证、可回滚的流水线,并用反馈回路持续缩短交付时间。
任何改动都应该沿同一条路径流动:版本控制 → 自动检查 → 构建 → 制品 → 部署 → 验证。流水线把人的操作变成有版本、有日志、可重放的步骤,减少“只有某个人会发布”的隐性知识。小批量变更更容易定位失败,也更容易回滚。手工操作不是绝对禁止,但必须是例外,并留下审计记录。
制品只在一次构建中产生,之后用同一个 digest 依次进入测试、预发和生产环境。每个环境重新构建会引入不同的依赖、基础镜像和缓存,导致测过的不是上线的。环境差异通过配置、密钥和部署参数注入,而不是重新编译。晋升过程最好有准入检查和审批记录,保证“通过测试的制品”就是“被发布的制品”。
容器镜像、二进制包和配置包一旦发布就不应原地修改,标签可以覆盖,digest 不会变。发布、回滚和审计都应该引用 digest,而不是 latest。不可变制品配合 SBOM、签名和 provenance,才能回答“运行的是什么、从哪来、谁构建的”。修复漏洞要重新构建并生成新 digest,而不是进入容器里打补丁。
基础设施、网络、权限、监控和策略都用声明式代码描述,存放在 Git 中,经过评审和自动化执行。IaC 的价值在于可重复创建、可审查、可回滚和漂移检测,而不是把点击操作换成脚本。状态文件、密钥和云凭据是重点保护对象;生产变更应先 plan 或 dry-run,确认影响范围再执行。
交付速度和质量需要被测量:部署频率、变更前置时间、变更失败率和恢复时间。运行侧需要指标、日志、追踪和 SLO,把用户影响转化为可行动的告警。反馈回路不仅是监控看板,还包括 CI 时长、测试稳定性、故障复盘和开发者体验。没有反馈的流水线只是在自动化地制造未知。
供应链覆盖源码、依赖、构建、制品、仓库和部署。每个环节都可能被篡改或引入漏洞,因此需要依赖锁定、最小权限的 CI、SBOM、签名、provenance 和准入策略。供应链安全的目标不是“没有漏洞”,而是任何制品都能被验证来源、追溯构建过程,并在发现问题时快速定位影响范围。
| 阶段 | 核心产出 | 可验证证据 |
|---|---|---|
| 源码与评审 | 提交、变更记录 | 提交 SHA、评审记录 |
| 持续集成 | 测试结果、构建 | 流水线日志、测试报告 |
| 构建与打包 | 镜像、二进制 | digest、SBOM |
| 签名与来源 | 信任链 | 签名、provenance |
| 部署与晋升 | 运行中的版本 | 部署记录、GitOps 状态 |
| 运行与反馈 | 指标、日志、追踪 | SLO、告警、复盘 |
流水线的每一段都应留下不可篡改的证据,下一段只接受通过验证的输入。这样发布才能从“相信某个人”变成“验证某个制品”。
合上页面,先回答,再展开对照。