docker部署kong网关
-
依赖环境
序号 名称 版本 1 CentOS 7.9 3.10.0-1160.25.1.el7.x86_64 2 Docker 20.10.7 3 Kong Gateway 2.4.1.0 4 PostgreSQL 9.6 -
创建Kong Gateway
-
下载Kong Gateway Docker镜像
# 下载镜像 docker pull kong/kong-gateway:2.4.1.0-alpine # 重新打标签 docker tag kong/kong-gateway:2.4.1.0-alpine kong-ee # 验证结果 docker image ls
-
创建基础网络
docker network create kong-ee-net
-
创建数据库
docker run -d --name kong-ee-database \ --network=kong-ee-net \ -p 5432:5432 \ -e "POSTGRES_USER=kong" \ -e "POSTGRES_DB=kong" \ -e "POSTGRES_PASSWORD=kong" \ postgres:9.6
-
初始化数据库
docker run --rm --network=kong-ee-net \ -e "KONG_DATABASE=postgres" \ -e "KONG_PG_HOST=kong-ee-database" \ -e "KONG_PG_PASSWORD=kong" \ -e "KONG_PASSWORD=kong" \ kong-ee kong migrations bootstrap
-
启动Kong Gateway服务
docker run -d --name kong-ee --network=kong-ee-net \ -e "KONG_DATABASE=postgres" \ -e "KONG_PG_HOST=kong-ee-database" \ -e "KONG_PG_PASSWORD=kong" \ -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://0.0.0.0: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-ee
-
验证Kong Gateway服务
# 验证admin管理后台服务端口,正常则返回200 OK curl -i -X GET --url http://0.0.0.0:8001/services # 验证Kong Manager是否启动,正常则返回200 OK curl -I -XGET http://0.0.0.0:8002 # 如果访问正常则使用浏览器访问<http://kong_gateway_ipaddr:8002>验证页面是否正常
-
-
配置服务
-
注册服务
curl -i -X POST --url http://0.0.0.0:8001/services/ --data 'name=baidu-service' --data 'url=http://www.baidu.com'
-
添加路由
curl -i -X POST --url http://localhost:8001/services/baidu-service/routes --data 'hosts[]=baidu.com'
-
验证服务
curl -i -X GET --url http://localhost:8000/ --header 'Host: baidu.com'
经过测试总结如下:
-
“注册服务”类似于Nginx中定义upstream反向代理服务器;
-
“添加路由”类似于Nginx中Server配置段,data中到hosts类似于 server_name;
upstream baidu-service { server www.baidu.com; } server { server_name baidu.com; proxy_pass baidu-service; }
-