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的插件开发与管理。