2. IDP 自助门户架构概览:蓝图、组件与灰度发布位置

在深入灰度发布准入检查之前,必须先理解 IDP 自助门户的核心架构。本章从蓝图(Blueprint)的定义出发,拆解门户的组件与工作流,并明确灰度发布在整体架构中的锚点位置。

2.1 蓝图(Blueprint)的定义与结构

Blueprint 是 IDP 中描述“环境应该如何被构建”的声明式模板。它定义了基础设施、中间件、应用部署和监控指标的完整拓扑。一个典型的 Blueprint 包含以下关键字段:

字段 类型 说明
name string 蓝图唯一标识,如 microservice-canary
version semver 蓝图版本,用于灰度发布时的版本比对
components list 包含的组件列表(K8s Deployment、Service、Ingress、PrometheusRule 等)
dependencies map 组件间的依赖关系(如:Service A 依赖 Redis)
observability map 预定义的 Prometheus 指标、告警规则、SLO 目标
policies list 准入策略引用(如:必须通过灰度检查才能进入生产)
实践要点:Blueprint 应存储在 Git 仓库中,通过 CI/CD 流水线进行版本管理。每次修改 Blueprint 都会触发新的版本号,灰度发布正是基于版本号差异进行流量切换。

2.2 自助门户的核心组件与工作流

IDP 自助门户由以下组件构成,它们协同完成从“开发者请求”到“环境就绪”的端到端流程:

  • 门户前端(Portal UI):开发者自助申请环境、选择 Blueprint 版本、查看发布状态。
  • 编排引擎(Orchestrator):接收请求,解析 Blueprint,调用底层基础设施 API 进行资源创建。
  • 策略引擎(Policy Engine):在资源创建/更新前执行准入检查,包括灰度发布准入检查。
  • 监控适配层(Monitoring Adapter):对接 Prometheus,实时拉取指标数据,供策略引擎决策。
  • 状态存储(State Store):记录所有环境、发布、策略执行的历史状态。

工作流如下:

  1. 开发者通过 Portal UI 选择 Blueprint 和版本,发起“创建环境”或“灰度发布”请求。
  2. Orchestrator 接收请求,将请求上下文(Blueprint 版本、目标集群、标签)传递给 Policy Engine。
  3. Policy Engine 根据预定义的准入规则(如:灰度发布必须满足 Prometheus 指标阈值)执行检查。
  4. 检查通过后,Orchestrator 调用基础设施 API 部署资源,并将结果写入 State Store。
  5. Monitoring Adapter 持续监控新环境的指标,反馈给 Portal UI 展示。
IDP 自助门户组件架构与工作流 IDP 自助门户组件架构与工作流 Portal UI 开发者自助申请 Orchestrator 编排引擎 Policy Engine 准入检查 Monitoring Adapter Prometheus 对接 State Store 状态存储 工作流方向:Portal UI → Orchestrator → Policy Engine → Monitoring Adapter → State Store 灰度发布准入检查在 Policy Engine 阶段执行,依赖 Monitoring Adapter 提供的实时指标

2.3 灰度发布在门户中的位置

灰度发布不是独立的功能模块,而是嵌入在策略引擎(Policy Engine)中的一个准入检查阶段。它在门户架构中的具体位置如下:

  • 触发时机:当开发者通过 Portal UI 发起“灰度发布”请求时,Orchestrator 将请求路由到 Policy Engine。
  • 执行阶段:Policy Engine 在资源创建/更新之前,调用灰度发布准入检查插件。
  • 数据依赖:灰度检查需要从 Monitoring Adapter 获取当前环境的 Prometheus 指标(如错误率、延迟、CPU 使用率)。
  • 决策输出:检查通过则继续部署;不通过则拒绝请求并返回详细原因(如“错误率超过 5% 阈值”)。
关键设计原则:灰度发布准入检查必须是无状态的、幂等的,且每次检查都基于最新的 Prometheus 指标数据。这保证了检查结果的可重复性和公平性。
灰度发布在策略引擎中的位置 灰度发布在策略引擎中的位置 Policy Engine 内部 请求入口 灰度发布准入检查 (本章核心) 其他准入策略 决策输出 灰度发布准入检查是 Policy Engine 中的一个独立插件,与其他策略并行执行

2.4 灰度发布准入检查的输入与输出

灰度发布准入检查作为一个策略插件,其接口定义清晰:

维度 内容
输入 Blueprint 版本号、目标环境标签、Prometheus 指标查询结果(如 http_requests_total、error_rate)
检查规则 预定义的阈值(如:新版本错误率 ≤ 旧版本错误率的 1.2 倍)、持续时间(如:持续 5 分钟)
输出 通过(允许部署)/ 拒绝(返回失败原因和指标快照)
审计日志 每次检查的输入、规则、输出、时间戳均写入 State Store
常见误区:灰度发布准入检查不应直接修改基础设施资源。它只做“检查”和“决策”,实际的资源创建/更新由 Orchestrator 执行。将检查与执行分离,是保持架构清晰和可扩展的关键。