一、Kong的安装:
1、二进制方式安装:
-
创建
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服务的当前状态
2、Docker容器化方式安装:
1、编写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
2、通过docker-compose
命令管理kong
:
-
通过docker-compose命令启动容器:
docker-compose up -d
-
通过docker-compose命令停止容器:
docker-compose stop
-
通过docker-compose命令查看容器状态:
docker-compose ps
-
通过docker-compose移除容器及网络:
docker-compose down