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 评审频率:事件驱动 + 定期复审

评审并非一次性活动,而是贯穿目录项生命周期的持续机制。根据变更类型和风险等级,采用三种触发模式:

  1. 首次提交评审 — 新目录项创建时,必须完成全量四维评审。
  2. 变更触发评审 — 当目录项配置、依赖版本、安全策略或资源规格发生变更时,自动触发增量评审。
  3. 定期复审 — 每季度对所有已上线目录项进行一轮全量复审,确保未因环境漂移而退化。
建议: 在 Argo CD 的 ApplicationSet 中注入 annotations 记录上次评审时间戳,结合 CronJob 扫描超过 90 天未复审的目录项,自动生成复审工单。

4.3 评审角色:SRE、平台工程师、应用 Owner

可靠性评审采用三方协作模型,每个角色拥有明确的职责边界和审批权限。

角色 职责 审批范围 否决权
SRE 定义可靠性基线、审核性能与依赖、验证 SLO 可达成性 性能、依赖 是(性能不达标可一票否决)
平台工程师 维护评审模板、检查配置合规性、确保 Argo CD 集成正确 配置、安全 是(配置格式错误或安全漏洞可阻塞)
应用 Owner 提交目录项、提供性能测试数据、修复评审发现的问题 无审批权,但需确认修复 否
常见陷阱: 应用 Owner 自行修改评审模板或跳过安全扫描。平台工程师应在 GitOps 仓库中设置 CODEOWNERS,强制 SRE 和平台工程师为评审文件的必需审批人。

4.4 评审流程与状态机

下图展示了从提交到通过的完整评审状态流转,以及每个阶段对应的角色介入点。

可靠性评审状态机 可靠性评审状态机 提交评审 配置检查 依赖检查 安全扫描 性能评估 评审通过 驳回/修复 不通过 修复后重新提交 应用 Owner 提交 平台工程师检查 SRE 审核

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 提交历史中,支持审计追溯。