概述

Kong 是一个流行的高性能网关。
在本文中,我们将会演示如何通过 Docker 来安装和部署 Kong 及其相关依赖服务。

KongGateway 安装 StepByStep

Step1: 拉取相关镜像

  1. docker pull kong/kong-gateway:2.7.0.0-alpine # Kong
  2. docker pull postgres:9.6 # 依赖 DB

Step2: 创建容器网络

  1. docker network create kong-network

Step3: 启动数据库

  1. # 将本地目录挂载至容器中指的数据持久化
  2. mkdir -p /Users/wangzhe/Desktop/services/postgres
  3. chmod -R 777 /Users/wangzhe/Desktop/services/postgres
  4. docker run -d --name postgres \
  5. --network=kong-network \
  6. -p 5432:5432 \
  7. -e "POSTGRES_USER=kong" \
  8. -e "POSTGRES_DB=kong" \
  9. -e "POSTGRES_PASSWORD=password" \
  10. -v /Users/wangzhe/Desktop/services/postgres:/var/lib/postgresql/data \
  11. postgres:9.6

Step4: 初始化数据库Schema

  1. docker run --rm --network=kong-network \
  2. -e "KONG_DATABASE=postgres" \
  3. -e "KONG_PG_HOST=postgres" \
  4. -e "KONG_PG_PASSWORD=password" \
  5. -e "KONG_PASSWORD=password" \
  6. kong/kong-gateway:2.7.0.0-alpine kong migrations bootstrap

Step5: 启动 Kong 网关服务

  1. docker run -d --name kong \
  2. --network=kong-network \
  3. -e "KONG_DATABASE=postgres" \
  4. -e "KONG_PG_HOST=postgres" \
  5. -e "KONG_PG_USER=kong" \
  6. -e "KONG_PG_PASSWORD=password" \
  7. -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
  8. -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \
  9. -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \
  10. -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \
  11. -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \
  12. -e "KONG_ADMIN_LISTEN=0.0.0.0:8001" \
  13. -e "KONG_ADMIN_GUI_URL=http://{HOSTNAME}:8002" \
  14. -p 8000:8000 \
  15. -p 8443:8443 \
  16. -p 8001:8001 \
  17. -p 8444:8444 \
  18. -p 8002:8002 \
  19. -p 8445:8445 \
  20. -p 8003:8003 \
  21. -p 8004:8004 \
  22. kong/kong-gateway:2.7.0.0-alpine

Step6: 访问 admin 服务验证 Kong 官方正常启动

  1. curl -i -X GET --url http://127.0.0.1:8001/services

此时,你应该能够看到 HTTP 请求已经正常了,且返回码为 200。

Step7: 浏览器访问 Kong Web 管理页面看一下吧

地址:http://localhost:8002/overview
正常情况下,你应该能够看到如下 Web 管理页面:
image.png
但是需要注意的是,Kong Manager 中大部分功能都是企业版功能,需要付费购买 licenses 后才能使用。
为了使用 Web 页面进行 Kong 相关的管理,下面,我们再来安装一个 Konga WEB 管理服务。

Konga 安装 StepByStep

Step1: 拉取镜像

  1. docker pull pantsel/konga:latest

Step2: 初始化数据库 Schema

  1. docker run --rm \
  2. --network=kong-network \
  3. pantsel/konga:latest \
  4. -c prepare -a postgres -u postgresql://kong:password@postgres:5432/konga

Step3: 启动 Konga 服务

  1. docker run -d -p 1337:1337 \
  2. --network kong-network \
  3. --name konga \
  4. -e "NODE_ENV=development" \
  5. -e "TOKEN_SECRET=xilihuala" \
  6. -e "DB_ADAPTER=postgres" \
  7. -e "DB_HOST=postgres" \
  8. -e "DB_PORT=5432" \
  9. -e "DB_USER=kong" \
  10. -e "DB_PASSWORD=password" \
  11. -e "DB_DATABASE=konga" \
  12. pantsel/konga

Step4: 访问 Web 页面看一下吧

地址:http://localhost:1337/
image.png
首次访问后,你应该能看到如下页面,需要创建一个 ADMIN 用户。
注册用户后,再次输入对应的邮箱和密码即可完成登录。
登录后,你应该会再次看到如下的页面:
image.png
可以看到,你希望对 Konga 绑定一个对应的 Kong 服务从而实现能够通过 Konga 来进行 Kong 的管理。
由于我们的 Kong 服务启动时是免密启动的,因此我们只需要通过 DEFAULT 方式来配置 Konga 对 Kong 的连接即可。
其中:

  • Name 字段可以根据个人意愿填写,保证唯一即可。
  • Admin URL 对应的是 Kong 服务的 Admin URL 地址,此处为:http://kong:8001/

填写完成并保存后,可以看到如下页面:
image.png
至此为止,我们 Kong 及 Konga 的服务就搭建完成了。