在这里插入图片描述

虚拟机介绍

购买的华为云ECS机器,ECS机器架构是aarch64,操作系统是集成的openEuler 22.03-lts-sp3.
在这里插入图片描述

安装方式

Kong安装的方式有两种:

  • 使用数据库: 使用数据库存储 Kong 实体配置,可以使用 Admin API 或配置文件配置 Kong。
  • 不使用数据库:将 Kong 配置存储在节点的内存中,Admin API 是只读的,必须使用配置文件配置 Kong。

使用数据库安装 Kong Gateway

启动一个 Kong Gateway 容器和一个 PostgreSQL 数据库来存储 Kong 配置。

数据库部署
  1. 创建自定义 Docker 网络,随意命名
docker network create kong-net
  1. 启动 PostgreSQL 容器
docker run -d --name kong-database \
 --network=kong-net \
 -p 5432:5432 \
 -e "POSTGRES_USER=kong" \
 -e "POSTGRES_DB=kong" \
 -e "POSTGRES_PASSWORD=kongpass" \
 postgres:13
  • POSTGRES_USER: Kong Gateway默认值是kong
  • POSTGRES_DB: Kong Gateway默认值是kong
  • POSTGRES_PASSWORD:设置数据库密码为任意字符串
    在这里插入图片描述
  1. 准备 Kong 数据库
docker run --rm --network=kong-net \
 -e "KONG_DATABASE=postgres" \
 -e "KONG_PG_HOST=kong-database" \
 -e "KONG_PG_PASSWORD=kongpass" \
 -e "KONG_PASSWORD=test" \
kong/kong-gateway:3.7.1.1 kong migrations bootstrap
  • KONG_DATABASE:指定 Kong 使用的数据库类型
  • KONG_PG_HOSTkong-net:上一步中通过网络通信的 Postgres Docker 容器的名称
  • KONG_PG_PASSWORD:上一步启动 Postgres 容器时设置的密码
  • KONG_PASSWORD(仅限企业版):Kong Gateway 管理员超级用户的默认密码
  • {IMAGE-NAME:TAG} kong migrations bootstrap:按顺序,这是 Kong Gateway 容器名称和标签,后面是给 Kong 准备 Postgres 数据库的命令
    在这里插入图片描述
启动 Kong Gateway
  1. (可选)如果拥有 Kong Gateway 的企业许可证,请将许可证密钥导出到变量: 许可证数据必须包含直引号才被视为有效的 JSON('and ",而不是’or “)。

    注意: 以下许可证仅为示例,必须使用以下格式,配置自己的内容。

     export KONG_LICENSE_DATA='{"license":{"payload":{"admin_seats":"1","customer":"Example Company, Inc","dataplanes":"1","license_creation_date":"2017-07-20","license_expiration_date":"2017-07-20","license_key":"00141000017ODj3AAG_a1V41000004wT0OEAU","product_subscription":"Konnect Enterprise","support_plan":"None"},"signature":"6985968131533a967fcc721244a979948b1066967f1e9cd65dbd8eeabe060fc32d894a2945f5e4a03c1cd2198c74e058ac63d28b045c2f1fcec95877bd790e1b","version":"1"}}'
    
  2. 运行以下命令使用 Kong Gateway 启动容器:

    docker run -d --name kong-gateway \
     --network=kong-net \
     -e "KONG_DATABASE=postgres" \
     -e "KONG_PG_HOST=kong-database" \
     -e "KONG_PG_USER=kong" \
     -e "KONG_PG_PASSWORD=kongpass" \
     -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" \
     -e "KONG_ADMIN_GUI_URL=http://localhost:8002" \
     -e KONG_LICENSE_DATA \
     -p 8000:8000 \
     -p 8443:8443 \
     -p 8001:8001 \
     -p 8444:8444 \
     -p 8002:8002 \
     -p 8445:8445 \
     -p 8003:8003 \
     -p 8004:8004 \
     kong/kong-gateway:3.7.1.1
     postgres:13
    
    • –name和–network:要创建的容器的名称以及它所通信的 Docker 网络。
    • KONG_DATABASE:指定 Kong 使用的数据库类型。
    • KONG_PG_HOST:通过网络通信的 Postgres Docker 容器的名称 kong-net。
    • KONG_PG_USER和KONG_PG_PASSWORD:Postgres 用户名和密码。Kong Gateway 需要登录信息来将配置数据存储在KONG_PG_HOST数据库中。
    • 所有_LOG 参数:设置日志输出到的文件路径,或者使用示例中的值将消息和错误打印到stdout和stderr。
    • KONG_ADMIN_LISTEN:Kong Admin API 监听请求的端口。
    • KONG_ADMIN_GUI_URL:访问 Kong Manager 的 URL,前面带有协议(例如http://)。
    • KONG_LICENSE_DATA:(仅限企业)如果您有许可证文件并将其保存为环境变量,则此参数将从您的环境中提取许可证。
      在这里插入图片描述
  3. 安装验证
    拉起的两个容器:
    在这里插入图片描述访问管理节点 API:/services,返回200即OK。

     curl -i -X GET --url http://localhost:8001/services
    

    在这里插入图片描述

  4. 通过使用以下指定的 URL 访问 Kong Manager 来验证它是否正在运行

    http://localhost:8002
    

    在这里插入图片描述

不使用数据库安装 Kong Gateway

  1. 创建自定义 Docker 网络,随意命名

    docker network create kong-net
    
  2. 准备配置文件

    kong.yml简单配置示例,本地保存,记录文件路径

     _format_version: "3.0"
     _transform: true
    
     services:
     - host: httpbin.org
       name: example_service
       port: 80
       protocol: http
       routes:
       - name: example_route
         paths:
         - /mock
         strip_path: true
    
  3. 无 DB 模式启动 Kong Gateway

    3.1 (可选)如果拥有 Kong Gateway 的企业许可证,请将许可证密钥导出到变量: 许可证数据必须包含直引号才被视为有效的 JSON('and ",而不是’or “)。

    注意: 以下许可证仅为示例,必须使用以下格式,配置自己的内容。

     export KONG_LICENSE_DATA='{"license":{"payload":{"admin_seats":"1","customer":"Example Company, Inc","dataplanes":"1","license_creation_date":"2017-07-20","license_expiration_date":"2017-07-20","license_key":"00141000017ODj3AAG_a1V41000004wT0OEAU","product_subscription":"Konnect Enterprise","support_plan":"None"},"signature":"6985968131533a967fcc721244a979948b1066967f1e9cd65dbd8eeabe060fc32d894a2945f5e4a03c1cd2198c74e058ac63d28b045c2f1fcec95877bd790e1b","version":"1"}}'
    

    3.2 从刚刚创建kong.yml文件的同一目录中,运行以下命令以使用 Kong Gateway 启动容器:

    docker run -d --name kong-dbless \
     --network=kong-net \
     -v "$(pwd):/kong/declarative/" \
     -e "KONG_DATABASE=off" \
     -e "KONG_DECLARATIVE_CONFIG=/kong/declarative/kong.yml" \
     -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" \
     -e "KONG_ADMIN_GUI_URL=http://localhost:8002" \
     -e KONG_LICENSE_DATA \
     -p 8000:8000 \
     -p 8443:8443 \
     -p 8001:8001 \
     -p 8444:8444 \
     -p 8002:8002 \
     -p 8445:8445 \
     -p 8003:8003 \
     -p 8004:8004 \
     kong/kong-gateway:3.7.1.1
    
    • –name和–network:创建的容器的名称以及通信的 Docker 网络
    • -v $(pwd):/path/to/target/:将当前目录挂载到 Docker 容器中
    • KONG_DATABASE:将数据库设置为off, 不使用任何数据库存储配置
    • KONG_DECLARATIVE_CONFIG:声明配置文件路径
    • 所有LOG 参数:设置日志输出到的文件路径
    • KONG_ADMIN_LISTEN:Kong Admin API 监听请求的端口
    • KONG_ADMIN_GUI_URL:访问 Kong Manager 的 URL,前面带有协议(例如http://)
    • KONG_LICENSE_DATA:(仅限企业)如果您有许可证文件环境变量

    3.3 验证 Kong Gateway 运行状态

    curl -i http://localhost:8001
    

    测试端点获取服务列表

    curl -i http://localhost:8001/services
    
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐