Didn't find a registered implementation for 'envoy.filters.http.grpc_web error with 1.22 but not 1.21

2,821 views
Skip to first unread message

Jiajun Yang

unread,
May 23, 2022, 1:14:30 PM5/23/22
to envoy-users
Hi,
I have project that run envoy for grpc_web on Ubuntu.
With 1.21 and below my envoy.yaml config works just fine but in 1.22 it produced:
`Didn't find a registered implementation for 'envoy.filters.http.grpc_web' with type URL: ''`
Even though envoy.filters.http.grpc_web is an option based on the log:
```
[2022-05-23 14:46:59.732][123][info][main] [source/server/server.cc:394] envoy.filters.http: envoy.bandwidth_limit, envoy.buffer, envoy.cors, envoy.csrf, envoy.ext_authz, envoy.ext_proc, envoy.fault, envoy.filters.http.adaptive_concurrency, envoy.filters.http.admission_control, envoy.filters.http.alternate_protocols_cache, envoy.filters.http.aws_lambda, envoy.filters.http.aws_request_signing, envoy.filters.http.bandwidth_limit, envoy.filters.http.buffer, envoy.filters.http.cache, envoy.filters.http.cdn_loop, envoy.filters.http.composite, envoy.filters.http.compressor, envoy.filters.http.cors, envoy.filters.http.csrf, envoy.filters.http.decompressor, envoy.filters.http.dynamic_forward_proxy, envoy.filters.http.dynamo, envoy.filters.http.ext_authz, envoy.filters.http.ext_proc, envoy.filters.http.fault, envoy.filters.http.gcp_authn, envoy.filters.http.grpc_http1_bridge, envoy.filters.http.grpc_http1_reverse_bridge, envoy.filters.http.grpc_json_transcoder, envoy.filters.http.grpc_stats, envoy.filters.http.grpc_web, envoy.filters.http.header_to_metadata, envoy.filters.http.health_check, envoy.filters.http.ip_tagging, envoy.filters.http.jwt_authn, envoy.filters.http.local_ratelimit, envoy.filters.http.lua, envoy.filters.http.oauth2, envoy.filters.http.on_demand, envoy.filters.http.original_src, envoy.filters.http.ratelimit, envoy.filters.http.rbac, envoy.filters.http.router, envoy.filters.http.set_metadata, envoy.filters.http.stateful_session, envoy.filters.http.tap, envoy.filters.http.wasm, envoy.grpc_http1_bridge, envoy.grpc_json_transcoder, envoy.grpc_web, envoy.health_check, envoy.http_dynamo_filter, envoy.ip_tagging, envoy.local_rate_limit, envoy.lua, envoy.rate_limit, envoy.router, match-wrapper
```

Here is my config
```
admin:
  address:
    socket_address:
      address: 0.0.0.0
      port_value: 9901
      protocol: TCP

static_resources:
  listeners:
  - name: listener_0
    address:
      socket_address: { address: 0.0.0.0, port_value: 8081 }
    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
          stat_prefix: ingress_http
          codec_type: auto
          route_config:
            name: local_route
            virtual_hosts:
            - name: local_service
              domains: ["*"]
              routes:
              - match: { prefix: "/" }
                route:
                  cluster: monosphere
                  timeout: 0s
                  max_stream_duration:
                    grpc_timeout_header_max: 0s
              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
                max_age: "1728000"
                expose_headers: custom-header-1,grpc-status,grpc-message
          http_filters:
            - name: envoy.filters.http.grpc_web
            - name: envoy.filters.http.cors
            - name: envoy.filters.http.router
          stream_idle_timeout: 0s


  clusters:
  - name: monosphere
    connect_timeout: 0.25s
    type: logical_dns
    http2_protocol_options: {}
    lb_policy: round_robin
    load_assignment:
      cluster_name: monosphere
      endpoints:
        - lb_endpoints:
            - endpoint:
                address:
                  socket_address:
                    address: 0.0.0.0
                    port_value: 8082
```

Please advice what needs to be changed for 1.22 to work ? Much appreciated.

Stephan Zuercher

unread,
May 23, 2022, 11:46:11 PM5/23/22
to Jiajun Yang, envoy-users
See the release notes:

  • config: type URL is used to lookup extensions regardless of the name field. This may cause problems for empty filter configurations or mis-matched protobuf as the typed configurations. This behavioral change can be temporarily reverted by setting runtime guard envoy.reloadable_features.no_extension_lookup_by_name to false.

You can use that runtime flag to reinstate the old behavior, but when the flag is removed, you'll need to declared the typed config for your https filters (in the same way that you've done for the HttpConnectionManager network filter). Something like:

http_filters:
  - name:  envoy.filters.http.grpc_web_but_can_be_anything
    typed_config:
      "@type": type.googleapis.com/envoy.extensions.filters.http.grpc_web.v3.GrpcWeb

This applies to the other http filters in your config as well as any other extenions. See the documentation for each extension's config object to learn the correct type name.

Stephan

HOLOPLOT GmbH - Headquarters

Ringbahnstr. 12 (10-14) / A2

12099 Berlin, Germany

+49 (0) 30 40745812


HOLOPLOT GmbH - Manufacturing

Alboinstr. 17-23 / Hall 12

12103 Berlin, Germany

+49 (0) 30 959988740


www.holoplot.com


Follow us on LinkedIn.


Roman Sick – CEO | HRB183974B, Register Court Charlottenburg, Germany | EU Tax-Registration No. DE277000701 This e-mail contains confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the information in this e-mail is strictly forbidden.

Attention: Our goods acceptance is closed on May 26th and 27th, 2022 due to Ascension Day. No deliveries possible.
Achtung: Unsere Warenannahme ist wegen Himmelfahrt am 26. und 27.06.22 geschlossen. Es ist keine Anlieferung möglich.

--
You received this message because you are subscribed to the Google Groups "envoy-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to envoy-users...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/envoy-users/f016129c-5e89-460d-a7d2-ab04a7ec6b6dn%40googlegroups.com.

Jiajun Yang

unread,
May 25, 2022, 10:31:05 AM5/25/22
to envoy-users
Can you show me how to set this runtime flag in the config yaml file? It is really not clear to me how to do it .
Reply all
Reply to author
Forward
0 new messages