.net core 从零玩转 Api gateway -- kong
一、什么是kong
基于ngnix、openresty、lua的开源api网关。
二、为什么选择kong
- 1、基于ngnix,性能好,开源
- 2、ngnix需要修改配置,reload。kong无侵入,随时修改随时生效。有可视化界面可操作,可自定义插件。
三、部署kong和konga
3.1、ubuntu20.04安装部署,.net core webapi测试。本文只介绍docker 安装,其他方式请参照官方文档
docker run -d --name kong-database \
--network=kong-net \
-p 5432:5432 \
-e "POSTGRES_USER=kong" \
-e "POSTGRES_DB=kong" \
postgres:9.6
3.2.3:
docker run --rm \
--network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_PG_PASSWORD=kong" \
-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
kong:latest kong migrations bootstrap
3.2.4:
docker run -d --name kong \
--network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-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 8001:8001 \
-p 8444:8444 \
kong:latest
3.3、docker安装Konga
3.3.1:
docker run -d --name konga-database \
--network=kong-net \
-p 5433:5432 \
-v konga-postgresql:/var/lib/postgresql/data \
-e "POSTGRES_USER=konga" \
-e "POSTGRES_DB=konga" \
-e "POSTGRES_PASSWORD=konga" \
postgres:9.6
3.3.2:
docker run --rm --network=kong-net \
pantsel/konga:latest -c prepare -a postgres -u postgres://konga:konga@konga-database:5432/konga

3.3.3: 启动konga 容器
docker run -d -p 1337:1337 \
--network kong-net \
-e "DB_ADAPTER=postgres" \
-e "DB_URI=postgres://konga:konga@konga-database:5432/konga" \
-e "NODE_ENV=production" \
-e "DB_PASSWORD=konga" \
--name konga \
pantsel/konga
四、konga 使用
1、运行两个netcore webapi 项目 分别是9999,9998端口
2、负载均衡
2.1: upstream


2.2:增加两个路由到9999和9998服务上
2.3: 创建service--example_service host: webapi(对应upstream name)


2.4:route 设置

实现负载均衡

3、ip 黑白名单





4、限流


限流提示

kong 还有其他更高级的玩法,包括添加插件和自定义插件。大家可以自己去玩玩。



浙公网安备 33010602011771号