Windows Docker 部署 Kong 网关

一、Kong 网关版本

Kong Gateway 有开源免费版和企业版,两个不同的版本。当前企业版有些功能是需要收费的,今天这里部署的是开源免费版本 3.6.x 系列。两个版本之间的区别,请见 官方文档
在这里插入图片描述

二、部署 Kong 网关

部署 Kong 网关,需要先部署依赖的 db、初始化 db 数据,然后再进行 kong 网关部署。

2.1 创建 kong-net 网络

打开 Docker Desktop 切换到 Linux 容器,然后在 PowerShell 执行下面命令,则会创建 kong-net 网络,如果已存在 kong-net 网络,则不需要创建。

docker network create kong-net

2.2 部署 PostgreSQL

接着,PowerShell 执行下面命令,会部署 Kong Gateway 依赖的 PostgreSQL 数据库。这里安装的是 13 版本,DB 和 Kong Gateway 的般般之间会有依赖关系,不建议部署其他版本。

docker run -d -p 5432:5432 `
--name kong-postgresql-13 `
--network=kong-net `
-v C:\ProgramDatas\Docker\Containers\kong-database-13:/var/lib/postgresql/data `
-e "POSTGRES_USER=kong" `
-e "POSTGRES_DB=kong" `
-e "POSTGRES_PASSWORD=kongpass" `
postgres:13

-参数 -p 5432:5432 将 PostgreSQL 默认端口 5432 映射到物理机的 5432 端口。
-参数 --network=kong-net 指定 PostgreSQL 容器的网络。
-参数 -v C:\ProgramDatas\Docker\Containers\kong-database-13:/var/lib/postgresql/data 将 PostgreSQL 容器内的 /var/lib/postgresql/data 目录映射到物理机的 C:\ProgramDatas\Docker\Containers\kong-database-13 进行数据持久化。
-参数 -e “POSTGRES_USER=kong” 指定 PostgreSQL 的用户名为 kong。
-参数 -e “POSTGRES_DB=kong” 指定 PostgreSQL 的数据库名称为 kong。
-参数 -e “POSTGRES_PASSWORD=kongpass” 指定 PostgreSQL 的用户密码为 kongpass。

2.3 初始化 PostgreSQL

接着,PowerShell 执行下面命令,会在 postgres 数据库,初始化 Kong Gateway 数据。命令里面也指定了 Kong Gateway 的版本 3.6.1.0。

docker run --rm `
--network=kong-net `
-e "KONG_DATABASE=postgres" `
-e "KONG_PG_HOST=kong-postgresql-13" `
-e "KONG_PG_PASSWORD=kongpass" `
-e "KONG_PASSWORD=test" `
kong/kong-gateway:3.6.1.0 `
kong migrations bootstrap

-参数 -e “KONG_DATABASE=postgres” 指定数据库的类型为 PostgreSQL 数据库。
-参数 “KONG_PG_HOST=kong-postgresql-13” 指定 PostgreSQL 的服务器地址,应为同在 kong-net 网络,所以就可以使用 PostgreSQL 的容器名称,即主机名。
-参数 “KONG_PG_PASSWORD=kongpass” 连接 PostgreSQL 的密码。
-参数 kong/kong-gateway:3.6.1.0 指定 kong-gateway 初始化数据的版本。

2.4 部署 Kong Gateway

接着,PowerShell 执行下面命令,会部署 kong-gateway 服务。这里安装的是 3.6.1.0 ,如果安装其他版本,需要注意依赖 DB 的对应版本。

docker run -d `
-p 8000:8000 -p 8443:8443 `
-p 8001:8001 -p 8444:8444 `
-p 8002:8002 -p 8445:8445 `
-p 8003:8003 -p 8004:8004 `
--name kong-gateway-3.6.1.0 `
--network=kong-net `
-e "KONG_DATABASE=postgres" `
-e "KONG_PG_HOST=kong-postgresql-13" `
-e "KONG_PG_USER=kong" `
-e "KONG_PG_PASSWORD=kongpass" `
-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" `
-e "KONG_ADMIN_GUI_URL=http://localhost:8002" `
-e KONG_LICENSE_DATA  `
kong/kong-gateway:3.6.1.0

-参数 -e “KONG_DATABASE=postgres” 指定 Kong Gateway 使用的数据库类型为 PostgreSQL 数据库。
-参数 -e “KONG_PG_HOST=kong-postgresql-13” 指定 PostgreSQL 的服务器地址,应为同在 kong-net 网络,所以就可以使用 PostgreSQL 的容器名称,即主机名。
-参数 -e “KONG_PG_USER=kong” 连接 PostgreSQL 的用户名。
-参数 -e “KONG_PG_PASSWORD=kongpass” 连接 PostgreSQL 的密码。
-参数 -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” 指定 Kong Gateway 相关日志的存储目录。
-参数 -e “KONG_ADMIN_LISTEN=0.0.0.0:8001” 指定 Kong Gateway Admin API 的端口为 8001。
-参数 -e “KONG_ADMIN_GUI_URL=http://localhost:8002” 指定 Kong Gateway 默认 UI 管理界面访问端口为 8002。

三、部署 KongA UI

部署 KongA 管理界面,需要先部署依赖的 db、初始化 db 数据,然后再进行 KongA 部署。

3.1 部署 PostgreSQL

KongA 也依赖于 DB,所以先部署一个 KongA 需要的数据库 PostgreSQL。建议不要和 Kong 所使用的数据库放一起,解耦。在 PowerShell 执行下面命令,即可启动一个 PostgreSQL 服务,这里使用的是 9.6 版本,不建议使用其他版本。

docker run -d -p 5433:5432 `
--name konga-postgresql-9.6 `
--network=kong-net `
--privileged=true `
-v C:\ProgramDatas\Docker\Containers\konga-postgresql-9.6:/var/lib/postgresql/data `
-e "POSTGRES_USER=konga" `
-e "POSTGRES_DB=konga" `
-e "POSTGRES_PASSWORD=12345" `
postgres:9.6

-参数 -v C:\ProgramDatas\Docker\Containers\konga-postgresql-9.6:/var/lib/postgresql/data 将 PostgreSQL 容器内的 /var/lib/postgresql/data 目录映射到物理机的 C:\ProgramDatas\Docker\Containers\kong-database-9.6 进行数据持久化。
-参数 -e “POSTGRES_USER=kong” 指定 PostgreSQL 的用户名为 konga。
-参数 -e “POSTGRES_DB=kong” 指定 PostgreSQL 的数据库名称为 konga。
-参数 -e “POSTGRES_PASSWORD=kongpass” 指定 PostgreSQL 的用户密码为 12345。

3.2 初始化 PostgreSQL

KongA 也需要初始化数据,在 PowerShell 执行下面命令,即可初始化 KongA 数据。命令里面也指定了KongA 的版本 0.14.9。

docker run --rm `
--network=kong-net `
pantsel/konga:0.14.9 `
-c prepare `
-a postgres `
-u postgres://konga:12345@konga-postgresql-9.6:5432/konga

-参数 -u postgres://konga:12345@konga-postgresql-9.6:5432/konga 指定连接 PostgreSQL 的信息(db host、db user、db pwd、db name)。

3.3 部署 KongA

接着,PowerShell 执行下面命令,会部署 KongA 服务。这里安装的是 0.14.9 ,如果安装其他版本,需要注意依赖 DB 的对应版本。KongA 已经在 2020 停止更新了,这里安装的是最后一个版本。

docker run -d -p 1337:1337 `
--net=kong-net `
-e "DB_ADAPTER=postgres" `
-e "DB_HOST=konga-postgresql-9.6" `
-e "DB_PORT=5432" `
-e "DB_USER=konga" `
-e "DB_PASSWORD=12345" `
-e "DB_DATABASE=konga" `
-e "NODE_ENV=production" `
--name konga-0.14.9 `
pantsel/konga:0.14.9

3.4 连接 Kong Gateway

打开浏览器,访问 http://localhost:1337 地址,第一次登录需要初始化用户信息。连接 Kong Gateway ,如果 Kong Gateway 和 KongaA 在同一个 Docker 需要用 http://host.docker.internal:8001 地址。否则,使用 http://127.0.0.1:8001/ 则会在 KongA 容器内部,找到自己的 8001 端口,无法连接到 Kong Gateway,这一点日志也有体现。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟厚非

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值