如何为2 grpc服务配置特使代理?

问题描述

我在使用grpc-web的特使代理,并且使用一种服务一切正常,但是现在我在注册其他服务时遇到了问题。我以为可以进行路由配置,但是当我尝试触碰端点时,它会在BloomrPC中给我DNS resolution Failed

我应该只转为边车特使网格配置吗?我一直在避免这种情况,因为它增加了开发的复杂性,但是在解决此问题的研究中,却出现了很多问题。

我正在MacOS Catalina中使用docker-compose运行它。

admin:
  access_log_path: /tmp/admin_access.log
  address:
    socket_address: { address: 0.0.0.0,port_value: 9991 }

static_resources:
  listeners:
    - name: listener_0
      address:
        socket_address:
          address: 0.0.0.0
          port_value: 9911
      filter_chains:

        - filters:
            - name: envoy.filters.network.http_connection_manager
              typed_config:
                "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.httpconnectionManager
                codec_type: auto
                stat_prefix: ingress_http
                route_config:
                  name: local_route
                  virtual_hosts:
                    - name: local_service
                      domains:
                        - "*"
                      routes:
                        - match:
                            prefix: "/service1"
                          route:
                            cluster: service1
                        - match:
                            prefix: "/service2"
                          route:
                            cluster: service2
                      cors:
                        allow_origin_string_match:
                          - prefix: "*"
                        allow_methods: GET,PUT,DELETE,POST,OPTIONS
                        allow_headers: keep-alive,user-agent,cache-control,content-type,content-transfer-encoding,custom-header-1,x-accept-content-transfer-encoding,x-accept-response-streaming,x-user-agent,x-grpc-web,grpc-timeout,access-token
                        max_age: "1728000"
                        expose_headers: custom-header-1,grpc-status,grpc-message,access-token
                        allow_credentials: true
                http_filters:
                  - name: envoy.filters.http.grpc_http1_bridge
                    typed_config: { }
                  - name: envoy.filters.http.grpc_web
                    typed_config: { }
                  - name: envoy.filters.http.cors
                    typed_config: { }
                  - name: envoy.filters.http.router
                    typed_config: { }

  clusters:
    - name: service1
      connect_timeout: 0.25s
      type: strict_dns
      dns_lookup_family: V4_ONLY
      http2_protocol_options: { }
      lb_policy: round_robin
      load_assignment:
        cluster_name: service1
        endpoints:
          - lb_endpoints:
              - endpoint:
                  address:
                    socket_address:
                      address: host.docker.internal #0.0.0.0
                      port_value: 50101

    - name: service2
      connect_timeout: 0.25s
      type: strict_dns
      dns_lookup_family: V4_ONLY
      http2_protocol_options: { }
      lb_policy: round_robin
      load_assignment:
        cluster_name: service2
        endpoints:
          - lb_endpoints:
              - endpoint:
                  address:
                    socket_address:
                      address: host.docker.internal #0.0.0.0
                      port_value: 50102

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)