Kong 官方镜像

https://hub.docker.com/_/kong

使用 docker 的安装

目前Kong 只支持 postgresql 或 cassandra 两种存储数据,这里我们选用 PG

  • 创建 pg 数据库 容器

    1  
    2  
    3  
    4  
    5  
    6
    

|

    docker run -d --name kong-database \  
    -p 5432:5432 \  
    -e "POSTGRES_USER=kong" \  
    -e "POSTGRES_DB=kong" \  
    -e "POSTGRES_PASSWORD=your_pg_password" \  
    postgres:9.6  
      

—|—

  • kong 数据迁移到 pg

    1  
    2  
    3  
    4  
    5  
    6  
    7
    

|

    docker run --rm \  
    --link kong-database:kong-database \ #将 kong-database 容器的地址引入注册到本容器  
    -e "KONG_DATABASE=postgres" \  
    -e "KONG_PG_HOST=kong-database" \  
    -e "KONG_PG_PASSWORD=your_pg_password" \ # 官方文档未给出此参数 PG 可能不支持无密登录了  
    -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \  
    kong kong migrations bootstrap  
      

—|—

  • konga 数据

    1  
    2  
    3  
    4  
    5  
    6  
    7  
    8  
    9  
    10
    

|

    docker run --rm --network=host \  
    -e "DB_DATABASEa=postgres" \  
    -e "DB_HOST=<postgres-ip>" \  
    -e "DB_PORT=15432" \  
    -e "DB_USER=postgres_user" \  
    -e "DB_PASSWORD=postgres_pwd" \  
    -e "DB_DATABASE=konga" \  
    -e "NODE_ENV=development" \  
    --name kong_dashboard \  
    pantsel/konga  
      

—|—

  • 创建 kong 容器

    1  
    2  
    3  
    4  
    5  
    6  
    7  
    8  
    9  
    10  
    11  
    12  
    13  
    14  
    15  
    16
    

|

    docker run -d --name kong \  
    --link kong-database:kong-database \  
    -e "KONG_DATABASE=postgres" \  
    -e "KONG_PG_HOST=kong-database" \  
    -e "KONG_PG_PASSWORD=your_pg_password" \  
    -e "KONG_CASSANDRA_CONTACT_POINTS=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, 0.0.0.0:8444 ssl" \  
    -p 8000:8000 \ # http 代理端口  
    -p 8443:8443 \ # https 代理端口  
    -p 8001:8001 \ # http 管理接口  
    -p 8444:8444 \ # https 管理接口  
    kong  
      

—|—

  • 查看是否启动

    1
    

|

    docker ps  
      

—|—

  • 如未启动通过日志查看问题

    1
    

|

    docker logs kong  
      

—|—

  • 如正常启动 可访问管理Api(替换成你的IP)

    1
    

|

    curl -X GET http://192.168.20.6:8001  
      

—|—
因为 kong 服务是在容器中,所以设 KONG_ADMIN_LISTEN 为全局监听才能通过宿主机IP代理访问,宿主机则需对相应的映射端口做访问限制,如本机/内网访问,且不应该对外网可访问,不然谁都可以改你的Api网关策略了。

自定义 kong 配置文件

kong docker 镜像的配置文件路径为 /etc/kong/kong.conf

如需自定义配置文件,自行挂载即可。

kong 配置项手册:https://docs.konghq.com/1.0.x

...
-v /opt/kong/kong.conf:/etc/kong/kong.conf
...

管理网关的API的使用教程这里就不写了,自行觅食吧~简单的看看下面这篇可以的

Kong 集成 Jwt 插件:https://www.cnkirito.moe/kong

kong服务网关API:https://www.jianshu.com/p/ef6