4. 可靠性评审定义与目标:评审范围、频率与角色
可靠性评审是自助目录从“可用”走向“可信”的核心质量门禁。本章定义评审的四个维度、触发频率以及三方协作角色,确保每个目录项在投产前达到 SLO 基线。
4.1 评审范围:四维可靠性检查
每个目录项在提交评审时,必须覆盖以下四个维度。任一维度不通过,评审即被阻塞。
| 维度 | 检查项 | 典型失败案例 |
|---|---|---|
| 配置 | Argo CD ApplicationSet 模板参数、ConfigMap/Secret 引用、环境变量覆盖、Helm values 结构 | 硬编码数据库连接串、缺少 replicas: 2 默认值 |
| 依赖 | 上游服务版本、中间件版本、网络策略、DNS 记录、外部 API 端点 | 引用已废弃的 Redis 5.x、未声明 Kafka topic 权限 |
| 安全 | 容器镜像漏洞扫描、Secrets 加密、RBAC 最小权限、网络隔离、Pod Security Standards | 镜像含 Critical 漏洞、Secret 明文存储、容器以 root 运行 |
| 性能 | 资源 requests/limits、HPA 配置、P99 延迟预估、数据库连接池、缓存策略 | CPU request 为 0、HPA 未设置、无连接池限制 |
工程经验: 在评审模板中预置
reliability-review.yaml 清单,CI 流水线自动解析四个维度的检查结果,未通过项直接标记为 blocker,不允许合并到主分支。
4.2 评审频率:事件驱动 + 定期复审
评审并非一次性活动,而是贯穿目录项生命周期的持续机制。根据变更类型和风险等级,采用三种触发模式:
- 首次提交评审 — 新目录项创建时,必须完成全量四维评审。
- 变更触发评审 — 当目录项配置、依赖版本、安全策略或资源规格发生变更时,自动触发增量评审。
- 定期复审 — 每季度对所有已上线目录项进行一轮全量复审,确保未因环境漂移而退化。
建议: 在 Argo CD 的 ApplicationSet 中注入
annotations 记录上次评审时间戳,结合 CronJob 扫描超过 90 天未复审的目录项,自动生成复审工单。
4.3 评审角色:SRE、平台工程师、应用 Owner
可靠性评审采用三方协作模型,每个角色拥有明确的职责边界和审批权限。
| 角色 | 职责 | 审批范围 | 否决权 |
|---|---|---|---|
| SRE | 定义可靠性基线、审核性能与依赖、验证 SLO 可达成性 | 性能、依赖 | 是(性能不达标可一票否决) |
| 平台工程师 | 维护评审模板、检查配置合规性、确保 Argo CD 集成正确 | 配置、安全 | 是(配置格式错误或安全漏洞可阻塞) |
| 应用 Owner | 提交目录项、提供性能测试数据、修复评审发现的问题 | 无审批权,但需确认修复 | 否 |
常见陷阱: 应用 Owner 自行修改评审模板或跳过安全扫描。平台工程师应在 GitOps 仓库中设置
CODEOWNERS,强制 SRE 和平台工程师为评审文件的必需审批人。
4.4 评审流程与状态机
下图展示了从提交到通过的完整评审状态流转,以及每个阶段对应的角色介入点。
4.5 评审工单与自动化集成
评审过程通过 GitOps 工作流自动驱动,无需人工跳转外部系统。典型集成方式如下:
# .github/workflows/reliability-review.yaml
name: Reliability Review
on:
pull_request:
paths:
- 'catalog/**/reliability-review.yaml'
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Parse review manifest
run: |
for file in $(find catalog -name 'reliability-review.yaml'); do
echo "Checking $file"
# 配置合规性检查
yq eval '.config' $file | grep -q 'replicas' || echo "::error::Missing replicas"
# 依赖版本检查
yq eval '.dependencies.redis' $file | grep -qE '^7\.' || echo "::error::Redis version must be 7.x"
# 安全扫描结果检查
yq eval '.security.critical_vulns' $file | grep -q '0' || echo "::error::Critical vulnerabilities found"
# 性能基线检查
yq eval '.performance.p99_latency_ms' $file | awk '{if ($1 > 200) print "::error::P99 latency exceeds 200ms"}'
done
- name: Post review status
run: |
# 将检查结果写入 PR 评论
gh pr comment ${{ github.event.pull_request.number }} --body "✅ 可靠性评审完成"
关键设计: 评审工单的检查结果直接反映在 PR 状态检查中。SRE 和平台工程师只需在 PR 上 Approve 即可完成评审,无需额外审批系统。所有历史评审记录保留在 Git 提交历史中,支持审计追溯。