参考资料

  1. Wiki 是一个基于 Web 的协作式知识管理系统
  2. Oracle Linux 是由 Oracle 公司提供的企业级 Linux 发行版
  3. Maven 是一个基于项目对象模型(POM)的 Java 项目管理工具
  4. ClefOS 是一款基于开源技术的轻量级 Linux 发行版
  5. 宝塔docker是一款基于Web的服务器管理软件
  6. PostgreSQL 是一个开源的关系型数据库管理系统
  7. Logstash 是 Elastic 公司开发的开源数据收集和处理引擎
  8. OrientDB 是一个开源的 多模型数据库

Kong 是一个开源的云原生 API 网关和微服务管理平台

Kong 详细简介

Kong 是一个开源的云原生 API 网关和微服务管理平台,基于 Nginx 和 OpenResty 构建,提供高性能、可扩展的 API 管理能力。

特点

  1. 插件架构:支持认证、限流、日志等丰富插件。

  2. 高性能:基于 Nginx,支持高并发。

  3. 云原生支持:兼容 Kubernetes、Docker 等。

  4. 多协议支持:HTTP/HTTPS、gRPC、WebSocket 等。

  5. 数据库支持:PostgreSQL、Cassandra(社区版)。

最新更新内容及时间

  • 最新版本:3.4.x(截至 2023 年 10 月)

  • 更新内容

    • 新增 gRPC 路由增强。

    • 改进插件性能。

    • 安全漏洞修复。

镜像下载地址

官网地址

https://konghq.com/

文档地址

https://docs.konghq.com/

Docker 安装示例

# 启动 PostgreSQL 容器
docker run -d --name kong-database \
  -p 5432:5432 \
  -e POSTGRES_USER=kong \
  -e POSTGRES_DB=kong \
  postgres:13

# 初始化数据库
docker run --rm \
  --link kong-database:kong-database \
  -e "KONG_DATABASE=postgres" \
  -e "KONG_PG_HOST=kong-database" \
  kong:latest kong migrations bootstrap

# 启动 Kong
docker run -d --name kong \
  --link kong-database:kong-database \
  -e "KONG_DATABASE=postgres" \
  -e "KONG_PG_HOST=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" \
  -p 8000:8000 \
  -p 8443:8443 \
  -p 8001:8001 \
  -p 8444:8444 \
  kong:latest

YAML 设置教程(Kong 声明式配置)

_format_version: "1.1"
services:
- name: my-service
  url: http://example.com
  routes:
  - name: my-route
    paths: ["/"]
  plugins:
  - name: rate-limiting
    config:
      minute: 5

常用错误及问题

  1. 数据库连接失败

    • 检查 KONG_DATABASEKONG_PG_HOST 环境变量。

    • 确保数据库服务已启动。

  2. 插件加载失败

    • 确认插件名称拼写正确。

    • 检查插件兼容性(企业版/社区版)。

  3. 端口冲突

    • 默认占用 8000(代理)、8001(Admin API)、8443/8444(HTTPS)。

  4. 迁移错误

    • 使用 kong migrations upkong migrations finish 修复。

  5. 性能问题

    • 调整 Nginx 工作进程数量(KONG_NGINX_WORKER_PROCESSES)。