安装和配置Kong的过程很是坎坷,安装采用的是docker,根据官方doc很简单即使英文再不好也认识Doc和install吧,尽量不要去百度安装方法因为很多的教程都是老版本的和新版本有很大的改动,在这吃了很大亏。
一定看好版本号!点击install后选择docker安装。
根据里边的步骤走就可以了很清晰。
1. docker network create kong-net
2. docker run -d --name kong-database \
--network=kong-net \
-p 5432:5432 \
-e "POSTGRES_USER=kong" \
-e "POSTGRES_DB=kong" \
postgres:9.6
3. 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 bootstrap
4. 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
安装好后运行看看有没有成功,如果出现一堆json说安装成功了。
curl -i http://localhost:8001/
接下来我们要做的就是访问kong的8000端口给我们转发到其他服务器。
网上大部分教程都是0.13.x之前的,我们安装的是最新版本admin api已经改了所以在这里卡了半天,如果你安装的是0.13.x之后的下面的方法是不可以用的,因为已经取消了apis这个接口。
新版本思路大概就是先添加一个服务(Service)在添加一个路由(Route)之后的访问只要用了这个路由都会转发到添加的服务上。
// 创建一个服务,名字叫test.service,url可以是自己的服务器地址,一会
//我要把所有请求都转发到百度
curl -i -X POST http://localhost:8001/services -d "name=test.service" -d "url=http://www.baidu.com/"
//成功后会返回以下json,id会用到
{
"id": "0c61e164-6171-4837-8836-8f5298726d53",
"created_at": 1422386534,
"updated_at": 1422386534,
"name": "my-service",
"retries": 5,
"protocol": "http",
"host": "example.com",
"port": 80,
"path": "/some_api",
"connect_timeout": 60000,
"write_timeout": 60000,
"read_timeout": 60000,
"tags": ["user-level", "low-priority"]
}
//添加一个路由,service.id是上边获取的,paths可以看做一个标记只要带baidu的都会转发到http://www.baidu.com/
curl -i -X POST --url http://localhost:8001/routes/ \
-d 'protocols[]=http&protocols[]=https' \
-d 'paths=/baidu' \
-d 'service.id=9a2522a3-f846-4561-8154-564116403cdd'
接下来安装一个可视化的工具,konga,第一次用尽量用上边的方法添加服务和路由,因为工具是英文的在添加服务和路由时都是一大堆表单很容易填错,其实需要填写的就那么两项。
接下来是安装过程,直接打开github搜konga。
docker pull pantsel/konga
docker run -p 1337:1337 \
--network kong-net \ //开始的时候我们创建了network 一定要在一个network下不然ping不同,也连不上
--name konga \
-e "NODE_ENV=production" \ // or "development" | defaults to 'development'
-e "TOKEN_SECRET=1234" \ //我是瞎写的
pantsel/konga
安装好后运行127.0.0.1:1337打开后去创建一个账号登录吧。
这时候需要连接一下我们的kong,点击Connections 添加名字随便起一个,Kong Admin URL 填写我们kong容器的ip地址加端口号,填写好后点下启用。
菜单一下子多了很多选项,红框是之前我们添加的服务和路由,点进去看看吧,以后就照着填写就好了。
路由上有个开关(上图)打开后在访问时需要带着Paths,我们之前填写的是/baidu,如果你的接口是/goods/list,所以我们访问地址是http://127.0.0.1:8000/baidu/goods/list,kong会给我们转发到www.baidu.com/goods/list。
结束!!!