3. Kong 网关部署模式:DB-less 模式、传统 DB 模式、混合模式对比及适用场景
在生产环境中选择 Kong 网关的部署模式,直接决定了架构的复杂度、运维策略以及回滚能力。Kong 提供三种核心部署模式:DB-less(无数据库)模式、传统 DB(有数据库)模式和混合模式。理解三者的差异是构建可靠 CI/CD 流水线的基础。
3.1 三种模式架构概览
下图展示了三种模式的节点角色与数据流差异,帮助建立直观认知。
3.2 模式详解与核心差异
3.2.1 DB-less 模式(无数据库模式)
Kong 节点直接从本地声明式配置文件(YAML/JSON)加载路由、服务、上游等配置。节点完全无状态,不依赖外部数据库。
- 配置方式:通过
kong config db_import或挂载配置文件启动。 - 运行时修改:不支持 Admin API 动态修改,需重新加载配置文件。
- 一致性:所有节点加载同一份配置,天然一致。
- 回滚方式:替换配置文件并重启/重载 Kong 进程。
3.2.2 传统 DB 模式(有数据库模式)
Kong 节点连接共享的 PostgreSQL 数据库,通过 Admin API 或 decK 动态管理配置。所有节点从同一数据库读取配置。
- 配置方式:Admin API / decK 写入数据库,Kong 节点从数据库读取。
- 运行时修改:支持,配置变更即时生效。
- 一致性:依赖数据库事务,存在短暂缓存不一致窗口。
- 回滚方式:数据库备份恢复、decK diff + sync 或 Admin API 逆向操作。
3.2.3 混合模式(控制平面 + 数据平面)
将传统 DB 模式拆分为控制平面(CP)和数据平面(DP)。CP 连接数据库并管理配置,DP 通过 gRPC 流从 CP 同步配置,不直接访问数据库。
- 配置方式:CP 通过 Admin API 管理配置,DP 自动从 CP 同步。
- 运行时修改:支持,CP 修改后推送到所有 DP。
- 一致性:CP 保证最终一致性,DP 缓存配置。
- 回滚方式:CP 端执行配置回滚,DP 自动同步历史版本。
3.3 关键特性对比表
| 特性维度 | DB-less 模式 | 传统 DB 模式 | 混合模式 |
|---|---|---|---|
| 外部依赖 | 无(仅文件系统) | PostgreSQL 数据库 | CP 依赖 DB,DP 无依赖 |
| 配置动态性 | 静态(需重载) | 动态(实时生效) | 动态(CP 推送) |
| 节点状态 | 完全无状态 | 有状态(依赖 DB) | DP 无状态,CP 有状态 |
| 扩展性 | 极高(水平扩展无限制) | 中等(DB 连接数瓶颈) | 高(DP 可无限扩展) |
| 运维复杂度 | 低 | 中(需管理 DB) | 高(需管理 CP/DP 集群) |
| 回滚速度 | 快(文件替换 + 重载) | 中(依赖 DB 恢复) | 快(CP 配置回滚) |
| CI/CD 集成 | 简单(文件生成 + 部署) | 中等(decK 同步) | 中等(CP 端操作) |
3.4 适用场景分析
3.4.1 DB-less 模式适用场景
- Kubernetes 环境:配合 ConfigMap 或 Operator 管理声明式配置,与 GitOps 工作流天然契合。
- 边缘节点/小型部署:IoT 网关、分支网关等资源受限或网络隔离环境。
- CI/CD 测试环境:快速启动临时网关实例进行集成测试,无需数据库。
- 配置极少变更的场景:路由规则稳定,不需要运行时动态调整。
DevOps 建议:在 DB-less 模式下,将声明式配置文件纳入 Git 版本管理,CI/CD 流水线生成配置后直接部署到目标环境,回滚时只需 checkout 历史版本并重新部署。
3.4.2 传统 DB 模式适用场景
- 传统数据中心:已有 PostgreSQL 运维体系,团队熟悉数据库管理。
- 需要频繁动态调整:运营团队需要通过 Admin API 实时修改限流、上游切换等。
- 中小规模集群:节点数在 10 个以内,数据库连接压力可控。
- 与现有监控/告警系统集成:数据库层面的健康检查和备份策略成熟。
注意:传统 DB 模式下,数据库成为单点故障和性能瓶颈。建议使用 PostgreSQL 主从复制或连接池(如 PgBouncer)来提升可用性。回滚时务必先备份数据库快照。
3.4.3 混合模式适用场景
- 大规模生产集群:数百甚至数千个 DP 节点,需要解耦配置管理与流量处理。
- 多区域/多云部署:CP 集中管理,DP 分布在不同的地理区域或云提供商。
- 零信任安全架构:DP 不直接访问数据库,减少攻击面。
- 需要独立扩缩容:CP 和 DP 可以按需独立扩展,CP 关注配置处理能力,DP 关注流量吞吐。
3.5 回滚能力与 CI/CD 流水线适配
下表总结了三种模式在回滚操作和 CI/CD 集成方面的关键差异,帮助选择最适合流水线的模式。
| 模式 | 回滚操作 | CI/CD 集成方式 | 回滚原子性 |
|---|---|---|---|
| DB-less | 替换配置文件 → kong reload |
Git 版本控制 + 文件部署 | 高(文件级原子替换) |
| 传统 DB | decK diff → decK sync 或 DB 恢复 | decK 声明式同步 + 数据库备份 | 中(依赖 decK 事务) |
| 混合模式 | CP 端配置回滚 → DP 自动同步 | CP Admin API / decK + DP 自动更新 | 高(CP 控制版本) |
课程核心观点:对于需要高可靠回滚护栏的 CI/CD 流水线,DB-less 模式提供最简洁的回滚路径(文件替换),混合模式提供最灵活的控制能力(CP 版本管理)。传统 DB 模式虽然成熟,但回滚操作需要更谨慎的编排和验证。
3.6 模式选择决策流程
以下决策图帮助团队根据自身条件快速确定初始部署模式。
3.7 模式选择总结
三种模式并非互斥,同一组织在不同环境(开发、测试、生产)可以选择不同模式。以下为推荐组合:
- 开发/测试环境:DB-less 模式,快速启动、易于回滚、与 CI/CD 流水线无缝集成。
- 中小规模生产:传统 DB 模式,运维成熟、动态调整灵活。
- 大规模/多区域生产:混合模式,控制平面集中管理,数据平面弹性扩展。