3

Kong和konga 入门教程

 3 years ago
source link: https://segmentfault.com/a/1190000039774218
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

image

最近有在学习和了解kong,今天就和大家来分享下kongkonga

kong 是一款基于Nginx_lua 模块写的高可用网关API,在客户端和服务间转发API通信的网关,可以通过插件扩展功能。

简单一句话:kong是动态增强版的nginx

看看几个名词

  • Nginx 是模块化设计的反向代理软件,C语言开发
  • OpenResty 是以Nginx 为核心的web 开发平台,可以解析执行Lua 脚本
  • kong 是一个openResty应用,一个api gateway

kong安装

主要以docker 方式来部署。当前kong版本2.3.0

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:latest 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 127.0.0.1:8001:8001 \
     -p 127.0.0.1:8444:8444 \
     kong:latest

5 . 验证是否安装成功

//在宿主机上运行
curl -i http://localhost:8001/

返回下面内容

HTTP/1.1 200 OK
Date: Mon, 05 Apr 2021 08:37:24 GMT
Content-Type: application/json; charset=utf-8
Connection: keep-alive
Access-Control-Allow-Origin: *
Content-Length: 10452
X-Kong-Admin-Latency: 20215
Server: kong/2.3.0

............

表示安装正确,可以正常使用kong

kong的运用

kong 可以动态的生成 nginx的配置文件,下面我们来演示一下

一个典型的nginx配置文件

upstream demoupstream {
        server localhost:3000 weight=100;
}
server {
        listen 8000;
        server_name  demo.com;
        location /demo {
                proxy_pass http://demoupstream;
        }
}

上面的简单Nginx配置,可以转为如下kong 配置

1 . 配置 Upstream

curl -X POST http://localhost:8001/upstreams --data "name=demoupstream"

2 . 配置 target

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

3 . 配置 service

curl -X POST http://localhost:8001/services --data "name=demo" --data "host=demoupstream" --data "url=http://demo.com/"

4 . 配置 route

curl -X POST http://localhost:8001/services/demo/routes --data "paths[]=/demo" --data "hosts[]=demo.com"

当然啦,你可以吧8000端口改为熟悉的80端口,只要在启动kong的时候 将映射端口修改下就可以了。

5 . 验证

curl -i http://localhost:8000/demo --header host:demo.com

⚠️注意:上面的target端口要本地可访问的,域名hosts记得配置

概念术语介绍

  • upstream : 是对上游服务器的抽象
  • target:代表了一个物理服务,是 IP + port 的抽象
  • service:是抽象层面的服务,他可以直接映射到一个物理服务(host 指向 ip + port),也可以指向一个 upstream 来做到负载均衡
  • route:是路由的抽象,他负责将实际的 request 映射到 service

Kong 默认监听的端口

  • 8000 : 监听来自客户端的HTTP 流量,转发到你的 upstream 服务上
  • 8443 : 监听HTTPS的流量,功能跟 8000一样,可以通过配置文件禁止。
  • 8001kongHTTP监听的 admin api 管理接口
  • 8444kongHTTPS监听的 admin api 管理接口

konga

上面都是命令行的,有没有什么直观的图形界面呢?

有的,比较火的就是 konga 了,官方是收费,我们可以用社区贡献者的

konga地址

我们以 docker 来安装

1 . Konga 也需要创建数据库,这里我们创建和迁移数据一起完成

docker run --rm pantsel/konga:latest -c prepare -a postgres -u postgresql://kong:[email protected]:5432/konga

解释下参数 kong:[email protected]:5432/konga 用户名:密码@数据库ip:端口/数据库名称

2 . 启动konga

docker run -p 1337:1337 \
        --network kong-net \
        --name konga \
        -e "NODE_ENV=production"  \
        -e "DB_ADAPTER=postgres" \
        -e "DB_URI=postgresql://kong:[email protected]:5432/konga" \
        pantsel/konga

这边的参数就比较简单了,具体可以看上面官方链接

3 . 验证

浏览器访问 http://localhost:1337/

注册进入就可以看到如下界面了

image

图中的Name 可以随意起, kong Admin URl 就是访问kong的admin api 里面填 http://kong:8001

激活之后就可以看到你前面创建的 上游,服务,路由这些啦。

大家玩耍起来吧,还希望看更多的可以访问 kong 官方网站接着学习

感谢你看完这篇文章,有什么不对的地方欢迎指出,谢谢🙏


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK