Envoy: Front-proxy Example: Didn't find a registered implementation for name: 'envoy.filters.network.http_connection_manager'

Created on 19 Feb 2020  路  11Comments  路  Source: envoyproxy/envoy

Title: Front-proxy Example: Didn't find a registered implementation for name: 'envoy.filters.network.http_connection_manager'

Description:
I'm facing the issue when I run front-proxy example: https://www.envoyproxy.io/learn/on-your-laptop. Envoy doesn't start due to Didn't find a registered implementation for name: 'envoy.filters.network.http_connection_manager' error.
Switching to envoyproxy/envoy-dev:latest doesn't help in this case. I'm facing the same issue with v1.13.0, v1.12.2, v1.11.0 etc. Please advise how to run front-proxy example or make fixes to make sure it's working properly as this is a blocker for potential users. Thanks!

Repro steps:
Just follow https://www.envoyproxy.io/learn/on-your-laptop to run front-proxy

ALMOSTSEEDRADIO:front-proxy ma$ docker-compose ps
front-proxy_front-envoy_1 /docker-entrypoint.sh /bin ... Exit 1
front-proxy_service1_1 /bin/sh -c /usr/local/bin/ ... Up 10000/tcp, 80/tcp
front-proxy_service2_1 /bin/sh -c /usr/local/bin/ ... Up 10000/tcp, 80/tcp

Logs:
[2020-02-19 18:29:15.230][7][info][main] [source/server/server.cc:251] initializing epoch 0 (hot restart version=11.104) [2020-02-19 18:29:15.232][7][info][main] [source/server/server.cc:253] statically linked extensions: [2020-02-19 18:29:15.232][7][info][main] [source/server/server.cc:255] envoy.filters.http: envoy.buffer, envoy.cors, envoy.csrf, envoy.ext_authz, envoy.fault, envoy.filters.http.adaptive_concurrency, envoy.filters.http.dynamic_forward_proxy, envoy.filters.http.grpc_http1_reverse_bridge, envoy.filters.http.grpc_stats, envoy.filters.http.header_to_metadata, envoy.filters.http.jwt_authn, envoy.filters.http.on_demand, envoy.filters.http.original_src, envoy.filters.http.rbac, envoy.filters.http.tap, envoy.grpc_http1_bridge, envoy.grpc_json_transcoder, envoy.grpc_web, envoy.gzip, envoy.health_check, envoy.http_dynamo_filter, envoy.ip_tagging, envoy.lua, envoy.rate_limit, envoy.router, envoy.squash [2020-02-19 18:29:15.232][7][info][main] [source/server/server.cc:255] envoy.tracers: envoy.dynamic.ot, envoy.lightstep, envoy.tracers.datadog, envoy.tracers.opencensus, envoy.tracers.xray, envoy.zipkin [2020-02-19 18:29:15.232][7][info][main] [source/server/server.cc:255] envoy.thrift_proxy.filters: envoy.filters.thrift.rate_limit, envoy.filters.thrift.router [2020-02-19 18:29:15.232][7][info][main] [source/server/server.cc:255] envoy.access_loggers: envoy.file_access_log, envoy.http_grpc_access_log, envoy.tcp_grpc_access_log [2020-02-19 18:29:15.232][7][info][main] [source/server/server.cc:255] envoy.dubbo_proxy.protocols: dubbo [2020-02-19 18:29:15.232][7][info][main] [source/server/server.cc:255] envoy.udp_listeners: raw_udp_listener [2020-02-19 18:29:15.232][7][info][main] [source/server/server.cc:255] envoy.dubbo_proxy.serializers: dubbo.hessian2 [2020-02-19 18:29:15.232][7][info][main] [source/server/server.cc:255] envoy.filters.network: envoy.client_ssl_auth, envoy.echo, envoy.ext_authz, envoy.filters.network.dubbo_proxy, envoy.filters.network.kafka_broker, envoy.filters.network.local_ratelimit, envoy.filters.network.mysql_proxy, envoy.filters.network.rbac, envoy.filters.network.sni_cluster, envoy.filters.network.thrift_proxy, envoy.filters.network.zookeeper_proxy, envoy.http_connection_manager, envoy.mongo_proxy, envoy.ratelimit, envoy.redis_proxy, envoy.tcp_proxy [2020-02-19 18:29:15.232][7][info][main] [source/server/server.cc:255] envoy.resolvers: envoy.ip [2020-02-19 18:29:15.232][7][info][main] [source/server/server.cc:255] envoy.resource_monitors: envoy.resource_monitors.fixed_heap, envoy.resource_monitors.injected_resource [2020-02-19 18:29:15.232][7][info][main] [source/server/server.cc:255] envoy.stats_sinks: envoy.dog_statsd, envoy.metrics_service, envoy.stat_sinks.hystrix, envoy.statsd [2020-02-19 18:29:15.233][7][info][main] [source/server/server.cc:255] envoy.retry_priorities: envoy.retry_priorities.previous_priorities [2020-02-19 18:29:15.233][7][info][main] [source/server/server.cc:255] envoy.clusters: envoy.cluster.eds, envoy.cluster.logical_dns, envoy.cluster.original_dst, envoy.cluster.static, envoy.cluster.strict_dns, envoy.clusters.aggregate, envoy.clusters.dynamic_forward_proxy, envoy.clusters.redis [2020-02-19 18:29:15.233][7][info][main] [source/server/server.cc:255] envoy.retry_host_predicates: envoy.retry_host_predicates.omit_canary_hosts, envoy.retry_host_predicates.previous_hosts [2020-02-19 18:29:15.233][7][info][main] [source/server/server.cc:255] envoy.filters.udp_listener: envoy.filters.udp_listener.udp_proxy [2020-02-19 18:29:15.233][7][info][main] [source/server/server.cc:255] envoy.dubbo_proxy.filters: envoy.filters.dubbo.router [2020-02-19 18:29:15.233][7][info][main] [source/server/server.cc:255] envoy.transport_sockets.upstream: envoy.transport_sockets.alts, envoy.transport_sockets.raw_buffer, envoy.transport_sockets.tap, envoy.transport_sockets.tls, raw_buffer, tls [2020-02-19 18:29:15.233][7][info][main] [source/server/server.cc:255] envoy.transport_sockets.downstream: envoy.transport_sockets.alts, envoy.transport_sockets.raw_buffer, envoy.transport_sockets.tap, envoy.transport_sockets.tls, raw_buffer, tls [2020-02-19 18:29:15.233][7][info][main] [source/server/server.cc:255] envoy.health_checkers: envoy.health_checkers.redis [2020-02-19 18:29:15.233][7][info][main] [source/server/server.cc:255] envoy.dubbo_proxy.route_matchers: default [2020-02-19 18:29:15.233][7][info][main] [source/server/server.cc:255] envoy.thrift_proxy.transports: auto, framed, header, unframed [2020-02-19 18:29:15.233][7][info][main] [source/server/server.cc:255] envoy.thrift_proxy.protocols: auto, binary, binary/non-strict, compact, twitter [2020-02-19 18:29:15.233][7][info][main] [source/server/server.cc:255] envoy.grpc_credentials: envoy.grpc_credentials.aws_iam, envoy.grpc_credentials.default, envoy.grpc_credentials.file_based_metadata [2020-02-19 18:29:15.233][7][info][main] [source/server/server.cc:255] envoy.filters.listener: envoy.listener.http_inspector, envoy.listener.original_dst, envoy.listener.original_src, envoy.listener.proxy_protocol, envoy.listener.tls_inspector [2020-02-19 18:29:15.255][7][info][main] [source/server/server.cc:336] admin address: 127.0.0.1:9901 [2020-02-19 18:29:15.261][7][info][main] [source/server/server.cc:455] runtime: layers: name: base static_layer: {} name: admin admin_layer: {} [2020-02-19 18:29:15.262][7][info][config] [source/server/configuration_impl.cc:62] loading 0 static secret(s) [2020-02-19 18:29:15.262][7][info][config] [source/server/configuration_impl.cc:68] loading 1 cluster(s) [2020-02-19 18:29:15.290][7][info][upstream] [source/common/upstream/cluster_manager_impl.cc:171] cm init: all clusters initialized [2020-02-19 18:29:15.290][7][info][config] [source/server/configuration_impl.cc:72] loading 1 listener(s) [2020-02-19 18:29:15.299][7][critical][main] [source/server/server.cc:94] error initializing configuration '/etc/front-envoy.yaml': Didn't find a registered implementation for name: 'envoy.filters.network.http_connection_manager' [2020-02-19 18:29:15.301][7][info][main] [source/server/server.cc:595] exiting Didn't find a registered implementation for name: 'envoy.filters.network.http_connection_manager'

[optional Relevant Links:]
https://www.envoyproxy.io/learn/on-your-laptop

aredocs

All 11 comments

I've found a way how to fix the issue. All *.yaml files in front-proxy should be updated:

envoy.filters.network.http_connection_manager replace with envoy.http_connection_manager

Same updated is needed at Dynamic Forward Proxy configuration page because the configuration listed will be failing due to the same issue: https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/dynamic_forward_proxy_filter#config-http-filters-dynamic-forward-proxy

@mattklein123 Please make sure suggested fixes are pushed to your upcoming release / dev branches as these are blockers for people who want to start using Envoy.

@mattklein123 Please make sure suggested fixes are pushed to your upcoming release / dev branches as these are blockers for people who want to start using Envoy.

PRs appreciated. Unfortunately the learn documents are not really owned/updated right now as they are not covered by our sphinx doc build. cc @zuercher who has been working in this area.

envoy.filters.network.http_connection_manager is the new name and envoy.http_connection_manager is deprecated. It seems you're using an older version (though perhaps not by much) of Envoy that doesn't accept the new name. If you use the examples from the version you're building they should work.

@zuercher The issue is still in the most recent envoy image, but not in envoy-dev.

Each extension has a name used in the build system. For example, envoy.filters.network.http_connection_manager.

Each extension has a separately defined name used in configuration. For many older filters, this configuration "well-known name" did not match the extension name. For example, the http connection manager's well-known-name was envoy.http_connection_manager. Newer filters were required to use the extension name as their well-known name.

In a series of PRs I have modified all the well-known names for access loggers, http filters, network filters, listener filters, stats sinks and tracers to match their extension names. The old names continue to work. Using the old names on current master builds (and eventually in the 1.14.0 release) will generate log messages and increment the deprecated feature stat. At some point the old names will be removed as they are deprecated.

However, if you use the files in the examples from current master with a version of Envoy that predates the changes I've described, you will get errors. The standardized well-known names are not used by the older releases of Envoy.

My recommendation is that you use the examples from the release of Envoy you're using. That means either:
1) Build envoy from master and use the examples from master, or
2) Use a release version of Envoy and the examples from the github tag for that release.

@zuercher that's exactly what I was doing, except that I was referring to the doc, not examples:

image

I see. That's turns out to be the reason I undertook the change -- so that we could correctly generate that line in the documentation.

This issue has been automatically marked as stale because it has not had activity in the last 30 days. It will be closed in the next 7 days unless it is tagged "help wanted" or other activity occurs. Thank you for your contributions.

.

Was this page helpful?
0 / 5 - 0 ratings