• kong的安装和使用


    一、概述

    Nginx、OpenRestry、Kong这三个项目紧密相连:

    1. Nginx是模块化设计的反向代理软件,C语言开发;
    2. OpenResty是以Nginx为核心的Web开发平台,可以解析执行Lua脚本;
    3. Kong是一个OpenResty应用,一个api gateway。
      OpenResty与Lua的关系类似于Jvm与Java,不过OpenResty是基于nginx的,主要用于Web、API类应用

    二、Kong docker方式部署

    参考:https://docs.konghq.com/install/docker/?_ga=2.218789593.1933534790.1562222882-743556268.1562222882
    1、创建docker网络

    docker network create kong-net
    

    2、运行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
    

    3、进行数据初始化

    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:2.0.3 kong migrations bootstrap
    

    4 、运行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 8001:8001 
         -p 8444:8444 
         kong:2.0.3
    

    image-20210209142224457

    概念术语
    upstream:是对上游服务器的抽象;

    target:代表了一个物理服务,是ip+port的抽象;

    service:是抽象层面的服务,他可以直接映射到一个物理服务(host指向ip+port),也可以指向一个upstream来做到负载均衡;

    route:是路由的抽象,他负责将实际的request映射到service。默认情况下,KONG监听的端口为:8000、8001、8443、8444

    8444:通过此端口,管理者可以对HTTP请求进行监控;

    其中8000/8443分别是用来监听来自客户端的Http和Https请求,等价于Nginx默认的80端口,而8001端口
    便是默认的管理端口,可以通过HTTPRestfulAPI来动态管理Kong的配置;
    使用方法

    # curlhttp://localhost:8001
    

    5、dashboard

    kong dashboard方式

    docker run -d -p 8080:8080 pgbi/kong-dashboard start --kong-url http://192.168.1.105:8001 --basic-auth kongUser=123456
    

    由于kong版本过高,不支持,没有konga好用

    image-20210209144920577

    konga安装方式

    docker run --rm --network=kong-net pantsel/konga -c prepare -a postgres -u postgresql://kong:kong@kong-database:5432/konga
    
    docker run -p 1337:1337 
                 --network=kong-net 
                 -e "DB_ADAPTER=postgres" 
                 -e "DB_HOST=kong-database" 
                 -e "DB_USER=kong" 
                 -e "DB_PASSWORD=kong" 
                 -e "DB_DATABASE=konga" 
                 -e "KONGA_HOOK_TIMEOUT=120000" 
                 -e "NODE_ENV=production" 
                 --name konga 
                 pantsel/konga
    

    建议admin,然后登陆。

    image-20210209150122260

    6 辅助pgadmin

    docker run -p 8090:80 
       --name=pgadmin  
         --network=kong-net 
         --link kong-database:kong-database  
        -e 'PGADMIN_DEFAULT_EMAIL=dalianpai@163.com' 
        -e 'PGADMIN_DEFAULT_PASSWORD=1qaz@WSX' 
        --restart always  
        -d dpage/pgadmin4
    

    image-20210209151106006

    三、Kong的使用

    一个典型的Nginx配置

    upstream helloupstream {
        server localhost:3000 weight-100;
    }
    server{
        listen 80;
        location /hello{
        proxy_pass http://helloupstream;
    }
    

    如上简单的Nginx配置,可以转换为如下的Http请求。
    对应的Kong配置
    1)配置upstream

    curl -x POST http://localhost:8001/upstreams --data "name=helloupstream"
    

    2)配置target

    curl -x POST http://localhost:8001/upstreams/helloupstream/targets --data "target=localhost:3000" --data "weight=100"
    

    3)配置service

     curl -x POST http://localhost:8001/services--data "name-hello" --data "host=helloupstream"
    
    

    4)配置route

    curl -x POST http://localhost:8001/routes --data "paths[]=/he1lo" --data "service.id=ncaruice.id 86g5cc65-16c1-43b1-95a1-5d30d0a504o9"
    

    这一切都是动态的,无需手动reload nginx.conf
    为Kong新增路由信息时涉及到了upstream, target, service, route等概念,便是Kong最核心的四个对象。
    为hello服务添加50次/秒的限流:

     curl -x POST http://localhost:8001/services/he11o/plugins
    --data "name-rate-limiting" 
    --data "config.second=50"
    

    为hello服务添加jwt插件;

    curl_x posT http://localhost:8001/services/1ogin/plugins
    --data "name=jwt"
    

    同理,插件也可以安装在route之上

    curl -x POST http://localhost:8001/routes/{routeId}/plugins
    --data "name=rate-limiting" 
    --data "config.second=50"
    curl -x POST http://localhost:8001/routes/{routeId}/plugins
    --data "name=jwt"
    

    四、konga的使用

    进行反向代理

    创建upstream

    image-20210209152633433

    image-20210209152801066

    创建target

    image-20210209152840378

    创建service

    image-20210209153156006

    创建route

    image-20210209153435592

    image-20210209153446687

    测试:

    image-20210209224413095

    插件的使用

    准入插件

    image-20210209225046512

    image-20210209225027327

    处理请求的插件

    image-20210209225604912

    image-20210209225634614

    image-20210209225643960

    限流的插件

    image-20210209232159191

    image-20210209232220064

    ** Prometheus插件**

    image-20210209232736962

    认证插件

    image-20210209234547921

    image-20210209234647575

    在路由下面添加插件

    image-20210209234901944

    image-20210209234919775

    image-20210209235014726

    image-20210209235113246

  • 相关阅读:
    触达项目涉及到的功能点
    NodeJS编程基础
    C#Socket通讯
    HTML转义字符大全
    C# 二进制,十进制,十六进制 互转
    浏览器的分类
    Prometheus设置systemctl管理
    第十五讲:Pagerduty的联用
    第十四讲:Prometheus 企业级实际使⽤二
    第十三讲:Prometheus 企业级实际使⽤
  • 原文地址:https://www.cnblogs.com/dalianpai/p/14394693.html
Copyright © 2020-2023  润新知