3. Kong 网关部署模式:DB-less 模式、传统 DB 模式、混合模式对比及适用场景

在生产环境中选择 Kong 网关的部署模式,直接决定了架构的复杂度、运维策略以及回滚能力。Kong 提供三种核心部署模式:DB-less(无数据库)模式、传统 DB(有数据库)模式和混合模式。理解三者的差异是构建可靠 CI/CD 流水线的基础。

3.1 三种模式架构概览

下图展示了三种模式的节点角色与数据流差异,帮助建立直观认知。

Kong 三种部署模式架构对比 Kong 三种部署模式架构对比 DB-less 模式 声明式配置文件 (YAML/JSON) Kong 节点 (无状态) 配置只读,启动时加载 运行时不可动态修改 传统 DB 模式 Admin API / decK PostgreSQL 数据库 Kong 节点 (有状态) 混合模式 控制平面 (CP) + DB 数据平面 (DP) 无状态 CP 管理配置,DP 处理流量 DP 通过 gRPC 同步配置

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 模式选择决策流程

以下决策图帮助团队根据自身条件快速确定初始部署模式。

Kong 部署模式选择决策流程 Kong 部署模式选择决策流程 开始选择部署模式 K8s 环境? (GitOps 优先) 是 DB-less 模式 否 节点数 > 10? (扩展性需求) 是 混合模式 否 频繁动态修改? (运行时调整) 是 传统 DB 模式 否 DB-less 模式 决策说明 • K8s 环境优先选择 DB-less,与 GitOps 和声明式管理最佳匹配 • 大规模集群(节点 > 10)推荐混合模式,解耦控制与数据平面 • 中小规模且需要动态修改时,传统 DB 模式仍是最成熟的选择

3.7 模式选择总结

三种模式并非互斥,同一组织在不同环境(开发、测试、生产)可以选择不同模式。以下为推荐组合:

  • 开发/测试环境:DB-less 模式,快速启动、易于回滚、与 CI/CD 流水线无缝集成。
  • 中小规模生产:传统 DB 模式,运维成熟、动态调整灵活。
  • 大规模/多区域生产:混合模式,控制平面集中管理,数据平面弹性扩展。