1. 安装前准备
1.1 系统要求
- 操作系统: Linux, macOS, Windows (WSL)
- 内存: 最少1GB,推荐2GB以上
- CPU: 1核心以上
- 存储: 至少1GB可用空间
1.2 依赖组件
- 数据库: PostgreSQL 9.5+ 或 Cassandra 3.x (可选)
- Nginx: Kong基于OpenResty,无需单独安装
- Lua: 内置在OpenResty中
2. 安装方式
2.1 Docker安装 (推荐)
2.1.1 安装Docker
# Ubuntu/Debian
sudo apt-get update
sudo apt-get install docker.io docker-compose
# CentOS/RHEL
sudo yum install docker docker-compose
# 启动Docker服务
sudo systemctl start docker
sudo systemctl enable docker
2.1.2 使用Docker Compose
创建 docker-compose.yml
文件:
version: '3.7'
services:
kong-database:
image: postgres:13
environment:
POSTGRES_USER: kong
POSTGRES_PASSWORD: kongpass
POSTGRES_DB: kong
volumes:
- kong_data:/var/lib/postgresql/data
networks:
- kong-net
restart: unless-stopped
kong-migration:
image: kong/kong-gateway:3.4.0.0
command: "kong migrations bootstrap"
environment:
KONG_DATABASE: postgres
KONG_PG_HOST: kong-database
KONG_PG_USER: kong
KONG_PG_PASSWORD: kongpass
KONG_PG_DATABASE: kong
networks:
- kong-net
restart: "no"
depends_on:
- kong-database
kong:
image: kong/kong-gateway:3.4.0.0
environment:
KONG_DATABASE: postgres
KONG_PG_HOST: kong-database
KONG_PG_USER: kong
KONG_PG_PASSWORD: kongpass
KONG_PG_DATABASE: kong
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
KONG_ADMIN_GUI_URL: http://localhost:8002
ports:
- "8000:8000" # Proxy HTTP
- "8443:8443" # Proxy HTTPS
- "8001:8001" # Admin API
- "8444:8444" # Admin API HTTPS
- "8002:8002" # Kong Manager
- "8445:8445" # Kong Manager HTTPS
networks:
- kong-net
restart: unless-stopped
depends_on:
- kong-migration
volumes:
kong_data:
networks:
kong-net:
driver: bridge
2.1.3 启动Kong
# 启动所有服务
docker-compose up -d
# 查看服务状态
docker-compose ps
# 查看日志
docker-compose logs kong
2.2 包管理器安装
2.2.1 Ubuntu/Debian
# 添加Kong仓库
echo "deb https://download.konghq.com/gateway-3.x-ubuntu-$(lsb_release -sc)/ default all" | sudo tee /etc/apt/sources.list.d/kong.list
curl -1sLf "https://download.konghq.com/gateway-3.x-ubuntu-$(lsb_release -sc)/gpg.DE14F26E.key" | sudo apt-key add -
# 更新包列表
sudo apt-get update
# 安装Kong
sudo apt-get install kong
2.2.2 CentOS/RHEL
# 添加Kong仓库
sudo yum install -y wget
wget https://download.konghq.com/gateway-3.x-centos-8/config.repo
sudo mv config.repo /etc/yum.repos.d/kong.repo
# 安装Kong
sudo yum install kong
2.2.3 macOS
# 使用Homebrew
brew tap kong/kong
brew install kong
2.3 源码编译安装
2.3.1 安装依赖
# Ubuntu/Debian
sudo apt-get install build-essential libssl-dev libpcre3-dev zlib1g-dev
# CentOS/RHEL
sudo yum groupinstall "Development Tools"
sudo yum install openssl-devel pcre-devel zlib-devel
2.3.2 编译安装
# 下载源码
git clone https://github.com/Kong/kong.git
cd kong
# 安装依赖
make dependencies
# 编译
make build
# 安装
sudo make install
3. 数据库配置
3.1 PostgreSQL配置
3.1.1 安装PostgreSQL
# Ubuntu/Debian
sudo apt-get install postgresql postgresql-contrib
# CentOS/RHEL
sudo yum install postgresql-server postgresql-contrib
sudo postgresql-setup initdb
sudo systemctl start postgresql
sudo systemctl enable postgresql
3.1.2 创建数据库和用户
# 切换到postgres用户
sudo -u postgres psql
-- 创建数据库和用户
CREATE USER kong WITH PASSWORD 'kongpass';
CREATE DATABASE kong OWNER kong;
GRANT ALL PRIVILEGES ON DATABASE kong TO kong;
\q
3.2 Cassandra配置
3.2.1 安装Cassandra
# 添加Apache Cassandra仓库
echo "deb https://downloads.apache.org/cassandra/debian 40x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
curl https://downloads.apache.org/cassandra/KEYS | sudo apt-key add -
# 安装
sudo apt-get update
sudo apt-get install cassandra
# 启动服务
sudo systemctl start cassandra
sudo systemctl enable cassandra
3.2.2 创建Keyspace
# 连接到Cassandra
cqlsh
-- 创建keyspace
CREATE KEYSPACE kong
WITH REPLICATION = {
'class' : 'SimpleStrategy',
'replication_factor' : 1
};
4. Kong配置
4.1 配置文件
4.1.1 默认配置位置
- Linux:
/etc/kong/kong.conf
- macOS:
/usr/local/etc/kong/kong.conf
- Docker: 通过环境变量配置
4.1.2 基本配置示例
# 复制默认配置
sudo cp /etc/kong/kong.conf.default /etc/kong/kong.conf
# 编辑配置文件
sudo vim /etc/kong/kong.conf
配置内容:
# 数据库配置
database = postgres
pg_host = 127.0.0.1
pg_port = 5432
pg_user = kong
pg_password = kongpass
pg_database = kong
# 代理配置
proxy_listen = 0.0.0.0:8000, 0.0.0.0:8443 ssl
# Admin API配置
admin_listen = 0.0.0.0:8001, 0.0.0.0:8444 ssl
# 日志配置
proxy_access_log = /var/log/kong/access.log
proxy_error_log = /var/log/kong/error.log
admin_access_log = /var/log/kong/admin_access.log
admin_error_log = /var/log/kong/admin_error.log
# 插件配置
plugins = bundled
4.2 环境变量配置
4.2.1 常用环境变量
# 数据库配置
export KONG_DATABASE=postgres
export KONG_PG_HOST=localhost
export KONG_PG_USER=kong
export KONG_PG_PASSWORD=kongpass
export KONG_PG_DATABASE=kong
# 监听配置
export KONG_PROXY_LISTEN="0.0.0.0:8000, 0.0.0.0:8443 ssl"
export KONG_ADMIN_LISTEN="0.0.0.0:8001, 0.0.0.0:8444 ssl"
# 日志配置
export KONG_PROXY_ACCESS_LOG=/dev/stdout
export KONG_ADMIN_ACCESS_LOG=/dev/stdout
export KONG_PROXY_ERROR_LOG=/dev/stderr
export KONG_ADMIN_ERROR_LOG=/dev/stderr
5. 初始化和启动
5.1 数据库迁移
# 初始化数据库
kong migrations bootstrap
# 升级数据库(版本更新时)
kong migrations up
# 完成迁移
kong migrations finish
5.2 启动Kong
5.2.1 前台启动
kong start
5.2.2 后台启动
kong start -d
5.2.3 使用systemd
# 创建systemd服务文件
sudo vim /etc/systemd/system/kong.service
服务文件内容:
[Unit]
Description=Kong API Gateway
After=network.target
[Service]
Type=forking
User=kong
Group=kong
ExecStart=/usr/local/bin/kong start
ExecReload=/usr/local/bin/kong reload
ExecStop=/usr/local/bin/kong stop
PIDFile=/usr/local/kong/pids/nginx.pid
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
启动服务:
sudo systemctl daemon-reload
sudo systemctl start kong
sudo systemctl enable kong
6. 验证安装
6.1 检查服务状态
# 检查Kong进程
ps aux | grep kong
# 检查端口监听
netstat -tlnp | grep :800
# 使用systemctl检查
sudo systemctl status kong
6.2 测试API
# 测试Admin API
curl -i http://localhost:8001/
# 测试代理
curl -i http://localhost:8000/
# 获取Kong信息
curl http://localhost:8001/status
6.3 访问Kong Manager
打开浏览器访问:http://localhost:8002
7. 无数据库模式配置
7.1 配置文件模式
# 设置为无数据库模式
export KONG_DATABASE=off
export KONG_DECLARATIVE_CONFIG=/path/to/kong.yml
# 启动Kong
kong start
7.2 配置文件示例
创建 kong.yml
文件:
_format_version: "3.0"
_transform: true
services:
- name: my-service
url: http://httpbin.org
plugins:
- name: rate-limiting
config:
minute: 5
policy: local
routes:
- name: my-route
paths:
- /
8. 常见问题排查
8.1 启动失败
# 检查配置文件语法
kong check
# 查看详细错误信息
kong start -vv
# 检查日志
tail -f /var/log/kong/error.log
8.2 数据库连接问题
# 测试数据库连接
psql -h localhost -U kong -d kong
# 检查数据库配置
kong config -c /etc/kong/kong.conf
8.3 端口冲突
# 检查端口占用
sudo lsof -i :8000
sudo lsof -i :8001
# 修改监听端口
export KONG_PROXY_LISTEN="0.0.0.0:9000"
export KONG_ADMIN_LISTEN="0.0.0.0:9001"
9. 总结
本章介绍了Kong的多种安装方式和基本配置方法。Docker方式最为简便,适合开发和测试环境;包管理器安装适合生产环境;源码编译适合需要定制的场景。
在下一章节中,我们将详细介绍Kong的插件开发与管理。