2

我正在为 grpc-web 使用特使代理,并且在一项服务上一切正常,但现在我正在注册其他服务,但遇到了问题。我认为路由配置会起作用,但是当我尝试访问端点时,它给了我一个DNS resolution failedinbloomRPC。

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

我在 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
4

0 回答 0