文章目录DecK 完全指南Kong 网关的声明式配置工具一、什么是 decK二、为什么需要 decK三、decK 的核心思想四、decK 的工作原理五、decK 支持管理哪些对象六、安装 decKLinux/macOSWindows验证安装七、连接 Kong八、导出 Kong 配置九、同步配置十、查看差异Diff十一、验证配置十二、decK 配置结构十三、环境管理十四、GitOps 场景十五、与 DB-less 模式的关系DB-lessdecK十六、decK 与 Terraform 的区别十七、CI/CD 集成示例十八、企业最佳实践1. 永远使用 Git 管理2. Sync 前先 Diff3. 分环境管理4. 配置拆分模块化5. 与 CI/CD 集成十九、常见问题Q1decK 会删除未声明配置吗Q2能部分同步吗Q3适合大型团队吗二十、decK 的核心价值总结二十一、总结DecK 完全指南Kong 网关的声明式配置工具在使用 API 网关时一个常见问题是如何优雅地管理大量网关配置如果你正在使用 Kong API Gateway那么你一定会接触到一个非常重要的工具decKDeclarative Configuration for Kong它能够帮助你用代码管理 Kong 配置实现 GitOps配置版本化自动同步环境CI/CD 自动部署团队协作审计很多团队会把 decK 理解为“Kong 世界里的 Terraform kubectl”本文将全面介绍 decK 的核心概念、工作原理、常见命令、最佳实践与企业级使用方式。一、什么是 decKdecK 是 Kong 官方 提供的一个Kong 配置管理与同步工具官方名称Declarative Configuration for Kong它可以从 Kong 导出配置将 YAML 配置同步到 Kong比较差异批量管理对象实现 Infrastructure as CodeIaC二、为什么需要 decK在没有 decK 之前很多团队直接在 Kong Manager UI 点点点或手动调用 Admin API例如# 这个命令是向本地运行的API网关如Kong注册一个名为user-service的服务其后端地址为http://user-service:8080。# --data是curl命令中用于指定POST请求体数据的参数用于向服务器发送表单格式的数据。curl-XPOST http://localhost:8001/services\--datanameuser-service\--dataurlhttp://user-service:8080问题会越来越严重问题描述配置无法版本化无法 Git 管理环境不一致dev/test/prod 漂移难以回滚改错后恢复困难人工操作风险容易漏配置无法审计不知道谁改了什么CI/CD 困难难自动化于是decK 出现了。三、decK 的核心思想decK 的理念非常类似Kubernetes YAMLTerraformGitOps核心思想“声明你想要的最终状态”例如services:-name:user-serviceurl:http://user-service:8080routes:-name:user-routeservice:user-servicepaths:-/users然后decksyncdecK 会自动创建缺失配置更新已有配置删除多余配置最终Kong 状态 YAML 文件状态这叫Desired State期望状态四、decK 的工作原理decK 实际上是YAML 配置 ↓ 读取配置 ↓ 调用 Kong Admin API ↓ 对比当前状态 ↓ 计算 diff ↓ 同步变更它不是直接修改数据库。它本质上是 Kong Admin API 的高级封装。五、decK 支持管理哪些对象decK 几乎支持所有 Kong 配置对象对象说明Services上游服务Routes路由Consumers消费者Plugins插件Upstreams负载均衡Targets上游节点CertificatesTLS 证书SNIsServer NameRBAC权限控制Workspaces工作空间例如plugins:-name:rate-limitingservice:user-serviceconfig:minute:100policy:local六、安装 decK官方 GitHubdecK GitHub 仓库Linux/macOSbrewinstalldeck或者curl-sLhttps://github.com/Kong/deck/releases/latest/download/deck_linux_amd64.tar.gz|tar-xzWindowschoco install deckChoco 是 Chocolatey 的命令行简称Chocolatey 是 Windows 系统下的一个 命令行包管理器类似于 Linux 中的 apt 或 yum。 它的核心功能是通过命令行自动化安装、更新和卸载 Windows 软件无需手动下载安装包或点击图形界面。choco install deck 表示使用 Chocolatey 安装名为 deck 的软件包。验证安装deck version输出decK v1.x.x七、连接 Kong默认deck gatewayping如果 Kong Admin API 不在默认地址deck gatewayping\--kong-addr http://localhost:8001八、导出 Kong 配置这是最常见操作之一deck gateway dump输出_format_version:3.0services:-name:user-serviceurl:http://user-service:8080通常会保存deck gateway dumpkong.yaml这样就能纳入 Git代码评审配置备份九、同步配置这是 decK 最核心的命令deck gatewaysynckong.yaml它会创建对象更新对象删除未声明对象类似Terraform Apply十、查看差异Diff非常推荐在同步前先看 diffdeck gatewaydiffkong.yaml输出示例 service user-service created - plugin old-plugin removed ~ route api-route updated这在 CI/CD 中非常重要。十一、验证配置同步前可先校验deckfilevalidate kong.yaml避免 YAML 错误。十二、decK 配置结构一个完整例子_format_version:3.0services:-name:user-serviceurl:http://user-service:8080routes:-name:user-routepaths:-/usersplugins:-name:rate-limitingconfig:minute:100你会发现配置结构非常接近 Kong 实体关系。十三、环境管理很多团队会这样组织kong-config/ ├── base/ ├── dev/ ├── staging/ └── prod/例如base/ services.yaml prod/ rate-limit.yaml然后deck gatewaysyncprod/kong.yaml十四、GitOps 场景这是 decK 最大价值之一。典型流程开发修改 YAML ↓ 提交 Git ↓ PR Review ↓ CI 执行 deck diff ↓ CD 执行 deck sync ↓ Kong 自动更新这样所有配置可审计所有变更可回滚所有环境可复现十五、与 DB-less 模式的关系很多人容易混淆模式说明DB-lessKong 不使用数据库decK配置同步工具它们不是同一个东西。但经常一起使用。DB-less直接加载 declarative config# Kong 网关的开机启动方式决定网关如何获取初始配置kong start--confkong.confdecK通过 Admin API 管理配置# 动态管理已运行的 Kong 配置通过 Admin APIdeck gatewaysync十六、decK 与 Terraform 的区别很多人会问已经有 Terraform为啥还需要 decK区别对比decKTerraform专注领域Kong 专用通用 IaC配置粒度API Gateway全基础设施操作体验更贴近 Kong更通用Diff 能力很强强学习成本较低较高Kong 支持官方深度支持Provider 支持很多企业Terraform 管 infradecK 管 Kong十七、CI/CD 集成示例GitHub Actionsname:Sync Kongon:push:branches:-mainjobs:sync:runs-on:ubuntu-lateststeps:-uses:actions/checkoutv4-name:Install decKrun:|curl -sL https://github.com/Kong/deck/releases/latest/download/deck_linux_amd64.tar.gz | tar -xz-name:Sync Kongrun:|./deck gateway sync kong.yaml十八、企业最佳实践1. 永远使用 Git 管理不要只存在 Kong 里。必须Git 才是真实来源2. Sync 前先 Diff推荐deck gatewaydiffdeck gatewaysync避免误删。3. 分环境管理不要一个 YAML 管所有环境容易混乱。4. 配置拆分模块化大型项目services/ plugins/ consumers/ routes/更清晰。5. 与 CI/CD 集成避免人工操作。十九、常见问题Q1decK 会删除未声明配置吗会。默认声明式同步所以YAML 中不存在的对象可能被删除。因此deckdiff非常重要。Q2能部分同步吗可以。支持--select-tag例如deck gatewaysync\--select-tag team-aQ3适合大型团队吗非常适合。因为它天然支持GitOpsReview审计自动化二十、decK 的核心价值总结decK 真正解决的是API Gateway 配置治理问题。它把手工点 UI升级成声明式配置 GitOps 自动化这是现代平台工程的重要组成部分。二十一、总结decK 是 Kong 生态里极其重要的工具。它让 Kong 配置可版本化可审计可回滚可自动化可 GitOps 化如果说Kong API Gateway那么decK Kong 的配置操作系统对于中大型团队来说decK 几乎是生产环境的标准配置管理方案。