创建Kong
运行目录:
mkdir kong # 创建Kong目录
mkdir kong/data # 创建Kong运行数据目录
下载Kong安装包:
cd kong # 切换到Kong目录
wget https://github.com/Kong/kong/archive/refs/tags/2.4.0.tar.gz # 下载Kong安装包
解压Kong安装包:
tar -zvxf 2.4.0.tar.gz # 解压Kong安装包
编辑kong.conf
配置文件:
cp kong.conf.default kong.conf # 拷贝一份Kong配置文件
vim kong.conf
# 1、使用PostgreSQL数据库
database = postgres # postgres、cassandra、off
pg_host = 127.0.0.1
pg_port = 5432
pg_user = kong
pg_password = kong
# 2、使用Cassandra数据库
database = cassandra
cassandra_contact_points = 127.0.0.1
cassandra_port = 9042
cassandra_keyspace = kong
cassandra_username = kong
cassandra_password = kong
# 3、不使用数据库,基于内存存储数据
database = off
# 定位到NGINX
# 1、
proxy_listen = 0.0.0.0:80, 0.0.0.0:443 ssl # 为了方便使用,将8080调整为80,将8443调整为443
admin_listen = 0.0.0.0:8001, 127.0.0.1:8444 ssl # 管理ip调整为0.0.0.0是方便外部访问
:wq! # 保存并退出
初始化Kong
数据库(前提是使用PostgreSQL
):
./kong migrations bootstrap # Kong版本 >= 0.15
./kong migrations up # Kong版本 < 0.15
启动Kong
:
./kong start
./kong start -vv # -vv: 表示可以看到详细的启动过程日志信息
停止Kong
:
./kong stop # 直接停止正在运行的Kong
./kong quit -t 10 # 优雅地关闭关闭正在运行的Kong,-t 10 表示等待10秒后关闭
将Kong注册成服务:
vim kong.service
[Unit]
Description=dashboard system
After=NetworkManager.service
[Service]
Type=forking
ExecStart=/usr/local/dev/kong/start # 启动服务的命令或者脚本的绝对路径
ExecStop=/usr/local/dev/kong/stop # 停止服务的命令或者脚本的绝对路径
PrivateTmp=true
[Install]
WantedBy=multi-user.target
:wq! # 保存并退出
chmod u+x kong.service # 赋予文件可执行权限
cp kong.service //usr/lib/systemd/system/
通过systemd
的方式管理Kong
:
sysyemctl start kong # 启动Kong服务
systemctl stop kong # 停止Kong服务
systemctl enable kong # 设置Kong服务开机自启动
systemctl disable kong # 设置Kong服务停止开机自启动
systemctl restart kong # 重新启动Kong服务
systemctl status kong # 查看Kong服务的当前状态
docker-compose.yml
:Kong
基于PostgreSQL
存储:
version: ‘3‘
services:
kong-database:
image: postgres:9.6 # PostgreSQL数据库镜像
container_name: kong-database
ports:
- "5432:5432"
environment:
- POSTGRES_USER=kong # PostgreSQL数据库用户名
- POSTGRES_DB=kong # PostgreSQL数据库名
- POSTGRES_PASSWORD=kong # PostgreSQL数据库密码
volumes:
- "/usr/local/dev/kong/data:/var/lib/postgresql/data"
kong-migrations:
image: kong:latest # Kong的镜像
container_name: kong-migrations
environment:
- KONG_DATABASE=postgres # 定义Kong使用的数据库类型
- KONG_PG_HOST=kong-database # 定义PostgreSQL数据库的主机名
- KONG_PG_USER=kong # 定义PostgreSQL数据库的用户名
- KONG_PG_PASSWORD=kong # 定义PostgreSQL数据库密码
command: kong migrations bootstrap # Kong数据库初始化脚本
restart: on-failure
depends_on:
- kong-database
kong:
image: kong:latest # Kong的镜像
container_name: kong
environment:
- KONG_DATABASE=postgres # 定义Kong使用的数据库类型
- KONG_PG_HOST=kong-database # 定义PostgreSQL数据库的主机名
- KONG_PG_USER=kong # 定义PostgreSQL数据库的用户名
- KONG_PG_PASSWORD=kong # 定义PostgreSQL数据库密码
- KONG_PROXY_ACCESS_LOG=/dev/stdout
- KONG_ADMIN_ACCESS_LOG=/dev/stdout
- KONG_PROXY_ERROR_LOG=/dev/stderr
- KONG_ADMIN_ERROR_LOG=/dev/stderr
- KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl
restart: on-failure
ports:
- "8000:8000" # Kong的代理端口
- "8443:8443" # Kong的管理端口
- "8001:8001" # Kong SSL的代理端口
- "8444:8444" # Kong SSL的管理端口
links:
- kong-database:kong-database
depends_on:
- kong-migrations
konga:
image: pantsel/konga:0.14.9 # Konga的镜像
ports:
- "1337:1337" # Konga的端口
container_name: konga
environment:
- NODE_ENV=production # production development
links:
- kong:kong
Kong
基于Cassandra
存储:
version: "3.3"
services:
kong-database:
image: cassandra:3
ports:
- "9042:9042"
volumes:
- /usr/local/dev/kong/data:/var/lib/cassandra
kong:
image: kong:latest
container_name: kong
environment:
- KONG_DATABASE=cassandra
- KONG_CASSANDRA_CONTACT_POINTS=kong-database
- KONG_PROXY_ACCESS_LOG=/dev/stdout
- KONG_ADMIN_ACCESS_LOG=/dev/stdout
- KONG_PROXY_ERROR_LOG=/dev/stderr
- KONG_ADMIN_ERROR_LOG=/dev/stderr
- KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl
restart: on-failure
ports:
- "8000:8000"
- "8443:8443"
- "8001:8001"
- "8444:8444"
links:
- kong-database:kong-database
konga:
image: pantsel/konga:0.14.9
ports:
- "1337:1337"
links:
- kong:kong
container_name: konga
environment:
- NODE_ENV=production
Kong
基于DB-less
存储:
version: "3.3"
services:
kong:
image: kong:latest
container_name: kong
environment:
- KONG_DATABASE=off
- KONG_PROXY_ACCESS_LOG=/dev/stdout
- KONG_ADMIN_ACCESS_LOG=/dev/stdout
- KONG_PROXY_ERROR_LOG=/dev/stderr
- KONG_ADMIN_ERROR_LOG=/dev/stderr
- KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl
restart: on-failure
ports:
- "8000:8000"
- "8443:8443"
- "8001:8001"
- "8444:8444"
konga:
image: pantsel/konga:0.14.9
ports:
- "1337:1337"
links:
- kong:kong
container_name: konga
environment:
- NODE_ENV=production
docker-compose
命令管理kong
:通过docker-compose命令启动容器:
docker-compose up -d
通过docker-compose命令停止容器:
docker-compose stop
通过docker-compose命令查看容器状态:
docker-compose ps
通过docker-compose移除容器及网络:
docker-compose down
原文:https://www.cnblogs.com/xiaoshuzhagen/p/14725658.html