Kong网关介绍以及在Docker上部署容器以及Dashboard

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Kong 是在客户端和(微)服务间转发API通信的API网关,通过插件扩展功能

一、Kong介绍
Kong 是在客户端和(微)服务间转发API通信的API网关,通过插件扩展功能。Kong 有两个主要组件:
1、Kong Server :基于nginx的服务器,用来接收 API 请求。
2、Apache Cassandra:用来存储操作数据。
你可以通过增加更多 Kong Server 机器对 Kong 服务进行水平扩展,通过前置的负载均衡器向这些机器分发请求。根据文档描述,两个Cassandra节点就足以支撑绝大多数情况,但如果网络非常拥挤,可以考虑适当增加更多节点。

对于开源社区来说,Kong 中最诱人的一个特性是可以通过插件扩展已有功能,这些插件在 API 请求响应循环的生命周期中被执行。插件使用 Lua 编写,而且Kong还有如下几个基础功能:HTTP 基本认证、密钥认证、CORS( Cross-origin Resource Sharing,跨域资源共享)、TCP、UDP、文件日志、API 请求限流、请求转发以及 nginx 监控。
以上即是对kong网关的介绍,接下来直接进入实操环节。
二、在Docker上部署Kong
1、创建一个网桥
docker network create kong-net

2、创建数据库Postgresql容器
在命令中把数据库产生的数据文件挂在在硬盘上,防止容器奔溃数据丢失。
docker run -d --name kong-database --network=kong-net -p 5432:5432 -e "POSTGRES_USER=kong" -e "POSTGRES_DB=kong" -e "POSTGRES_PASSWORD=123456" -v /home/postgresql/data:/var/lib/postgresql/data -v /etc/localtime:/etc/localtime --restart=always postgres:9.6

3、准备Kong的数据库,进行数据库初始化
docker run --rm --network=kong-net -e "KONG_DATABASE=postgres" -e "KONG_PG_HOST=kong-database" -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" -e "KONG_PG_PASSWORD=123456" kong:latest kong migrations bootstrap
0.png

对于Kong<0.15:Kong版本低于0.15(最高0.14)的注意事项,请使用up子命令而不是bootstrap。另请注意,如果Kong <0.15,则不应同时进行迁移; 只有一个Kong节点应该一次执行迁移。对于0.15,1.0及以上的孔,此限制被取消。

三、Kong的Docker部署
1、Kong的安装部署
docker run -d --name kong \

 --network=kong-net \
 -e "KONG_DATABASE=postgres" \
 -e "KONG_PG_HOST=kong-database" \
 -e "KONG_PG_PASSWORD=123456" \
 -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
 -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \
 -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \
 -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \
 -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \
 -e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \
 -p 8000:8000 \
 -p 8443:8443 \
 -p 8001:8001 \
 -p 8444:8444 \
 -v /etc/localtime:/etc/localtime \
 --restart=always \
 kong:latest

四、kong-dashboard
Kong 网关的 Dashboard 目前有两个毕竟大的开源的Dashboard,分别是
A、 pgbi/kong
https://github.com/PGBI/kong-dashboard/commits/3.0
B、 pantsel/konga
https://github.com/pantsel/konga

从维护更新的频率来看,pgbi/kong 在走下坡路,而konga维护良好,建议大家使用konga,他们俩的操作界面大同小异,比如我目前使用的是Konga
注:需要注意的是0.10.x开始的KONGA只支持0.11版本以上的KONG。

1、为了方便,我们数据库使用跟kong一样的,因此我们先创建表,创建完后就可以退出。并且删除kong_dashboard

docker run -ti --network=kong-net -e "DB_ADAPTER=postgres" -e "DB_HOST=kong-database" -e "DB_PORT=5432" -e "DB_USER=kong" -e "DB_PASSWORD=123456" -e "DB_DATABASE=kong" -e "NODE_ENV=development" --name kong_dashboard pantsel/konga

注:如果要单独的创建一个数据库可以重复执行第一部分的创建数据库命令

2、运行konga

docker run -d -p 1337:1337 --network=kong-net -e "DB_ADAPTER=postgres" -e "DB_HOST=kong-database" -e "DB_PORT=5432" -e "DB_USER=kong" -e "DB_PASSWORD=123456" -e "DB_DATABASE=kong" -e "NODE_ENV=production" -v /etc/localtime:/etc/localtime --restart=always --name kong_dashboard pantsel/konga

3、打开KONGA
地址:http://192.168.75.161:1337
会跳转到先注册,需要创建管理员账号
1.png

账号:Louie 密码:123456789

4、创建与kong的连接
因为konga与kong是同在一个网桥中,因此可以直接使用网桥分配的IP进行连接
2.png

创建完后,显示出界面
3.png

五、总结
Kong网关的功能非常强大,可以适用于任何的大型项目,而且扩展方便。

目录
相关文章
|
2月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
458 108
|
3月前
|
存储 监控 测试技术
如何将现有的应用程序迁移到Docker容器中?
如何将现有的应用程序迁移到Docker容器中?
264 57
|
2月前
|
运维 监控 数据可视化
小白也能部署应用,3个免费的容器化部署工具测评
本文对比了三款容器化部署工具:Docker Compose、Portainer 和 Websoft9。Docker Compose 适合开发者编排多容器应用,Portainer 提供图形化管理界面,而 Websoft9 则面向中小企业和非技术人员,提供一键部署与全流程运维支持,真正实现“开箱即用”。三款工具各有定位,Websoft9 更贴近大众用户需求。
小白也能部署应用,3个免费的容器化部署工具测评
|
4月前
|
存储 运维 安全
Docker化运维:容器部署的实践指南
Docker化运维:容器部署的实践指南
|
2月前
|
运维 数据可视化 C++
2025 热门的 Web 化容器部署工具对比:Portainer VS Websoft9
2025年热门Web化容器部署工具对比:Portainer与Websoft9。Portainer以轻量可视化管理见长,适合技术团队运维;Websoft9则提供一站式应用部署与容器管理,内置丰富开源模板,降低中小企业部署门槛。两者各有优势,助力企业提升容器化效率。
199 1
2025 热门的 Web 化容器部署工具对比:Portainer VS Websoft9
|
3月前
|
存储 监控 Java
如何对迁移到Docker容器中的应用进行性能优化?
如何对迁移到Docker容器中的应用进行性能优化?
254 59
|
3月前
|
NoSQL Redis Docker
使用Docker Compose工具进行容器编排的教程
以上就是使用Docker Compose进行容器编排的基础操作。这能帮你更有效地在本地或者在服务器上部署和管理多容器应用。
328 11
|
3月前
|
缓存 Java Docker
如何对应用代码进行优化以提高在Docker容器中的性能?
如何对应用代码进行优化以提高在Docker容器中的性能?
210 1
|
2月前
|
安全 持续交付 Docker
Docker:重塑现代软件交付的容器引擎
Docker:重塑现代软件交付的容器引擎