3、kong-kong部署-基于docker部署
docker部署微服务网关
1、部署docker环境:
2、构建kong的容器网络:
·创建一个docker自定义的网络、允许容器之间相互通信
·创建网络:docker network create kong-net
·查看docker网络:docker network list
3、搭建数据库环境:使用postgresql数据库
·先创建一个挂载点:docker volume create kong-volume #此方法创建的挂载点默认的路径在/var/lib/docker/volumes/kong-volume
·运行postgresql容器:
docker run -d --name kong-database \
--network=kong-net \
-p 5432:5432 \
-v kong-volume:/var/lib/postgresql/date \
-e "POSTGRES_USER=kong" \
-e "POSTGRES_DB=kong" \
-e "POSTGRES_PASSWORD=kong" \
postgres:9.6
4、初始化数据库和迁移数据库并生成kong数据库的表:
·docker run --rm \
--network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_PG_PASSWORD=kong" \
-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
kong:3.3.0 kong migrations bootstrap
5、启动kong容器
docker run -d --name kong \
--network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_PG_USER=kong" \
-e "KONG_PG_PASSWORK=kong" \
-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 \
-p 8443:8443 \
-p 8001:8001 \
-p 8444:8444 \
kong:3.3.0
————————————————————————————————————————
#解析:
docker run -d --name kong \ 容器名称
--network=kong-net \ 指定的docker网络
-e "KONG_DATABASE=postgres" \ 指定的数据库类型
-e "KONG_PG_HOST=kong-database" \ 指定刚才的数据库容器名称
-e "KONG_PG_PASSWORD=kong" \ 密码
-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" \ 后台错误日志目录
-v /var/kong/logs:/usr/local/kong/logs 将kong日志目录映射到我们创建的目录,如果需要的话,开启,,这个方便分布式日志采集
-e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \
-p 8000:8000 \
-p 8443:8443 \
-p 8001:8001 \
-p 8444:8444 \
kong:latest kong镜像
Kong默认端口有
8000:监听来自客户端的http,并转发给上游服务器
8443:监听来自客户端的https请求,并转发给上游服务器
8001:监听来自Admin API的http请求
8444:监听来自Admin API的https请求
——————————————————————————————————————————————————————————————
---------------------------konga部署-----------------------------
6、部署konga
·启动konga容器数据库(创建konga用的数据库容器)
·先创建挂载卷:docker volume create konga-postgresql
·创建数据库(postgresql数据库)
docker run -d --name konga-database \
--network=kong-net \
-p 5433:5432 \
-v konga-postgresq1:/var/1ib/postgresq1/data \
-e "POSTGRES_USER=onga" \
-e"POSTGRES_DB=konga" \
-e"POSTGRES_PASSWORD=konga \
postgres:9.6
7、初始化postgresql数据库
·docker run --rm --network=kong-net pantsel/konga:latest -c prepare -a postgres -u postgres://konga:konga@konga-database:5432/konga
8、启动konga容器
docker run -d -p 1337:1337 \
--network kong-net \
-e"DB_ADAPTER=postgres" \
-e "DB_URI=postgres://konga:konga@konga-database:5432/konga" \
-e "NODE_ENV=production" \
-e"DB_PASSWORD=konga" \
--name konga \
pantse1/konga
9、访问konga:ip:1337
1、登陆后创建用户
2、创建连接kong网关节点-点击激活-左边栏就多出了一些配置项
通过curl 请求来配置nginx的负载
配置upstream
curl -X POST http://localhost:8001/upstreams --data “name=helloUpstream”
新建组
配置target
curl -X POST http://localhost:8001/upstreams/helloUpstream/targets --data “target=localhost:3000” --data “weight=100”
在组名下新建target,(配置权重)
配置Service
curl -X POST http://localhost:8001/services --data “name=hello” --data “host=helloUpstream”
新建Service,对应组
配置route
curl -X POST http://localhost:8001/routes --data “paths[]=/hello” --data “service.id=
014edc3a-0fc8-4f03-b15c-05d8bc2d8368”
id是服务id
新建路由,当访问路径下hello时访问service
默认情况下,KONG监听的端口为:8000、8001、8443、8444
处理用户请求http:8000.https:8443
管理员进行管理http :8001 https:8444
8444:通过此端口,管理者可以对HTTP请求进行监控;
其中 8000/8443分别是用来监听来自客户端的Http和Https请求,等价于Nginx默认的80端口,而8001端口便是默认的管理端口,可以通过HTTP Restful API来动态管理Kong 的配置;