天天看点

Kong环境搭建及简单使用(对ApiGateWay之Kong的使用)

一、什么是Kong?

Kong是由Mashape公司开源的可扩展的Api GateWay项目。它运行在调用Api之前,以插件的扩展方式为Api提供了管理。比如,鉴权、限流、监控、健康检查等,Kong是基于lua语言、nginx以及openResty开发的,所有拥有动态路由、负载均衡、高可用、高性能、熔断(基于健康检查)等。Kong提供了许多开箱即用的插件,用户也可以自定义规则使用lua开发插件。
Kong环境搭建及简单使用(对ApiGateWay之Kong的使用)

二、安装Kong

Kong官方文档:https://docs.konghq.com/

Kong下载地址:https://konghq.com/install/

Docker官网下载:https://www.docker.com/products/docker-desktop

Kong在本地安装比较麻烦,容易出现很多问题,对于lua语言不熟悉的人,可能处理这些问题是相当头疼的。我推荐使用Docker去安装并运行Kong,比较容易。

2.1 Docker创建kong-network

docker network create kong-net

2.2 Docker安装并运行postgres,执行下面的命令可以直接拉取postgres的image,并运行postgres。

docker run -d --name kong-database \

--network=kong-net \

-p 5432:5432 \

-e "POSTGRES_USER=kong" \

-e "POSTGRES_DB=kong" \

postgres:9.6

2.3 初始化postgres

docker run --rm \

--network=kong-net \

-e "KONG_DATABASE=postgres" \

-e "KONG_PG_HOST=kong-database" \

-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \

kong:latest kong migrations up

2.4 Docker拉取kong的image并运行kong,Docker上的kong目前最新版应该是0.14.x

docker run -d --name kong \

--network=kong-net \

-e "KONG_DATABASE=postgres" \

-e "KONG_PG_HOST=kong-database" \

-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:latest

docker ps ,看看应用是否都启动了。

Kong环境搭建及简单使用(对ApiGateWay之Kong的使用)

2.5 测试Kong

mac 终端命令:    curl -i http://localhost:8001/    效果如下

Kong环境搭建及简单使用(对ApiGateWay之Kong的使用)

2.6 可视化界面:安装Konga,Kong v0.13.x之前是通过kong-dashboard,mac版本。目前kong最新版1.0.x还未有支持的UI管理(操作的话可以使用curl,PostMan)

docker run -p 1337:1337 

             --network kong-net

             -e "DB_ADAPTER=postgres" \ 

             -e "DB_HOST=your-ip-address" \

             -e "DB_PORT=5432:5432" \ default

             -e "DB_USER=kong" \ default

             -e "DB_PASSWORD=kong" \ default

             -e "DB_DATABASE=kong-database" \  default  kong-database or kong

             --name konga \

             pantsel/konga

运行效果如下,我们可以看到Services、routes、 apis(版本1.3.0后废弃)、consumers、plugins、upStreams、certificates。这些其实都是kong提供的API,Konga通过实现API,提供了界面操作,在这里感谢开源大佬们的无私奉献。

Kong环境搭建及简单使用(对ApiGateWay之Kong的使用)

三、使用Kong

3.1 Api的使用

虽然说1.3.x版本后,Api已经不推荐使用了,也可以了解下,下面我们用www.baidu.com来测试。

采用curl命令添加Api:

curl -i -X POST \

      --url http://127.0.0.1:8001/apis/ \

      --data 'name=example-baidu' \

      --data 'hosts=example.baidu.com' \

      --data 'upstream_url=https://www.baidu.com'

Kong环境搭建及简单使用(对ApiGateWay之Kong的使用)

也可以到界面中添加: 按照说明填写即可,填hosts后调用需要在请求头部Header加该参数,填Uris,是在请求路径后再加uris的路径。

Kong环境搭建及简单使用(对ApiGateWay之Kong的使用)

测试一下结果:

curl -i -H 'Host:example.baidu.com' http://localhost:8000

Kong环境搭建及简单使用(对ApiGateWay之Kong的使用)

如果想在网页中访问,那么最好修改下配置,将Host配置修改为Uris,如下图所示。

Kong环境搭建及简单使用(对ApiGateWay之Kong的使用)

下面我们在网页中请求:  http://localhost:8000/baidu-example

Kong环境搭建及简单使用(对ApiGateWay之Kong的使用)

3.2 Service、routes的使用

Service跟Api类似,Service是从Api中将路由配置route分离出来,成为了一个单独项,增强了灵活性和可用性,可以对不同的路由进行不同的插件配置,下面直接使用界面进行操作。

Kong环境搭建及简单使用(对ApiGateWay之Kong的使用)
Kong环境搭建及简单使用(对ApiGateWay之Kong的使用)

然后需要配置路由,在Konga界面操作路由的时候遇到了点问题。提示说的是Hosts、paths、methods 三选一,填写1、2、3项都试过,但是都通不过,感觉应该是界面判断有误。

Kong环境搭建及简单使用(对ApiGateWay之Kong的使用)

既然界面操作不了,那么我们又回到命令行吧,先用该命令查找下ServiceId

curl -i http://localhost:8001/services

Kong环境搭建及简单使用(对ApiGateWay之Kong的使用)

下面我们配置routes:

curl -i -X POST \

--url http://localhost:8001/services/c4eefed0-cfc4-4ceb-8eef-08c6b2c2c060/routes \

--data 'paths[]=/baidu'

这里我们使用的serviceId,也可用使用Service name,为了和之前区别,我们这里路径使用\baidu。

Kong环境搭建及简单使用(对ApiGateWay之Kong的使用)

我们再次访问下: http://localhost:8000/baidu 

Kong环境搭建及简单使用(对ApiGateWay之Kong的使用)

本帖仅供学习参考。

继续阅读