.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 安装,其他方式请参照官方文档

3.2、docker安装Kong

  3.2.1  docker network create kong-net

  3.2.2 Kong 目前使用PostgreSql(推荐, 也可以使用Facebook开源的分布式的NoSQL数据库:Cassandra)

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:启动Kong容器

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

可通过 curl -i http://{服务器ip}:8001/ 或者浏览器调用 http://{服务器ip}:8001/ 来验证Kong Admin 是否联通 (出现大json说明安装成功了)。

 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: 初始化 PostgreSQL 数据库

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

运行完后,如果成功可以通过http://121.5.90.180:1337/ 链接到控制台。

 

 

 

四、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 还有其他更高级的玩法,包括添加插件和自定义插件。大家可以自己去玩玩。

 

posted @ 2021-10-14 18:28  lan798  阅读(914)  评论(0)    收藏  举报