Docker Compose 实战:Kong云原生API网关与PostgreSQL集成部署

10 分钟玩转 Kong + Konga:从 0 到生产级 API 网关实战 阶段推荐学习阶段小团队中型系统Kong 集群云原生Kong 不是“反向代理”。认证中心限流中心安全网关微服务入口可观测流量层。 阅读详情

1. 为什么选择Kong作为云原生API网关

第一次接触Kong是在2018年一个电商系统重构项目中,当时我们需要一个能够统一管理300+微服务接口的解决方案。经过多轮技术选型,最终选择了Kong,这个决定让我们的运维效率提升了近70%。Kong基于Nginx和OpenResty构建,单节点就能轻松处理每秒上万次API请求,这在当时完全碾压其他开源方案。

Kong的核心优势在于它的插件机制。上周我帮一个客户调试系统时,仅仅启用了Rate Limiting和JWT插件,就解决了他们最头疼的API滥用问题。这些插件就像乐高积木一样,可以按需组合:

  • 认证类:Basic Auth、Key Auth、JWT、OAuth2.0
  • 安全类:CORS、IP限制、Bot检测
  • 监控类:Prometheus、Zipkin
  • 流量控制:限流、熔断、缓存

实测数据表明,在16核32G的服务器上,Kong处理HTTP请求的延迟可以控制在5ms以内。更难得的是,它支持DB-less模式,去年我们在一个物联网项目中就用这种模式实现了毫秒级配置热更新。

2. Docker Compose部署全攻略

2.1 环境准备

建议使用Ubuntu 22.04 LTS,这是我测试过最稳定的组合。先确保安装最新版Docker和Compose:

# 安装Docker
sudo apt-get update
sudo apt-get install docker.io

# 安装Compose插件
sudo apt-get install docker-compose-plugin

验证安装:

docker --version
docker compose version

2.2 编写Compose文件

这是我优化过的docker-compose.yaml,增加了健康检查和资源限制:

version: '3.8'

services:
  kong-db:
    image: postgres:13
    container_name: kong-db
    environment:
      POSTGRES_DB: kong
      POSTGRES_USER: kong
      POSTGRES_PASSWORD: kongpass
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U kong"]
      interval: 5s
    deploy:
      resources:
        limits:
          cpus: '1'
          memory: 2G

  kong-migrations:
    image: kong:3.4
    depends_on:
      kong-db:
        condition: service_healthy
    environment:
      KONG_DATABASE: postgres
      KONG_PG_HOST: kong-db
      KONG_PG_PASSWORD: kongpass
    command: "kong migrations bootstrap"
    restart: on-failure

  kong:
    image: kong:3.4
    depends_on:
      kong-migrations:
        condition: service_completed_successfully
    environment:
      KONG_DATABASE: postgres
      KONG_PG_HOST: kong-db
      KONG_PROXY_LISTEN: 0.0.0.0:8000
      KONG_ADMIN_LISTEN: 0.0.0.0:8001
    ports:
      - "8000:8000"
      - "8001:8001"
    healthcheck:
      test: ["CMD", "kong", "health"]
      interval: 10s

关键配置说明:

  • 使用PostgreSQL 13而非最新版,稳定性更好
  • 为数据库容器设置内存限制避免OOM
  • 健康检查确保服务依赖顺序
  • Kong 3.4版本经过长期验证

2.3 启动与验证

启动服务:

docker compose up -d

检查状态:

docker compose ps

测试Admin API:

curl -i http://localhost:8001/

3. 实战:订单系统集成案例

去年我们为某零售企业实施的架构如下:

用户 → Kong → 订单服务 → Kong → 库存服务

3.1 注册服务

# 注册订单服务
curl -X POST http://localhost:8001/services \
  --data name=order-service \
  --data url=http://order:5000

# 注册库存服务  
curl -X POST http://localhost:8001/services \
  --data name=inventory-service \
  --data url=http://inventory:6000

3.2 配置路由

# 订单服务路由
curl -X POST http://localhost:8001/services/order-service/routes \
  --data paths[]=/orders

# 库存服务路由
curl -X POST http://localhost:8001/services/inventory-service/routes \
  --data paths[]=/inventory

3.3 启用插件

限流配置(每秒10次请求):

curl -X POST http://localhost:8001/plugins \
  --data name=rate-limiting \
  --data config.policy=local \
  --data config.minute=10

JWT认证:

curl -X POST http://localhost:8001/plugins \
  --data name=jwt

4. 性能调优经验分享

在压力测试中我们发现几个关键点:

  1. Worker数量:设置为CPU核数的2倍

    environment:
      KONG_NGINX_WORKER_PROCESSES: "8"
    
  2. 缓存优化:增加实体缓存

    environment:
      KONG_DATABASE_CACHE_WARMUP_ENTITIES: "on"
      KONG_DATABASE_CACHE_TTL: 3600
    
  3. 连接池:PostgreSQL连接数配置

    environment:
      KONG_PG_POOL_SIZE: 20
      KONG_PG_MAX_CONNECTIONS: 1000
    

实测调优前后对比:

  • QPS从3k提升到15k
  • P99延迟从120ms降到35ms

5. 常见问题排查

问题1:数据库连接超时

  • 检查PostgreSQL日志
  • 增加连接超时时间:
    environment:
      KONG_PG_TIMEOUT: 10000
    

问题2:插件冲突

  • 禁用所有插件后逐个启用
  • 检查插件执行顺序:
    curl http://localhost:8001/plugins?enabled=true
    

问题3:内存泄漏

  • 使用kong health --verbose检查
  • 限制内存使用:
    deploy:
      resources:
        limits:
          memory: 1G
    

6. 进阶技巧

声明式配置:使用deck工具管理配置

deck sync -s kong.yaml

混合模式:DB-less与数据库模式混用

environment:
  KONG_DECLARATIVE_CONFIG: "/opt/kong/kong.yml"
  KONG_DATABASE: "postgres"

Prometheus监控:

curl -X POST http://localhost:8001/plugins \
  --data name=prometheus

访问指标:

http://localhost:8001/metrics
5分钟搞定Konga与Kong的Docker部署:新手避坑指南 本文提供了一份详细的Konga与Kong的Docker部署指南,帮助新手在5分钟内快速搭建API网关和可视化管理界面。通过Docker Compose配置和常见问题排查,实现高效的微服务架构管理,特别适合需要快速部署和可视化操作的开发团队。 阅读详情

相关推荐

5分钟搞定Kong网关+Konga可视化:docker-compose一键部署完整指南

本文详细介绍了如何使用docker-compose快速部署Kong网关和Konga可视化界面,实现微服务网关的容器化解决方案。通过5分钟的一键部署,开发者可以快速搭建包含PostgreSQL数据库的完整开发环境,适用于本地测试和生产级微服务架构。

weixin_42627853的博客 385

Kong安装教程(docker-compose)

Kong安装教程

wsq0713的博客 1879

kong-docker-compose:Docker Compose的Kong API Gateway

Kong与Docker-Compose 一个如何在Docker compose中使用Kong的示例。 此示例中有4种服务: kong :API网关 kong-migration :自我终止的容器,用于仅迁移Kong的数据库。 kong-database :Postgres数据库(Kong支持Postgres和Cassandra) 仪表板:Kong GUI 这是每个服务之间的依赖关系方向: “ kong-database”是唯一依赖于其他服务的服务 “ kong”和“ kong-migration”将取决于“ kong-database” “仪表盘”取决于“ kong” 我们将“ kong”服务的重启策略设置为“ always”,因为该服务取决于由“ kong-migration”处理的“ kong-database”的迁移状态,这是一个自终止服务,在执行完成后将被删除,所

Docker-compose 部署kong + konga

然后新建docker-compose.yaml文件,编辑如下内容。首先确保系统安装了docker和docker-compose。docker-compose启动容器。

圣灵骑士 1230

kongpose:在docker-compose上进行Kong and Konga(admin webapp)开发设置

空中姿势 使用运行开发设置。 包括作为管理员Webapp。 最初基于 ,并添加了以下内容: 添加包括保护 使用9.5上的PostgreSQL 9.6,以及较小尺寸的基于Alpine Linux的映像 首选使用kong-migration初始化数据库,而不是setup.sh wait-for-it.sh使用Docker自己的运行状况检查,而不是使用wait-for-it.sh 从生成的图像中删除bash ,因为此时不需要 整理docker-compose.yml ,删除links因为这里不是必需的 删除start.sh因为docker-compose restart仍然是单个命令 添加

ROS专栏—基于STM32F103的INA219电源数据采集

文章主要记录了stm32f103对ina219的数据采集

热爱生活、奋斗前行 2343

docker-compose 部署Kong、PG、Konga

命令: docker-compose up -d。

qiandeqiande的专栏 581

OpenCV中SGBM中BT代价计算

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

qq_27606639的博客 5969

docker、docker-compose 下安装kong网关、konga管理页面

docker、docker-compose 下安装kong网关、konga管理页面 文章目录docker、docker-compose 下安装kong网关、konga管理页面1、kong网关的安装--官网步骤1.1、下载镜像,然后镜像本地打个tag1.2、创建一个docker网络1.3、创建一个pgsql的实例1.4、初始化kong组件需要的数据库1.5、创建一个kong的实例2、kong安装的实际步骤--优化2.1、部署pgsql2.2、拉取镜像,2.6.0版本2.3、初始化kong的数据库2.4、创建k

鸭鸭的博客 3541

达梦DM8整合Seata AT模式实战:手把手教你搞定分布式事务(含源码修改避坑)

本文详细介绍了达梦DM8数据库与Seata AT模式的深度整合实战,包括环境准备、架构设计、源码适配及分布式事务落地。通过独创性源码改造,解决了Seata官方对达梦数据库AT模式支持的限制,为国产数据库在微服务架构中的应用提供了可靠的事务保障。

weixin_30764771的博客 328

从零开始,用MATLAB/Simulink手把手搭建一个无刷直流电机(BLDC)的控制模型

本文详细介绍了如何使用MATLAB/Simulink从零开始搭建无刷直流电机(BLDC)控制模型。通过可视化建模方法,避开繁琐的数学推导,直接构建三相逆变器、电机本体参数化模型、霍尔传感器与换相逻辑实现,以及速度闭环控制设计。文章还提供了PID控制器整定、抗饱和处理和系统调试的实用技巧,帮助工程师快速掌握BLDC控制系统的仿真与实现。

weixin_27741699的博客 250

使用Docker Compose部署Kong API网关的完整指南

Kong是一款云原生、平台无关且高度可扩展的API网关解决方案,以其卓越的性能和通过插件实现的强大扩展能力而闻名。作为现代微服务架构中的关键组件,Kong能够处理API流量管理、认证授权、监控分析等核心功能。 ## 为什么选择Docker Compose部署? Docker Compose提供了一种简单高效的方式来定义和运行多容器应用。对于Kong而言,使用Compose可以: 1. 快速搭...

gitblog_00032的博客 869

(3dnr)多帧视频图像去噪 (一)

视频图像去噪主要利用相邻帧间内容相似性,通过时域帧平均降低随机噪声。为避免运动物体产生"拖尾"现象,可采用运动自适应或运动补偿时域滤波方法。前者根据运动强度动态调整滤波系数,后者通过运动补偿使参考帧更接近当前帧。运动补偿方法虽能更好处理运动区域,但计算复杂度高且对快速运动场景效果有限。相比之下,运动自适应方法在实时视频处理中更具优势,能平衡去噪效果与硬件资源消耗。两种方法可根据场景动态切换以获得最佳去噪效果。

大熊 1858

Docker 部署 Kong云原生API网关

本文介绍了在Docker环境下部署Kong API网关和示例应用的完整流程。首先通过Docker Compose配置了基于PostgreSQL的Kong Gateway,包含数据库、迁移和网关服务。然后构建了一个模拟订单系统的微服务应用,包含前端UI、订单服务和库存服务三个组件,演示了通过Kong网关进行服务调用的完整流程。整个系统采用容器化部署,展示了Kong作为API网关在实际业务场景中的应用。部署完成后可通过浏览器访问Kong Manager GUI进行管理。

IT 7776

1分钟了解LangChain是什么?

是一个基于大型语言模型(LLM)开发应用程序的框架, 它旨在简化语言模型应用的开发流程,特别是在构建对话系统和其他基于语言的AI解决方案时.目标是将复杂的语言模型技术转化为可通过简单API调用实现的功能,从而使开发者能够更加专注于创造性的解决方案设计。高效地解决了开发大语言模型应用的痛点问题。Langchain 最主要的特色是可以将 LLM 应用研发过程中的交互 Prompt、LLM 模型调用、语言模型与环境互动的自适应等方式融为一体。

gorgor在码农 2620

OpenHarmony AI系列:神经网络处理单元(NPU)驱动架构与实现详解

NPU(Neural Processing Unit,神经网络处理单元)是专门为神经网络计算设计的硬件加速器。在OpenHarmony系统中,NPU驱动是通过NNRT(Neural Network Runtime,神经网络运行时)框架实现的,它作为中间桥梁连接上层AI推理框架和底层NPU硬件,实现AI模型的跨芯片推理计算。

m0_67505153的博客 660

docker-compose部署kong konga

kong是基于openresty的不错的网关,konga是一种管理kong的可视化开源项目,kong-dashboard也是一种kong的可视化开源项目,但是最近一次更新都是1年前的事了,所以选择了konga,下面是docker-compose部署整套环境的脚本。 version: "3" networks: kong-net: driver: bridge services: ...

johnhuster的专栏 4251

CelebA-HQ数据集下载【详细明了版】分辨率包括【64,128,256,512,1024】

CelebA-HQ 是在ICLR2018上,nVidia发表了一篇名为Progressive Growing of GANs for Improved Quality, Stability, and Variation的论文,文中通过训练高分辨率GAN生成了一个新的人脸数据集CelebA-HQ.CelebA是港科大汤晓鸥组收集的人脸数据集(总共200k图片),包括了人脸特征点(landmark),人脸属性(attribute)等信息,详细介绍参考链接[1]和[2]

zik的博客 1万+

Docker Compose一键部署Kong Gateway 3.9.0完整指南(含PostgreSQL配置)

本文提供了一份基于Docker Compose一键部署Kong Gateway 3.9.0的完整企业级指南。通过详细的配置文件,实现与PostgreSQL数据库的自动化集成部署,涵盖环境准备、服务编排、启动验证、性能调优及故障排查,帮助开发者快速搭建稳定可靠的API网关开发与测试环境。

x8y9z0的博客 822

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Docker Compose快速部署Kong Gateway:从零搭建API网关

本文详细介绍了如何使用Docker Compose快速部署Kong Gateway API网关。通过一个完整的docker-compose.yml配置文件示例,指导读者从零开始,一键启动包含数据库和网关的完整服务栈,并演示了创建首个API路由的步骤。该方法极大简化了传统部署的复杂性,实现了环境隔离与部署可重复性,是搭建开发测试或生产环境的理想选择。

weixin_28826545的博客 171

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

使用Docker Compose部署Kong与Konga一站式解决方案

使用Docker Compose部署Kong与Konga一站式解决方案 项目概述 该项目提供了一个便捷的方式来部署Kong API Gateway及其管理界面Konga,通过Docker Compose。它利用官方镜像,使得无需编译即可运行最新的Kong和Konga版本。整个架构围绕四个核心容器:PostgreSQL数据库(作为Kong的数据存储)、Kong迁移服务、Kong本身以及Konga管...

gitblog_00825的博客 975

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【亲测免费】 Kong-Konga Docker Compose 项目常见问题解决方案

Kong-Konga Docker Compose 项目常见问题解决方案 项目基础介绍 Kong-Konga Docker Compose 项目是一个基于 Docker Compose 的解决方案,用于快速部署和管理 Kong API 网关和 Konga 管理界面。该项目使用官方的 Kong 和 Konga 镜像,结合 PostgreSQL 数据库,提供了一个完整的 API 网关解决方案。主要编程...

gitblog_00580的博客 1098

docker 部署 kong

我整理的一些关于【Docker】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://edu.51cto.com/surl=QsXoR2使用 Docker 部署 Kong 的完整指南 引言 Kong 是一个强大的 API 网关,允许用户有效地管理和连接不同的微服务。在这篇文章中,我们会通过 Docker ...

weixin_40677764的博客 328
上一篇: [carplay] 树莓派I2C驱动实战:MFI芯片通信与挑战应答测试
下一篇: 跨平台迁移的艺术:金仓KDTS工具在异构环境下的部署与适配
omega
博客等级 码龄26年 1055粉丝 1548原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值