3. 制品供应链核心概念:CI/CD流水线、制品仓库与部署环境
在构建制品供应链误差预算台账监控资源栈之前,必须统一理解三个核心概念:CI/CD流水线、制品仓库(Artifact Registry)以及部署环境(Dev/Staging/Prod)。这三者构成了制品从“代码提交”到“生产运行”的完整生命周期,也是误差预算数据采集与监控的锚点。
3.1 核心概念总览
| 概念 | 定义 | 在误差预算中的角色 |
|---|---|---|
| CI/CD流水线 | 自动化构建、测试、部署的流程管道 | 触发制品版本生成,记录构建耗时、成功率、部署频率 |
| 制品仓库 | 存储与版本化管理构建产物的中央仓库 | 提供制品元数据(版本、哈希、签名),支撑可追溯性审计 |
| 部署环境 | Dev / Staging / Prod 等运行基础设施 | 定义误差预算的观测边界,区分变更风险等级 |
关键原则:误差预算台账必须能够将“一次部署”关联到“具体的流水线运行ID”、“制品仓库中的精确版本”以及“目标部署环境”。任何环节的断裂都会导致监控数据失真。
3.2 CI/CD流水线:制品的生产流水线
CI/CD流水线是制品供应链的“发动机”。每一次代码合并、标签推送或手动触发,都会启动一条流水线。从误差预算视角,我们需要关注流水线的三个关键阶段:
- 持续集成(CI)阶段:代码编译、单元测试、安全扫描、容器镜像构建。此阶段产出不可变制品。
- 持续交付/部署(CD)阶段:将制品自动或半自动地部署到目标环境。此阶段产生部署事件。
- 质量门禁(Quality Gates):在流水线中嵌入的自动化检查点(如测试覆盖率、漏洞阈值)。门禁失败会阻断制品向下游流转。
监控埋点建议:在流水线关键步骤(构建完成、部署开始、部署完成)注入自定义指标,例如
pipeline_build_duration_seconds、deployment_success_total。这些指标是误差预算计算的基础输入。
3.3 制品仓库:制品的版本化存储与溯源
制品仓库是供应链的“物料中心”。无论是 Docker 镜像、JAR 包、npm 包还是 Helm Chart,所有经过 CI 阶段验证的产物都必须被唯一标识并存储。误差预算台账依赖制品仓库提供以下关键数据:
- 制品版本号:语义化版本(SemVer)或 Git Commit SHA,用于精确回滚。
- 制品摘要(Digest):内容哈希,确保制品未被篡改。
- 构建元数据:构建时间、触发者、关联的流水线 ID。
- 签名与认证:用于验证制品来源的合法性(如 Cosign 签名)。
常见陷阱:不要使用“latest”标签作为部署依据。必须使用不可变标签(如
v1.2.3 或 sha256:abc123),否则误差预算无法追溯具体哪个版本导致了 SLO 消耗。
3.4 部署环境:Dev / Staging / Prod
部署环境定义了制品的运行上下文,也是误差预算监控的物理边界。不同环境具有不同的稳定性要求和变更频率,因此误差预算的分配策略也应有所区别。
| 环境 | 目的 | 变更频率 | 误差预算权重 | 典型监控指标 |
|---|---|---|---|---|
| Dev | 快速验证与调试 | 极高(每日多次) | 低(允许较高失败率) | 部署次数、构建成功率 |
| Staging | 预生产集成测试与验收 | 中(每日数次) | 中(接近生产标准) | 部署耗时、回归测试通过率 |
| Prod | 面向最终用户提供服务 | 低(受变更窗口限制) | 高(严格遵循 SLO) | 可用性、延迟、错误率 |
Terraform 实践:使用 Terraform Workspace 或独立的 Terraform 配置文件来管理不同环境。每个环境的
terraform.tfvars 中应包含 environment = "dev" | "staging" | "prod" 标签,该标签会作为 Prometheus 指标的公共维度,用于在误差预算台账中按环境筛选。
3.5 三者的协同关系:误差预算数据流
在监控资源栈中,CI/CD流水线、制品仓库和部署环境共同构成了误差预算的数据采集平面。以下是一个典型的数据流:
- 流水线触发:开发者推送代码,CI/CD 流水线启动。
- 制品生成与存储:CI 阶段构建制品,并将其推送至制品仓库,同时记录构建元数据。
- 部署事件:CD 阶段从制品仓库拉取特定版本制品,部署至目标环境。
- 指标采集:Prometheus 等监控系统从流水线、制品仓库 API 以及部署环境的应用实例中采集指标。
- 误差预算计算:误差预算台账服务将采集到的指标(如部署频率、失败率、恢复时间)与预设的 SLO 进行对比,计算剩余预算。
自动化集成:在 Terraform 中,可以使用
terraform_data 资源或外部数据源来触发流水线状态查询,并将结果写入 Prometheus 的 Pushgateway,实现基础设施即代码与监控数据的闭环。