mwitkow / grpc-proxy

gRPC proxy is a Go reverse proxy that allows for rich routing of gRPC calls with minimum overhead.
Apache License 2.0
949 stars 208 forks source link

grpc reverse proxy #46

Open Arnold1 opened 4 years ago

Arnold1 commented 4 years ago

Hi,

I would like to get more information about the grpc-proxy you built. can it also be used for Tensorflow serving (it uses grpc request / response)? I want to read the header and re-write it and forward it to to TensorFlow Serving and read the response and forward it to the grpc client.

grpc client <-> grpc proxy <-> TensorFlow Serving

Thanks.

felix0080 commented 4 years ago

I have the same question which you have meet.We can have a touch by wechat

Arnold1 commented 4 years ago

I use envoy proxy for now

peterpunk commented 4 years ago

I use envoy proxy for now

can you share a sample config? thanks

aalansehaiyang commented 3 years ago

Hi,

I would like to get more information about the grpc-proxy you built. can it also be used for Tensorflow serving (it uses grpc request / response)? I want to read the header and re-write it and forward it to to TensorFlow Serving and read the response and forward it to the grpc client.

grpc client <-> grpc proxy <-> TensorFlow Serving

Thanks.

hello,i have the same question. Have you found a solution?

Arnold1 commented 3 years ago

@peterpunk @aalansehaiyang

I used envoy proxy in front of reserving:

Dockerfile:

FROM envoyproxy/envoy:v1.14.1

RUN apt-get update && apt-get -q install -y \
    curl
ADD ./front-envoy.yaml /etc

EXPOSE 8080

CMD /usr/local/bin/envoy -c /etc/front-envoy.yaml --service-cluster front-proxy

front-envoy.yaml:

static_resources:
  listeners:
    - name: api
      address:
        socket_address:
          protocol: TCP
          address: 0.0.0.0
          port_value: 8080
      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
                #access_log:
                #  - name: envoy.file_access_log
                #    typed_config:
                #      "@type": type.googleapis.com/envoy.extensions.access_loggers.file.v3.FileAccessLog
                #      path: /dev/stdout
                #    typed_config:
                #      "@type": type.googleapis.com/envoy.config.accesslog.v2.FileAccessLog
                #      path: /Users/tien.nguyenvan/Downloads/access.log
                route_config:
                  name: local_route
                  virtual_hosts:
                    - name: www
                      domains:
                        - "*"
                      routes:
                        - match:
                            prefix: "/"
                          route:
                            cluster: tfs
                http_filters:
                  - name: envoy.filters.http.router
  clusters:
    - name: tfs
      connect_timeout: "0.25s"
      type: logical_dns
      lb_policy: round_robin
      dns_lookup_family: V4_ONLY
      #http_protocol_options: {}
      http2_protocol_options: {}
      #tls_context: {}
      hosts:
        socket_address:
          address: "tfserving"
          port_value: 8500

admin:
  access_log_path: "/dev/null"  
  #access_log_path: /Users/tien.nguyenvan/Downloads/admin_access.log
  address:
    socket_address:
      protocol: TCP
      address: 0.0.0.0
      port_value: 8081
aalansehaiyang commented 3 years ago

@peterpunk @aalansehaiyang

I used envoy proxy in front of reserving:

Dockerfile:

FROM envoyproxy/envoy:v1.14.1

RUN apt-get update && apt-get -q install -y \
    curl
ADD ./front-envoy.yaml /etc

EXPOSE 8080

CMD /usr/local/bin/envoy -c /etc/front-envoy.yaml --service-cluster front-proxy

front-envoy.yaml:

static_resources:
  listeners:
    - name: api
      address:
        socket_address:
          protocol: TCP
          address: 0.0.0.0
          port_value: 8080
      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
                #access_log:
                #  - name: envoy.file_access_log
                #    typed_config:
                #      "@type": type.googleapis.com/envoy.extensions.access_loggers.file.v3.FileAccessLog
                #      path: /dev/stdout
                #    typed_config:
                #      "@type": type.googleapis.com/envoy.config.accesslog.v2.FileAccessLog
                #      path: /Users/tien.nguyenvan/Downloads/access.log
                route_config:
                  name: local_route
                  virtual_hosts:
                    - name: www
                      domains:
                        - "*"
                      routes:
                        - match:
                            prefix: "/"
                          route:
                            cluster: tfs
                http_filters:
                  - name: envoy.filters.http.router
  clusters:
    - name: tfs
      connect_timeout: "0.25s"
      type: logical_dns
      lb_policy: round_robin
      dns_lookup_family: V4_ONLY
      #http_protocol_options: {}
      http2_protocol_options: {}
      #tls_context: {}
      hosts:
        socket_address:
          address: "tfserving"
          port_value: 8500

admin:
  access_log_path: "/dev/null"  
  #access_log_path: /Users/tien.nguyenvan/Downloads/admin_access.log
  address:
    socket_address:
      protocol: TCP
      address: 0.0.0.0
      port_value: 8081

Thank you very much. I'll try