Kong APIGW — 安装与配置

目录

安装 Kong Server

注:因为 Kong Dashboard 仅支持 1.x 版本的 Kong Server,所以我们选择安装较低的版本。

  1. Create a Docker network
$ docker network create kong-net
33892a744b782e5f7d86032372ff1e32c51d0756e196b0563e16515d6b379218

$ docker network ls
NETWORK ID     NAME       DRIVER    SCOPE
33892a744b78   kong-net   bridge    local

$ ifconfig
br-33892a744b78: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.18.0.1  netmask 255.255.0.0  broadcast 172.18.255.255
        ether 02:42:93:e6:d7:5d  txqueuelen 0  (Ethernet)
        RX packets 6  bytes 416 (416.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 6  bytes 416 (416.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        
$ brctl show
bridge name	bridge id		STP enabled	interfaces
br-33892a744b78		8000.024293e6d75d	no
  1. Start your database (PostgreSQL)
$ docker run -d --name kong-database \
	--network=kong-net \
	-p 5432:5432 \
	-e "POSTGRES_USER=kong" \
	-e "POSTGRES_DB=kong" \
	-e "POSTGRES_PASSWORD=kong" \
	postgres:9.6
  1. Prepare your database (Migrations)
$ docker run --rm \
     --network=kong-net \
     -e "KONG_DATABASE=postgres" \
     -e "KONG_PG_HOST=kong-database" \
     -e "KONG_PG_USER=kong" \
     -e "KONG_PG_PASSWORD=kong" \
     -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
     kong:1.5.1-centos kong migrations bootstrap
  1. Start Kong
$ docker run -d --name kong \
     --network=kong-net \
     -e "KONG_DATABASE=postgres" \
     -e "KONG_PG_HOST=kong-database" \
     -e "KONG_PG_USER=kong" \
     -e "KONG_PG_PASSWORD=kong" \
     -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 \
     -p 8443:8443 \
     -p 127.0.0.1:8001:8001 \
     -p 127.0.0.1:8444:8444 \
     kong:1.5.1-centos
  1. Use Kong
$ curl -i http://localhost:8001/
HTTP/1.1 200 OK
Date: Tue, 15 Dec 2020 01:05:20 GMT
Content-Type: application/json; charset=utf-8
Connection: keep-alive
Access-Control-Allow-Origin: *
Server: kong/1.5.1
Content-Length: 6971
X-Kong-Admin-Latency: 147

Kong Server 启动后监听了 4 个端口

  1. 8000:HTTP Proxy API
  2. 8443:HTTPS Proxy API
  3. 8001:HTTP Admin API
  4. 8444:HTTPS Admin API

Kong Server 的进程

/usr/local/openresty/nginx/sbin/nginx -p /usr/local/kong -c nginx.conf

Kong 指令行选项

$ kong
Usage: kong COMMAND [OPTIONS]

The available commands are:
 check
 config
 health
 migrations
 prepare
 quit
 reload
 restart
 roar
 start
 stop
 version

Options:
 --v              verbose
 --vv             debug

在这里插入图片描述

安装 Kong Dashboard

  • Github:https://github.com/pantsel/konga
  • 安装
docker run -p 1337:1337 \
	--network=kong-net \
	-e "TOKEN_SECRET=konga" \
	-e "DB_ADAPTER=postgres" \
	-e "DB_HOST=kong-database" \
	-e "DB_PORT=5432" \
	-e "DB_USER=kong" \
	-e "DB_PASSWORD=kong" \
	-e "DB_DATABASE=konga_database" \
	-e "NODE_ENV=development" \
	--name konga \
	pantsel/konga:latest
  • 访问:http://{your server’s public ip}:1337

登录 Konga 之后的第一件事情就是需要添加 Kong Server Connection。

在这里插入图片描述

配置

安装完 Kong Server 后主要关注两个文件目录:

  1. 配置文件目录:/etc/kong
  2. 运行文件目录:/usr/local/kong

如果我们需要修改 Nginx 的配置,实际上我们可以直接通过 Kong 的配置文件注入到 Nginx 配置,Kong 在启动的时候会生成 Nginx 的配置文件 nginx.conf 和 nginx-kong.conf。

Kong 的配置,分为以下几种:

  • 常规配置:服务运行目录,插件加载,日志等。
  • Nginx 配置:Nginx 监听 IP、端口配置等,用于 Kong 在启动的时候生成 Nginx 配置文件。
  • 数据库存储配置:数据库类型,地址、用户名密码等。
  • 数据库缓存配置:数据的缓存规则,Kong 会缓存诸如 API 信息、用户、凭证等信息,以减少访问数据库次数提高性能。
  • DNS 解析器配置:默认情况会使用系统设置,如:hosts 和 resolv.conf 的配置,你也可以通过 DNS 的解析器配置来修改。
  • 其他杂项配置:继承自 lua-nginx 模块的其他设置允许更多的灵活性和高级用法。

Admin Server

server {
    server_name kong_admin;
    listen 0.0.0.0:8001;
    listen 0.0.0.0:8444 ssl;

    access_log /dev/stdout;
    error_log  /dev/stderr notice;

    client_max_body_size    10m;
    client_body_buffer_size 10m;

    ssl_certificate     /usr/local/kong/ssl/admin-kong-default.crt;
    ssl_certificate_key /usr/local/kong/ssl/admin-kong-default.key;
    ssl_session_cache   shared:AdminSSL:10m;

    # injected nginx_admin_* directives

    location / {
        default_type application/json;
        content_by_lua_block {
            Kong.admin_content()
        }
        header_filter_by_lua_block {
            Kong.admin_header_filter()
        }
    }

    location /nginx_status {
        internal;
        access_log off;
        stub_status;
    }

    location /robots.txt {
        return 200 'User-agent: *\nDisallow: /';
    }
}

Proxy Server

server {
    server_name kong;
    listen 0.0.0.0:8000 reuseport backlog=16384;
    listen 0.0.0.0:8443 ssl http2 reuseport backlog=16384;

    error_page 400 404 408 411 412 413 414 417 494 /kong_error_handler;
    error_page 500 502 503 504                     /kong_error_handler;

    access_log /dev/stdout;
    error_log  /dev/stderr notice;

    ssl_certificate     /usr/local/kong/ssl/kong-default.crt;
    ssl_certificate_key /usr/local/kong/ssl/kong-default.key;
    ssl_session_cache   shared:SSL:10m;
    ssl_certificate_by_lua_block {
        Kong.ssl_certificate()
    }

    # injected nginx_proxy_* directives
    real_ip_header X-Real-IP;
    real_ip_recursive off;

    rewrite_by_lua_block {
        Kong.rewrite()
    }

    access_by_lua_block {
        Kong.access()
    }

    header_filter_by_lua_block {
        Kong.header_filter()
    }

    body_filter_by_lua_block {
        Kong.body_filter()
    }

    log_by_lua_block {
        Kong.log()
    }
...
}

参考文档

https://www.infvie.com/ops-notes/linux-basics/kong-api-gateway.html

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付 49.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值