阅读 1036

Docker 部署 Kong 网关

Kong 镜像: hub.docker.com/_/kong

官网给定的用户安装手册上并没有设置 PG 的密码,导致如下问题无法启动

nginx: [error] init_by_lua error: /usr/local/share/lua/5.1/kong/init.lua:277: [PostgreSQL error] failed to >retrieve server_version_num: connection refused
stack traceback:[C]: in function 'assert'
/usr/local/share/lua/5.1/kong/init.lua:277: in function 'init'
init_by_lua:3: in main chunk

后在 issues 中找到问题原因及解决方法(里面还有个docker-compose):
github.com/Kong/docke.…

使用 docker 的安装

Kong 使用 postgresql 或 cassandra 存储数据,这里我们选用 PG

# 创建 pg 数据库 容器
docker run -d --name kong-database \
-p 5432:5432 \
-e "POSTGRES_USER=kong" \
-e "POSTGRES_DB=kong" \
-e "POSTGRES_PASSWORD=your_pg_password" \
postgres:9.6

# kong 数据迁移到 pg
docker run --rm \
--link kong-database:kong-database \ #将 kong-database 容器的地址引入注册到本容器
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_PG_PASSWORD=your_pg_password" \ # 官方文档未给出此参数 PG 可能不支持无密登录了
-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
kong kong migrations bootstrap

#创建 kong 容器
docker run -d --name kong \
--link kong-database:kong-database \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_PG_PASSWORD=your_pg_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, 0.0.0.0:8444 ssl" \
-p 8000:8000 \ # http 代理端口
-p 8443:8443 \ # https 代理端口
-p 8001:8001 \ # http 管理接口
-p 8444:8444 \ # https 管理接口
kong

#查看是否启动
docker ps

#如未启动通过日志查看问题
docker logs kong

#如正常启动 可访问管理Api(替换成你的IP)
curl -X GET http://192.168.20.6:8001
复制代码

因为 kong 服务是在容器中,所以设

KONG_ADMIN_LISTEN

为全局监听才能通过宿主机IP代理访问,宿主机则需对相应的映射端口做访问限制,如本机/内网访问,且不应该对外网可访问,不然谁都可以改你的Api网关策略了。

自定义 kong 配置文件

kong docker 镜像的配置文件路径为 /etc/kong/kong.conf
如需自定义配置文件,自行挂载即可。
kong 配置项手册:docs.konghq.com/1.0.x...

...
-v /opt/kong/kong.conf:/etc/kong/kong.conf
...
复制代码

安装kong监控插件konga

docker run -d -p 1337:1337 \
        --network kong-net \
        --name konga \
        -e "NODE_ENV=production"  \
        -e "DB_ADAPTER=postgres" \
        -e "DB_URI=postgresql://kong:your_pg_password@192.168.38.149:5432/kong" \
        pantsel/konga
复制代码

管理网关的API的使用教程这里就不写了,自行觅食吧~简单的看看下面这篇可以的
Kong 集成 Jwt 插件:www.cnkirito.moe/kong...
kong服务网关API:www.jianshu.com/p/ef6...

文章分类
后端
文章标签