网关

优质
小牛编辑
126浏览
2023-12-01

ketchup 的网关结合kong

注册ketchup转换器到kong

配置gateway.json

{
  //注册中心配置
  "Consul": {
    "ConnectionString": "192.168.180.55:8500",
    "IsHealthCheck": true
   },
  "Gateway": {
    "Address": "192.168.3.11",//ip
    "Port": 8090,//端口
    "KongAddress": "192.168.190.114:8001",//kong 的adminapi 地址
    "Protocol": "http",//协议
    "Path": "/api" //api路由
  }
}

配置服务方法映射客户端

在GatewayModule配置如下:

private Dictionary<string, Type> ClientMaps()
{
   return new Dictionary<string, Type>()
   {
       {"SayHello", typeof(RpcTest.RpcTestClient)}//key:服务方法。value:客户端类
   };
}

Protos文件

将所有需要映射的服务.proto文件放到 Protos文件夹下

注册服务路由到kong

服务模块中添加kong的设置

builder.GetInstances<IKongNetProvider>().AddKongSetting();

给服务配置kong路由参数

[KongRoute(Name = nameof(SayHello), Paths = new[] { "/sample/SayHello" })] //paths格式:/服务名/方法名

其他配置参数说明

public class KongRoute
{
    public string Name { get; set; } //路由名
    public string[] Hosts { get; set; } //路由host
    public string[] Methods { get; set; } = new[] { "POST" }; //路由请求方式
    public string[] Protocols { get; set; } = new[] { "http" };//路由请求协议
    public int Https_redirect_status_code { get; set; } = 426;//kong 默认https路由错误码
    public string[] Paths { get; set; }//路由路径
    public string[] Tags { get; set; }//路由标记
}