API网关Kong部署配置 - yiyixiaozhi/readingNotes GitHub Wiki


title: API网关Kong部署配置 date: 2020-5-18 description: Kong的部署和配置 categories: - 工具 tags: - Kong

部署Kong环境

# 创建docker网络
$ docker network create kong-net
# 启动数据库
$ docker run -d --name kong-database \
               --network=kong-net \
               -p 5432:5432 \
               -e "POSTGRES_USER=kong" \
               -e "POSTGRES_DB=kong" \
               -e "POSTGRES_PASSWORD=kong" \
               postgres:9.6
# 启动一个短暂的容器来准备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:latest kong migrations bootstrap
# 启动Kong
$ docker run -d --name kong \
     --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" \
     -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 0.0.0.0:8001:8001 \
     -p 0.0.0.0:8444:8444 \
     kong:latest
# 通过启动一个短暂的容器来准备Konga的数据库
$ docker run --rm \ 
     --network=kong-net \
     pantsel/konga -c prepare -a postgres -u postgresql://kong:kong@kong-database:5432/konga_db
# 启动konga
# https://segmentfault.com/a/1190000020375323?utm_source=tag-newest
# https://www.cnblogs.com/Zzang/p/11574072.html
$ docker run -p 1337:1337 \
              --network kong-net \
              -e "TOKEN_SECRET=bryan" \
              -e "DB_ADAPTER=postgres" \
              -e "DB_URI=postgresql://kong:kong@kong-database:5432/konga" \
              -e "NODE_ENV=development" \
              --name konga \
              pantsel/konga

挂载容器内的kong log到宿主机上

查看容器id:

# docker ps -a
CONTAINER ID        IMAGE                                                 COMMAND                  CREATED             STATUS              PORTS                                                                NAMES
37711b009c2a        pantsel/konga                                         "/app/start.sh"          5 days ago          Up 54 minutes       0.0.0.0:1337->1337/tcp                                               konga
d73d712a0509        kong:latest                                           "/docker-entrypoin..."   5 days ago          Up 54 minutes       0.0.0.0:8000-8001->8000-8001/tcp, 0.0.0.0:8443-8444->8443-8444/tcp   kong
59b3069dd019        postgres:9.6                                          "docker-entrypoint..."   5 days ago          Up 54 minutes       0.0.0.0:5432->5432/tcp                                               kong-database

停止docker服务,修改容器配置文件:

systemctl stop docker.service
# 进入宿主机容器的配置文件目录
cd /var/lib/docker/containers/d73d712a0509eb0b8fc150c7a32a0b3053d0a8ff44c12f4fda5c9ee2a6bc3369
vi hostconfig.json
将hostconfig.json中"Binds":[]修改为"Binds":["/home/ftpsite/yyxz/sda1.5TB/kong-log:/home/kong/kong-log"]
vi config.v2.json
将config.v2.json中"MountPoints":{}修改为
"MountPoints":{"/home/kong/kong-log":{"Source":"/home/ftpsite/yyxz/sda1.5TB/kong-log","Destination":"/home/kong/kong-log","RW":true,"Type":"bind","Spec":{"Type":"bind","Source":"/home/ftpsite/yyxz/sda1.5TB/kong-log","Target":"/home/kong/kong-log"}}}

修改路径权限:
chmod -R 777 /home/ftpsite/yyxz/sda1.5TB/kong-log/

在konga中设置好容器内的log日志位置(/home/kong/kong-log/kong.log),启动docker,查看日志文件:

# docker exec -it kong sh
/ $ ls ~/kong-log/
kong.log

轩远hbxy02.yyxz.link主机的log: /var/lib/docker/containers/63d3aa3a38208ae2b1e66704b77f7d8c1b75485ff630bbe36635bf73a95b741e/63d3aa3a38208ae2b1e66704b77f7d8c1b75485ff630bbe36635bf73a95b741e-json.log

让kong、postgres、konga自启:

docker update --restart=always d73d712a0509
docker update --restart=always 37711b009c2a
docker update --restart=always 59b3069dd019

参考文档:

⚠️ **GitHub.com Fallback** ⚠️