如何成功使特使转到我的第二个服务?

时间:2019-02-22 11:31:21

标签: microservices envoyproxy

我正在尝试使用envoy github page的特使前端代理配置来部署2个服务

我的第一个服务是应在“ /”下工作的主站点,第二个服务是应在“ / admin”下工作的后台管理。当我将第一个服务的前缀声明为“ /”时,问题开始了。此后,Envoy完全不会将流量路由到我的管理服务。

我的front-envoy.yaml是:

static_resources:
 listeners:
 - address:
     socket_address:
       address: 0.0.0.0
       port_value: 80
   filter_chains:
   - filters:
     - name: envoy.http_connection_manager
       config:
         codec_type: auto
         stat_prefix: ingress_http
         route_config:
           name: local_route
           virtual_hosts:
           - name: backend
             domains:
             - “*”
             routes:
             - match:
                 prefix: “/”
               route:
                 cluster: service1
             - match:
                 prefix: “/admin”
               route:
                 cluster: service2
         http_filters:
         - name: envoy.router
           config: {}
 clusters:
 - name: service1
   connect_timeout: 0.25s
   type: strict_dns
   lb_policy: round_robin
   http2_protocol_options: {}
   hosts:
   - socket_address:
       address: service1
       port_value: 80
 - name: service2
   connect_timeout: 0.25s
   type: strict_dns
   lb_policy: round_robin
   http2_protocol_options: {}
   hosts:
   - socket_address:
       address: service2
       port_value: 80
admin:
 access_log_path: “/dev/null”
 address:
   socket_address:
     address: 0.0.0.0
     port_value: 8001

请咨询。

1 个答案:

答案 0 :(得分:0)

问题是您将“ /”作为第一个前缀匹配器,“ /”作为前缀将与所有请求匹配,它将与“ /”请求以及“ /”匹配管理员”请求。将匹配的顺序更改为先具有“ / admin”,然后具有“ /”。应该可以。