Kong入门

Kong简介

Kong是一款基于Nginx_Lua模块写的高可用,易扩展由Mashape公司开源的API Gateway项目。由于Kong是基于Nginx的,所以可以水平扩展多个Kong服务器,通过前置的负载均衡配置把请求均匀地分发到各个Server,来应对大批量的网络请求。

docker方式安装Kong(使用数据库)

1.拉取一个Kong镜像和PostgreSQL数据库

docker pull kong:1.5.1
docker pull postgres:9.6

2.创建一个Docker网络

kong-net为自定义的网络名称,可以使用任何名称,使容器能够发现彼此并进行通信

docker network create kong-net

3.启动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

4.初始化数据库(迁移数据)

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

5.运行Kong

Http访问端口:8000
Https访问端口:8443
Http管理端口:8001
Https管理端口:8444

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

Kong的使用

以下是一个简单例子,更多API使用参考官网https://docs.konghq.com/getting-started-guide/2.1.x/overview/

upstream helloword{
	 	server 192.168.234.131:8080  weight=100;
	 }

	server{
	
	   location /hello {
	      proxy_pass    http://helloword;
	  }
	}

配置upstream

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

配置target

curl -X POST http://localhost:8001/upstreams/helloword/targets \
 --data "target=192.168.234.131:8080" --data "weight=100"

配置service

curl -i -X POST http://localhost:8001/services \
 --data "name=example_service" \
 --data "host=helloword"

在这里插入图片描述

配置route

curl -i -X POST http://localhost:8001/services/example_service/routes \
  --data "paths[]=/hello" \
  --data "service.id=206fa8fc-f89c-40eb-ab4c-3c712a0023b0"

service.id与配置service的id对应

kong-dashboard

下载镜像

docker pull pgbi/kong-dashboard

相容性矩阵

Kong-Dashboard versionsKong versionsNode versions
1.x.x>= 0.6, < 0.10
2.x.x0.10
3.0.x>= 0.9, <0.12>= 6.0.0
3.1.x, 3.2.x>= 0.9, <0.13>= 6.0.0
3.3.x, 3.4.x>= 0.9, <0.14>= 6.0.0
3.5.x>= 0.9, <0.15>= 6.0.0
3.6.x>= 0.9, <2.0.0>= 6.0.0

Kong Dashboard 3.3.0仅与Kong 0.13部分兼容。它不支持Kong 0.13中引入的新服务和路由对象。

运行

docker run --rm -p 8080:8080 pgbi/kong-dashboard start \
  --kong-url http://kong:8001
  --basic-auth user=password    //设置你的用户名和密码
 --rm表示临时启动,生产环境中可以去掉。

如果出现以下错误:
在这里插入图片描述
原因:连接拒绝错误的是因为2个容器(kong 和 kong-dashboard)在默认桥接网络上,这不会执行DNS解析。

需要创建一个用户定义的桥接网络并将这两个容器添加到该网络 。而在上面安装时已经创建该网络,所以执行步骤3就可以,如果安装没有创建该网络,执行以下步骤123

1.创建桥梁网络

docker network create kong-net

2.将Kong容器添加到它

docker network connect kong-net kong

3.运行kong-dashboard时提供网络信息

docker run --rm --network kong-net -d -p 8080:8080 \
pgbi/kong-dashboard start \
--kong-url http://kong:8001 --basic-auth user=password

参考https://github.com/PGBI/kong-dashboard/issues/156

启动后通过浏览器访问,填写用户名密码即可使用。

Konga

兼容性
从0.14.0开始,Konga仅与Kong 1.x兼容
具体安装过程参考dockerHub https://hub.docker.com/r/pantsel/konga

1.下载镜像

docker pull pantsel/konga

2.初始化Konga数据库

docker run --rm --network=kong-net pantsel/konga:latest -c prepare \
-a postgres \
-u postgres://用户名:密码@ip:port/konga
docker run --rm --network=kong-net pantsel/konga:latest -c prepare \
-a postgres \
-u postgres://kong:kong@172.18.0.2:5432/konga
或
docker run --rm --network=kong-net pantsel/konga:latest -c prepare \
-a postgres \
-u postgres://kong:kong@kong-database:5432/konga

以上的ip172.18.0.2是postgreSQL的ip地址,可以使用docker inspect 容器ID命令查看,也可以使用postgresql的自定义的容器名kong-database,否则会出现错误:
在这里插入图片描述
第二种可能出现的错误
在这里插入图片描述
问题出在postgres的版本上,使用postgres:9.6,参考https://github.com/pantsel/konga/issues/462

成功出现以下信息:
在这里插入图片描述

3.启动Konga

docker run -p 1337:1337 
          --network {{kong-network}} \ // optional
          -e "TOKEN_SECRET={{somerandomstring}}" \
          -e "DB_ADAPTER=the-name-of-the-adapter" \ // 'mongo','postgres','sqlserver'  or 'mysql'
          -e "DB_HOST=your-db-hostname" \
          -e "DB_PORT=your-db-port" \ // Defaults to the default db port
          -e "DB_USER=your-db-user" \ // Omit if not relevant
          -e "DB_PASSWORD=your-db-password" \ // Omit if not relevant
          -e "DB_DATABASE=your-db-name" \ // Defaults to 'konga_database'
          -e "DB_PG_SCHEMA=my-schema"\ // Optionally define a schema when integrating with prostgres
          -e "NODE_ENV=production" \ // or 'development' | defaults to 'development'
          --name konga \
          pantsel/konga
docker run -d -p 1337:1337 \
		 --network kong-net  \
		 -e "TOKEN_SECRET=P@sswOrd" \
		 -e "DB_ADAPTER=postgres"  \
		 -e "DB_URI=postgres://kong:kong@kong-database:5432/konga"  \
		 -e "NODE_ENV=production"  \
		 --name konga \
		 pantsel/konga
		  

注意细节:DB_URI此处使用的是容器名kong-database,也可以换成ip。

之后就可以在浏览器中访问了。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值