前言
最近在想怎么将一个接口给外部提供服务,并且可以根据和对放的关系,设置不同的期限或者服务大小?并且有友好的可视化页面!这让我了解到了 API 网关,所以我开始研究 Kong 和 Konga 的使用。备注:实际上我最开始研究的apisix,但是部署了好久因为etcd不支持 http 无法连接成功放弃了!
Kong 是一个强大的开源 API 网关,而 Konga 则是它的一个可视化管理工具。由于 Kong 使用postgres作为数据存储,所以我们需要三个镜像。下面是快速搭建 Kong 和 Konga 的完整流程,希望能帮助到有类似需求的开发者。
部署可能用到的命令
# 启动
docker-compose up -d
# 关闭
docker-compose stop
# 查看日志
docker logs xxxx
# 查看容器列表
docker ps -a
部署
1. 创建 docker-compose.yml 文件
首先,在你的工作目录中创建一个 docker-compose.yml 文件,内容如下:
version: '3.2'
services:
postgres:
image:postgres:9.6
container_name:kong-database
environment:
POSTGRES_USER:kong
POSTGRES_PASSWORD:kong
POSTGRES_DB:kong
volumes:
-postgres_data:/var/lib/postgresql/data
networks:
-kong-net
restart:unless-stopped
kong:
image:kong:2.8.1
container_name:kong
environment:
KONG_DATABASE:postgres
KONG_PG_HOST:postgres
KONG_PG_USER:kong
KONG_PG_PASSWORD:kong
KONG_PG_DATABASE:kong
KONG_PROXY_ACCESS_LOG:/dev/stdout
KONG_ADMIN_ACCESS_LOG:/dev/stdout
KONG_PROXY_ERROR_LOG:/dev/stderr
KONG_ADMIN_ERROR_LOG:/dev/stderr
KONG_ADMIN_LISTEN:0.0.0.0:8001
KONG_ADMIN_GUI_URL:http://localhost:8002
depends_on:
-postgres
ports:
-"8000:8000"
-"8001:8001"
-"8002:8002"
-"8443:8443"
-"8444:8444"
networks:
-kong-net
restart:unless-stopped
#堆代码 duidaima.com
konga:
image:pantsel/konga:0.14.9
container_name:konga
environment:
TOKEN_SECRET:konga-token-secret
DB_ADAPTER:postgres
DB_HOST:postgres
DB_USER:kong
DB_PASSWORD:kong
DB_DATABASE:kong
NODE_ENV:development# 第一次启动时设置为 development
depends_on:
-kong
ports:
-"1337:1337"
networks:
-kong-net
command:kongmigrationsbootstrap
restart:unless-stopped
networks:
kong-net:
driver:bridge
volumes:
postgres_data:
driver:local
注意:konga 的NODE_ENV第一次运行时要设置为development,因为生产环境默认是不会自动创建需要的表的。这是为了防止在生产环境破坏现有数据库。
对应的错误
'Details: error: relation "public.konga_users" does not exist\n'
2. 启动服务
在包含 docker-compose.yml 文件的目录中运行以下命令:
docker-compose up -d
3. 初始化 Kong 数据库
这部分是自动完成的。记得创建成功后修改NODE_ENV为product,在重新启动。
4. 访问 Konga 并完成设置

.打开浏览器,访问 **http://localhost:1337**。
.首次访问时,Konga 会提示你创建一个管理员账户。
.登录后,点击 Connections -> New Connection,配置 Kong 的连接信息:
.Kong Admin URL: http://kong:8001
.Name: 任意名称(如 admin)。
.点击 Connect,Konga 将连接到 Kong。
5. 验证安装
连接之后看到这个页面说明安装成功了!
结尾
今天的分享就这戏了,希望这篇文章能帮助大家快速上手Kong和Konga!。