概述
Kong 是一个流行的高性能网关。
在本文中,我们将会演示如何通过 Docker 来安装和部署 Kong 及其相关依赖服务。
KongGateway 安装 StepByStep
Step1: 拉取相关镜像
docker pull kong/kong-gateway:2.7.0.0-alpine # Kong
docker pull postgres:9.6 # 依赖 DB
Step2: 创建容器网络
docker network create kong-network
Step3: 启动数据库
# 将本地目录挂载至容器中指的数据持久化
mkdir -p /Users/wangzhe/Desktop/services/postgres
chmod -R 777 /Users/wangzhe/Desktop/services/postgres
docker run -d --name postgres \
--network=kong-network \
-p 5432:5432 \
-e "POSTGRES_USER=kong" \
-e "POSTGRES_DB=kong" \
-e "POSTGRES_PASSWORD=password" \
-v /Users/wangzhe/Desktop/services/postgres:/var/lib/postgresql/data \
postgres:9.6
Step4: 初始化数据库Schema
docker run --rm --network=kong-network \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=postgres" \
-e "KONG_PG_PASSWORD=password" \
-e "KONG_PASSWORD=password" \
kong/kong-gateway:2.7.0.0-alpine kong migrations bootstrap
Step5: 启动 Kong 网关服务
docker run -d --name kong \
--network=kong-network \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=postgres" \
-e "KONG_PG_USER=kong" \
-e "KONG_PG_PASSWORD=password" \
-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" \
-e "KONG_ADMIN_GUI_URL=http://{HOSTNAME}:8002" \
-p 8000:8000 \
-p 8443:8443 \
-p 8001:8001 \
-p 8444:8444 \
-p 8002:8002 \
-p 8445:8445 \
-p 8003:8003 \
-p 8004:8004 \
kong/kong-gateway:2.7.0.0-alpine
Step6: 访问 admin 服务验证 Kong 官方正常启动
curl -i -X GET --url http://127.0.0.1:8001/services
此时,你应该能够看到 HTTP 请求已经正常了,且返回码为 200。
Step7: 浏览器访问 Kong Web 管理页面看一下吧
地址:http://localhost:8002/overview
正常情况下,你应该能够看到如下 Web 管理页面:
但是需要注意的是,Kong Manager 中大部分功能都是企业版功能,需要付费购买 licenses 后才能使用。
为了使用 Web 页面进行 Kong 相关的管理,下面,我们再来安装一个 Konga WEB 管理服务。
Konga 安装 StepByStep
Step1: 拉取镜像
docker pull pantsel/konga:latest
Step2: 初始化数据库 Schema
docker run --rm \
--network=kong-network \
pantsel/konga:latest \
-c prepare -a postgres -u postgresql://kong:password@postgres:5432/konga
Step3: 启动 Konga 服务
docker run -d -p 1337:1337 \
--network kong-network \
--name konga \
-e "NODE_ENV=development" \
-e "TOKEN_SECRET=xilihuala" \
-e "DB_ADAPTER=postgres" \
-e "DB_HOST=postgres" \
-e "DB_PORT=5432" \
-e "DB_USER=kong" \
-e "DB_PASSWORD=password" \
-e "DB_DATABASE=konga" \
pantsel/konga
Step4: 访问 Web 页面看一下吧
地址:http://localhost:1337/
首次访问后,你应该能看到如下页面,需要创建一个 ADMIN 用户。
注册用户后,再次输入对应的邮箱和密码即可完成登录。
登录后,你应该会再次看到如下的页面:
可以看到,你希望对 Konga 绑定一个对应的 Kong 服务从而实现能够通过 Konga 来进行 Kong 的管理。
由于我们的 Kong 服务启动时是免密启动的,因此我们只需要通过 DEFAULT 方式来配置 Konga 对 Kong 的连接即可。
其中:
- Name 字段可以根据个人意愿填写,保证唯一即可。
- Admin URL 对应的是 Kong 服务的 Admin URL 地址,此处为:http://kong:8001/
填写完成并保存后,可以看到如下页面:
至此为止,我们 Kong 及 Konga 的服务就搭建完成了。