Skip to content

Enable http_filters.envoy.filters.http.grpc_http1_reverse_bridge only for one service #8052

@sp-manuel-jurado

Description

@sp-manuel-jurado

Title: Enable http_filters.envoy.filters.http.grpc_http1_reverse_bridge only for one service

Description:

Would be possible to enable envoy.filters.http.grpc_http1_reverse_bridge for service1 only?
Probably I missed some config?

  • Service1 is in http1 and requires the reverse bridge
  • Service2 is gRPC and does not require the reverse bridge (but is blocked by the .grpc_http1_reverse_bridge)

Note:

I would like to use the same port for both services.

Config:

admin:
  access_log_path: /tmp/admin_access.log
  address:
    socket_address:
      protocol: TCP
      address: 127.0.0.1
      port_value: 9901
static_resources:
  listeners:
    - name: listener_0
      address:
        socket_address:
          protocol: TCP
          address: 0.0.0.0
          port_value: 10000
      filter_chains:
        - filters:
            - name: envoy.http_connection_manager
              typed_config:
                "@type": type.googleapis.com/envoy.config.filter.network.http_connection_manager.v2.HttpConnectionManager
                stat_prefix: ingress_http
                codec_type: AUTO
                route_config:
                  name: backend
                  virtual_hosts:
                    - name: backend
                      domains: ["*"]
                      routes:
                        - match: { prefix: "/service2/" }
                          route: { host_rewrite: grpc, cluster: grpc, timeout: 59.99s }
                        - match: { prefix: "/service1/" }
                          route: { host_rewrite: nginx, cluster: backend, timeout: 59.99s }
                http_filters:
                  - name: envoy.filters.http.grpc_http1_reverse_bridge
                    config:
                      content_type: application/grpc+proto
                      withhold_grpc_frames: true
                  - name: envoy.router
                    typed_config: {}
  clusters:
  - name: backend
    connect_timeout: 59.99s
    type: logical_dns
    dns_lookup_family: v4_only
    lb_policy: round_robin
    load_assignment:
      cluster_name: backend
      endpoints:
        - lb_endpoints:
            - endpoint:
                address:
                  socket_address:
                    address: nginx
                    port_value: 80
  - name: grpc
    connect_timeout: 0.25s
    type: strict_dns
    lb_policy: round_robin
    http2_protocol_options: {}
    load_assignment:
      cluster_name: grpc
      endpoints:
        - lb_endpoints:
            - endpoint:
                address:
                  socket_address:
                    address: grpc
                    port_value: 10005

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementFeature requests. Not bugs or questions.help wantedNeeds help!

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions