3. IDP 自助门户蓝图概述
在 Kubernetes 与 IDP 的集成体系中,蓝图(Blueprint)是连接开发者自助操作与平台工程治理的核心契约。它既不是简单的模板文件,也不是一成不变的配置快照,而是一个具备版本、门禁和回滚能力的可执行部署定义。本节将系统阐述蓝图的定义、与模板的本质区别,以及在自助服务中的具体角色。
3.1 蓝图的定义
蓝图是对一个完整应用环境的声明式描述,它封装了以下三类信息:
- 基础设施拓扑:Namespace、NetworkPolicy、StorageClass、Ingress 等 Kubernetes 资源的定义。
- 运行时配置:环境变量、ConfigMap、Secret、资源配额(Requests/Limits)等应用级参数。
- 变更策略:允许的更新路径、回滚触发条件、审批门禁规则(与第 5 章门禁引擎联动)。
关键特征:蓝图是版本化的(SemVer 或 Git SHA),每个版本都对应一组经过验证的 YAML 清单和策略约束。开发者通过 IDP 门户选择蓝图版本,平台自动执行预检、审批和部署。
3.2 蓝图与模板的区别
很多团队会将蓝图与 Helm Chart 或 Kubernetes 模板混为一谈。下表从六个维度明确区分:
| 对比维度 | 蓝图 (Blueprint) | 模板 (Template) |
|---|---|---|
| 抽象层级 | 应用环境级(包含多个微服务 + 中间件) | 单资源或单应用级(如 Deployment + Service) |
| 版本管理 | 强制版本化,支持版本对比与回滚 | 通常无版本或仅文件版本 |
| 门禁策略 | 内嵌变更门禁规则(审批、合规检查) | 无策略,仅参数化渲染 |
| 运行时绑定 | 绑定具体集群、Namespace、租户 | 仅定义资源结构,不绑定运行环境 |
| 回滚能力 | 支持自动回滚到上一合规版本 | 需手动 revert 或重新部署 |
| 自助入口 | 通过 IDP 门户选择、审批、部署 | 通常通过 CLI 或 CI 流水线引用 |
实践建议:将 Helm Chart 视为模板载体,将蓝图视为策略封装层。蓝图内部可以引用多个 Helm Chart,但蓝图本身负责版本编排、门禁判断和回滚决策。
3.3 蓝图在自助服务中的角色
在 IDP 自助门户中,蓝图扮演了三个核心角色:
- 自助服务目录的原子单元:开发者从门户的“服务目录”中选择一个蓝图(如“Spring Boot 微服务 + PostgreSQL”),填写少量参数即可发起部署请求。蓝图封装了所有底层复杂性。
- 变更门禁的执行边界:每次对蓝图实例的修改(如升级镜像、调整副本数)都会触发门禁引擎。蓝图版本号决定了当前变更是否合规、是否需要审批、是否触发自动回滚。
- 回滚判断的决策依据:当门禁检查失败或运行时健康检查异常时,平台根据蓝图的回滚策略(如“回滚到上一版本”或“回滚到指定基线版本”)自动执行恢复操作。回滚不是简单的重新部署,而是基于蓝图版本的差异计算。
常见误区:不要将蓝图设计成“大而全”的单体定义。每个蓝图应聚焦一个业务服务单元(如订单服务 + 其专属数据库),而不是整个平台。粒度太粗会导致门禁规则复杂、回滚影响范围过大。
3.4 蓝图版本与回滚基线
每个蓝图实例在 IDP 中维护一个版本链,典型结构如下:
| 版本 | 状态 | 门禁结果 | 回滚目标 |
|---|---|---|---|
| v1.2.0 | 当前 | 通过 | — |
| v1.1.0 | 基线 | 通过 | 回滚至 v1.1.0 |
| v1.0.0 | 历史 | 通过 | 可选 |
| v0.9.0 | 废弃 | 失败 | 不可回滚 |
回滚判断的核心逻辑是:当新版本(如 v1.2.1)门禁失败时,平台自动计算当前版本与最近一个通过门禁的基线版本之间的差异,执行逆向变更。这个基线版本由蓝图定义中的 rollbackBaseline 字段指定,或默认取上一个通过门禁的版本。
# 蓝图定义示例 (blueprint.yaml)
apiVersion: idp.example.com/v1
kind: Blueprint
metadata:
name: order-service-blueprint
version: v1.2.0
spec:
rollbackBaseline: v1.1.0 # 指定回滚基线
gatePolicies:
- name: image-signature-check
action: block # 门禁失败时阻止部署
autoRollback: true # 自动回滚到基线
resources:
- helmChart: order-service
values:
replicaCount: 3
image: registry.example.com/order:1.2.0
- helmChart: postgresql
values:
storageSize: 50Gi
版本命名规范:建议使用语义化版本(SemVer),其中主版本号对应架构变更,次版本号对应功能变更,补丁号对应配置或镜像更新。门禁规则可以按版本号段配置不同严格度(如主版本变更需要人工审批)。