教你30分钟通过Kong实现.NET网关

教你30分钟通过Kong实现.NET网关孔(姓)是一个Openrestry程序,而Openrestry运行在Nginx上,用左上臂扩展了nginx所以可以认为Kong=Openrestry nginx lua,这篇文章主要介绍了30分钟通过孔(姓)实现网网关,需要的朋友可以参考下什么是KongOpenrestry是一个基于Nginx与左上臂的高性能平台,内部有大量的左上臂库其中ngx_lua_moudule使开发人员能使用左上臂脚本调用Nginx模块孔是一个Openrestry程序,而Openrestry运行在Nginx上,用左上臂扩展了nginx所以可以认为Kong=Openrestry nginx lua孔(姓)有很高的扩展性,可以通过其插件机制实现扩展官方文档:https://docs.konghq.com/github:https://githubcom/孔/孔原理客户端请求到达孔,孔识别出是哪个消费者,根据路由规则将请求转发给服务对应的上游服务我们来看看这个过程中涉及到的核心组件消费者:代表一个应用,可以为消费者定义插件,制定其请求规则路线:客户端与服务匹配的规则,是孔(姓)的入口,一旦匹配途径规则,则将其代理到与其关联的服务,一个途径对应一个服务,一个服务有多个途径服务:管理我们的应用程序接口或者上游服务器,服务主要属性是url,端口,协议等上游:位于孔(姓)之后的服务/API,多实例部署实现负载均衡插件:提供高级功能并扩展网关例如身份认证,速率限制等安装Kong官方文档:香港https://号com/install/# kong-社区大家可以安装企业版或者开源版,我这次安装企业版,但只使用其中的开源功能#拉镜像码头工人拉孔/孔-出入口:2 .6 .0 .0-阿尔卑斯#打标签码头标签孔/孔-入口:2 .6 .0 .0-阿尔卑斯山孔表示“受动者”: employee | lessee#创建网络码头工人网络创建金刚网#运行数据库容器docker run-d-name kong-ee-database-network=kong-ee-net-p 5432:5432-e POSTGRES _ USER=kong -e POSTGRES _ DB=kong -e POSTGRES _ PASSWORD=kong POSTGRES:9.6#数据库迁移docker run-RM-network=KONG-ee-net-e KONG _ DATABASE=postgres -e KONG _ PG _ HOST=KONG-ee-DATABASE -e KONG _ PG _ PASSWORD=KONG -e KONG _ PASSWORD={ PASSWORD } KONG-ee KONG迁移引导#运行孔(姓)docker run-d-name KONG-ee-network=KONG-ee-net-e KONG _ PROXY _ LISTEN=00 .0 .0:8000,0 .0 .0 .0:9080 http 2 -e KONG _ DATABASE=postgres -e KONG _ PG _ HOST=KONG-ee-DATABASE -e KONG _ PG _ PASSWORD=KONG -e KONG _ PROXY _ ACCESS _ LOG=/dev/stdout -e KONG _ ADMIN _ ACCESS _ LOG=/dev/stdout -e KONG _ PROXY安装可视化界面Konga官方源码:https://github.com/pantsel/kongadocker pull pantsel/kongadocker run-d-p 1337:1337-network kong-ee-net-e TOKEN _ SECRET=kong TOKEN -e DB _ ADAPTER=postgres -e DB _ HOST=kong-ee-database -e DB _ USER=kong -e DB _ PASSWORD=kong -name konga pantsel/konga访问本地主机:1337,新建用户,登录后创建连接:测试/http://192.168.43.94:8001,指定孔美国石油学会(American Petroleum Institute)的端口8001Kong代理HTTP服务我们用的演示项目是https://github.com/cysnet/gateway-aspnetcore-demo,其中包含以下内容超文本传送协议(超文本传输协议的缩写)服务:服务器一与服务器2Grpc服务:GrpcService1与GrpcService2Grpc客户端:GrpcClient身份服务器四服务:Idstest日志服务:日志服务器1.代理超文本传送协议(超文本传输协议的缩写)服务我们用服务器1,启动服务器一2.通过管理美国石油学会(American Petroleum Institute)在孔(姓)中创建服务,也可使用可视化界面孔加创建邮政http://192168 .43 .94:8001/services-数据名称=服务器1-数据URL= http://192168 .43 .94:5000 3.通过管理美国石油学会(American Petroleum Institute)创建路由,也可使用可视化界面孔加创建http://192 .168 .43 .94:8001/services/server 1/routes-data paths[]=/http 1 -data name=http 14.测试Kong代理Grpc服务1.代理Grpc我们用GrpcService1,启动GrpcService12.通过管理美国石油学会(American Petroleum Institute)在孔(姓)中创建服务,也可使用可视化界面孔加创建192后168 .43 .96:8001/服务-数据名称=gserver1 -数据协议=grpc -数据主机=192.168.43.94 -数据端口=60013.通过管理美国石油学会(American Petroleum Institute)创建路由,也可使用可视化界面孔加创建192后168 .43 .94:8001/services/gserver 1/routes-数据协议[]=grpc-数据名称=r-gserver 1-数据路径[]=/greet4.测试,运行GrpcClientKong负载Http服务1.启动服务器一与服务器22.通过管理美国石油学会(American Petroleum Institute)在孔(姓)中创建上游,也可使用可视化界面孔加创建邮政http://192168 .43 .94:8001/upstreams-data name=u-http 13.为u-http1创建目标,指向服务器一与服务器2邮政http://192168 .43 .94:8001/upstreams/u-http 1/targets-data target= 192168 .43 .94:5000 邮政http://192168 .43 .94:8001/upstreams/u-http 1/targets-data target= 192168 .43 .94:5001 4.修改http1服务的指向,让其指向u-http1这个向上游修补程序http://192 .168 .43 .94:8001/services/server 1-数据主机= u-http 1 5.测试,调用以下美国石油学会(美国石油协会)http://192 .168 .43 .94:8000/http 1/NameKong负载Grpc服务1.启动GrpcService1与GrpcService22.通过管理美国石油学会(American Petroleum Institute)在孔(姓)中创建上游,也可使用可视化界面孔加创建邮政http://192168 .43 .94:8001/upstreams-data name=u-g server 13.为u-g服务器一创建目标,指向GrpcService1与GrpcService2邮政http://192168 .43 .94:8001/upstreams/u-g server 1/targets-data target= 192168 .43 .94:6001 邮政http://192168 .43 .94:8001/upstreams/u-g server 1/targets-data target= 192168 .43 .94:6002 4.修改gserver1服务的指向,让其指向u-g服务器一这个向上游修补程序http://192 .168 .43 .94:8001/services/gserver 1-数据主机= u-gserver 1 5.测试,运行GrpcClient集成IdentityServer4实现JWT认证1.给服务器一开启jwt插件POST http://localhost:8001/services/server 1/plugins-d " name=jwt "-d " configkey _ claim _ name=client _ id2.创建消费者POST localhost:8001/consumers-d username=c-server 1 3.获取ids4证书公钥与私钥openssl安装https://slproweb.com/products/Win32OpenSSL.htmlOpenSSL pkcs12-在切斯特pfx-无证书-节点-out private _ PC键从密钥对中提取私钥(头部格式:-开始南非共和国(Republic of South Africa)公钥-)OpenSSL RSA-in private _ PC私人钥匙PrivacyEnhancedMail增强的私密电子邮件从密钥对提取公钥(头部格式:-开始公钥-)OpenSSL RSA-in private _ PC露天酒吧键4.为c-服务器一创建凭证POST localhost:8001/consumers/c-server 1/jwt-d algorithm=RS 256 -d key=big _ cat -d secret=xxxxx

x -d rsa公开密钥=

教你30分钟通过Kong实现.NET网关