物联网网关神器 Kong( 二 )

这把我C 2021-04-27 16:30:55 5511

上一篇我们已经已经了解了什么是 Kong,本篇就来带领大家了解如何安装 Kong。 接下来我们将使用 Docker 安装。如果你有其他的特殊要求,请参照 官方文档

Docker 安装 Kong。

首先,你想安装它,就要有 Docker。如果你没有或者不知道什么是Docker,请点击传送门

一、获取镜像

获取 Kong 的docker 镜像

docker pull kong
  • 1

查看 Docker 镜像

docker images
  • 1

img.png

二、创建网络

需要创建同一个网络用以后面数据库与 Kong 的通信。

docker network create kong-net
  • 1

img_1.png

三、创建数据库

我们将使用 PostgreSQL 来用作 Kong 的配置存储。

docker run -d --name kong-db \
  --network=kong-net \
  -p 5432:5432 \
  -e "POSTGRES_USER=kong" \
  -e "POSTGRES_DB=kong" \
  -e "POSTGRES_PASSWORD=kong" \
  postgres:9.6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

img_4.png

接下来查看容器状态

docker ps
  • 1

img_5.png

现在可以看到 PostgreSQL 已经正常启动,并对外开放了 5432 端口。

四、初始化数据库结构

我们需要为为刚创建的数据库进行初始化,生成 Kong 所需要的表结构和数据。

docker run --rm --network=kong-net \
  -e "KONG_DATABASE=postgres" \
  -e "KONG_PG_HOST=kong-db" \
  -e "KONG_PG_PASSWORD=kong" \
  -e "KONG_PASSWORD=kong123456" \
  kong kong migrations bootstrap
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

img_6.png

Tips: 如果你不理解下面的命令就看这一段。

kong kong migrations bootstrap
  • 1

根据 docker run 的规范

 docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
  • 1

说明第一个 Kong 为容器名,第二个 Kong 为为命令 ( Command ) 后面的为参数。简单来说其流程就是:

  • 运行一个 Kong 容器。
  • 进入该容器并执行 kong migrations bootstrap 命令

五、启动 Kong 容器

为了启动 Kong 容器,我们做了那么多的准备工作,现在终于开始运行起来了。

docker run -d --name kong --network=kong-net \
  -e "KONG_DATABASE=postgres" \
  -e "KONG_PG_HOST=kong-db" \
  -e "KONG_PG_PASSWORD=kong" \
  -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 80:8000 \
  -p 443:8443 \
  -p 8001:8001 \
  -p 8444:8444 \
  kong
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

img_7.png

六、测试是否安装成功

curl -i -X GET --url http://<DNSorIP>:8001/services
  • 1

<DNSorIP> 替换为你的 IP 或 DNS。

如果成功将返回 HTTP/1.1 200 OK

img_8.png

常规配置 Kong

Kong 提供了 Http/Rest 接口,用来动态创建配置文件。

配置反向代理

Kong 是基于 Nginx 的,所以它将会基于配置动态构建出 Nginx 的配置文件。

Nginx 配置文件

upstream example{
    server localhost:8080 weight=100;
}

server{
    listen:80;
    location /hi {
        proxy_pass http://example
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
使用 Kong API 进行配置
  • 配置upstream

    curl -X POST http://<DNSorIP>:8001/upstreams --data "name=example"
    • 1

    img_12.png

    相当于配置 Nginx 的 upstream 部分。

    upstream example{
    
    }
    • 1
    • 2
    • 3
  • 配置target

    curl -X POST http://<DNSorIP>:8001/upstreams/example/targets --data "target=localhost:6023"  --data "weight=100" 
    • 1

    img_13.png

    相当于配置 Nginx 的 upstream 内的主机部分。

    upstream example{
       server localhost:8080 weight=100;
    }
    • 1
    • 2
    • 3
  • 配置service

    curl -X POST http://<DNSorIP>:8001/services --data "name=hi"  --data "host=example"
    • 1

    img_14.png

    相当于配置 Nginx 的 server。

    server{
      listen:80;
    
    }
    • 1
    • 2
    • 3
    • 4
  • 配置route

    curl -X POST http://<DNSorIP>:8001/routes --data "paths[]=/hi"  --data "service.id= < service_id >"
    • 1
    • service_id 为上一步配置 service 时的返回的Id。

    img_15.png

    相当于配置 Nginx server 内的 location。

    
    server{
      listen:80;
      location /hi {
          proxy_pass http://example
      }
    }
    ``
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
访问服务进行测试

我们之前已经运行起了一个 Docker 服务,将端口服务映射到 6023 端口。现在我们可以看到,我们的请求已经经过 Kong API 进行了反向代理到 6023 端口上。
img_23.png

总结

本篇文章我们讲解了利用 Docker 来安装 Kong ,并利用 Kong 的 Rest API 进行了动态配置。让我们来仔细看着这些 API,是不是脑中灵光一显?对,我们可以将Rest API 动态配置的功能做成图形化界面。这样就可以更方便的配置了。 下一篇我们就会接着讲 Kong 的图形化管理界面 - Konga。

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 97 8 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
这把我C
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区