docker – I’m trying to setup Envoy as a front proxy but I’m running into “no healthy upstream”

I’m trying to figure out how to setup Envoy as a front reverse proxy. I have a very contrived frontend (nextjs that just does a fetch to the backend) and a mocked api in nodejs that has two stubbed endpoints. The source is on github: https://github.com/chanced/learning-envoy.

I’m using docker-compose with the primary entry being docker-compose-dev.yml. It sets up 1 frontend container, two api containers, and an envoy container. Envoy’s config is dev.envoy.yml which gets copied over as a volume.

If you would like to see it run locally, I have a setup command in the Makefile to prep the containers and a dev command which basically runs docker-compose up.

I don’t see any errors from Envoy and the services are reachable directly via their ports (3000,7000, 7001) but Envoy returns

no healthy upstream

… once you get past the invalid cert warning, of course.

What am I doing wrong? Thanks in advance!

λ ~/Projects/learning-envoy/ master* make dev
docker-compose -f docker-compose-dev.yml down && docker-compose -f docker-compose-dev.yml up --remove-orphans
Removing api1     ... done
Removing api2     ... done
Removing envoy    ... done
Removing frontend ... done
Removing network learning-envoy_learning_envoy_mesh
Removing network learning-envoy_default
Creating network "learning-envoy_learning_envoy_mesh" with the default driver
Creating network "learning-envoy_default" with the default driver
Creating api2     ... done
Creating api1     ... done
Creating frontend ... done
Creating envoy    ... done
Attaching to frontend, envoy, api1, api2
envoy       | (2020-07-31 02:57:45.358)(1)(info)(main) (source/server/server.cc:256) initializing epoch 0 (hot restart version=11.104)
envoy       | (2020-07-31 02:57:45.358)(1)(info)(main) (source/server/server.cc:258) statically linked extensions:
envoy       | (2020-07-31 02:57:45.358)(1)(info)(main) (source/server/server.cc:260)   envoy.filters.listener: envoy.filters.listener.http_inspector, envoy.filters.listener.original_dst, envoy.filters.listener.original_src, envoy.filters.listener.proxy_protocol, envoy.filters.listener.tls_inspector, envoy.listener.http_inspector, envoy.listener.original_dst, envoy.listener.original_src, envoy.listener.proxy_protocol, envoy.listener.tls_inspector
envoy       | (2020-07-31 02:57:45.358)(1)(info)(main) (source/server/server.cc:260)   envoy.transport_sockets.downstream: envoy.transport_sockets.alts, envoy.transport_sockets.raw_buffer, envoy.transport_sockets.tap, envoy.transport_sockets.tls, raw_buffer, tls
envoy       | (2020-07-31 02:57:45.358)(1)(info)(main) (source/server/server.cc:260)   envoy.filters.network: envoy.client_ssl_auth, envoy.echo, envoy.ext_authz, envoy.filters.network.client_ssl_auth, envoy.filters.network.direct_response, envoy.filters.network.dubbo_proxy, envoy.filters.network.echo, envoy.filters.network.ext_authz, envoy.filters.network.http_connection_manager, envoy.filters.network.kafka_broker, envoy.filters.network.local_ratelimit, envoy.filters.network.mongo_proxy, envoy.filters.network.mysql_proxy, envoy.filters.network.ratelimit, envoy.filters.network.rbac, envoy.filters.network.redis_proxy, envoy.filters.network.sni_cluster, envoy.filters.network.tcp_proxy, 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
envoy       | (2020-07-31 02:57:45.358)(1)(info)(main) (source/server/server.cc:260)   envoy.stats_sinks: envoy.dog_statsd, envoy.metrics_service, envoy.stat_sinks.dog_statsd, envoy.stat_sinks.hystrix, envoy.stat_sinks.metrics_service, envoy.stat_sinks.statsd, envoy.statsd
envoy       | (2020-07-31 02:57:45.358)(1)(info)(main) (source/server/server.cc:260)   envoy.grpc_credentials: envoy.grpc_credentials.aws_iam, envoy.grpc_credentials.default, envoy.grpc_credentials.file_based_metadata
envoy       | (2020-07-31 02:57:45.358)(1)(info)(main) (source/server/server.cc:260)   envoy.dubbo_proxy.protocols: dubbo
envoy       | (2020-07-31 02:57:45.358)(1)(info)(main) (source/server/server.cc:260)   envoy.thrift_proxy.filters: envoy.filters.thrift.rate_limit, envoy.filters.thrift.router
envoy       | (2020-07-31 02:57:45.358)(1)(info)(main) (source/server/server.cc:260)   envoy.transport_sockets.upstream: envoy.transport_sockets.alts, envoy.transport_sockets.raw_buffer, envoy.transport_sockets.tap, envoy.transport_sockets.tls, raw_buffer, tls
envoy       | (2020-07-31 02:57:45.358)(1)(info)(main) (source/server/server.cc:260)   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
envoy       | (2020-07-31 02:57:45.358)(1)(info)(main) (source/server/server.cc:260)   envoy.dubbo_proxy.route_matchers: default
envoy       | (2020-07-31 02:57:45.358)(1)(info)(main) (source/server/server.cc:260)   envoy.access_loggers: envoy.access_loggers.file, envoy.access_loggers.http_grpc, envoy.access_loggers.tcp_grpc, envoy.file_access_log, envoy.http_grpc_access_log, envoy.tcp_grpc_access_log
envoy       | (2020-07-31 02:57:45.358)(1)(info)(main) (source/server/server.cc:260)   envoy.filters.udp_listener: envoy.filters.udp.dns_filter, envoy.filters.udp_listener.udp_proxy
envoy       | (2020-07-31 02:57:45.358)(1)(info)(main) (source/server/server.cc:260)   envoy.retry_priorities: envoy.retry_priorities.previous_priorities
envoy       | (2020-07-31 02:57:45.358)(1)(info)(main) (source/server/server.cc:260)   envoy.dubbo_proxy.serializers: dubbo.hessian2
envoy       | (2020-07-31 02:57:45.358)(1)(info)(main) (source/server/server.cc:260)   envoy.dubbo_proxy.filters: envoy.filters.dubbo.router
envoy       | (2020-07-31 02:57:45.358)(1)(info)(main) (source/server/server.cc:260)   envoy.health_checkers: envoy.health_checkers.redis
envoy       | (2020-07-31 02:57:45.358)(1)(info)(main) (source/server/server.cc:260)   envoy.thrift_proxy.protocols: auto, binary, binary/non-strict, compact, twitter
envoy       | (2020-07-31 02:57:45.358)(1)(info)(main) (source/server/server.cc:260)   envoy.thrift_proxy.transports: auto, framed, header, unframed
envoy       | (2020-07-31 02:57:45.358)(1)(info)(main) (source/server/server.cc:260)   envoy.resource_monitors: envoy.resource_monitors.fixed_heap, envoy.resource_monitors.injected_resource
envoy       | (2020-07-31 02:57:45.358)(1)(info)(main) (source/server/server.cc:260)   envoy.tracers: envoy.dynamic.ot, envoy.lightstep, envoy.tracers.datadog, envoy.tracers.dynamic_ot, envoy.tracers.lightstep, envoy.tracers.opencensus, envoy.tracers.xray, envoy.tracers.zipkin, envoy.zipkin
envoy       | (2020-07-31 02:57:45.358)(1)(info)(main) (source/server/server.cc:260)   envoy.filters.http: envoy.buffer, envoy.cors, envoy.csrf, envoy.ext_authz, envoy.fault, envoy.filters.http.adaptive_concurrency, envoy.filters.http.aws_lambda, envoy.filters.http.aws_request_signing, envoy.filters.http.buffer, envoy.filters.http.cache, envoy.filters.http.cors, envoy.filters.http.csrf, envoy.filters.http.dynamic_forward_proxy, envoy.filters.http.dynamo, envoy.filters.http.ext_authz, envoy.filters.http.fault, 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.gzip, envoy.filters.http.header_to_metadata, envoy.filters.http.health_check, envoy.filters.http.ip_tagging, envoy.filters.http.jwt_authn, envoy.filters.http.lua, 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.squash, 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
envoy       | (2020-07-31 02:57:45.358)(1)(info)(main) (source/server/server.cc:260)   envoy.retry_host_predicates: envoy.retry_host_predicates.omit_canary_hosts, envoy.retry_host_predicates.omit_host_metadata, envoy.retry_host_predicates.previous_hosts
envoy       | (2020-07-31 02:57:45.358)(1)(info)(main) (source/server/server.cc:260)   http_cache_factory: envoy.extensions.http.cache.simple
envoy       | (2020-07-31 02:57:45.358)(1)(info)(main) (source/server/server.cc:260)   envoy.resolvers: envoy.ip
envoy       | (2020-07-31 02:57:45.358)(1)(info)(main) (source/server/server.cc:260)   envoy.udp_listeners: raw_udp_listener
envoy       | (2020-07-31 02:57:45.391)(1)(warning)(main) (source/server/server.cc:347) No admin address given, so no admin HTTP server started.
envoy       | (2020-07-31 02:57:45.394)(1)(info)(main) (source/server/server.cc:469) runtime: layers:
envoy       |   - name: static_layer__0
envoy       |     static_layer:
envoy       |       envoy:
envoy       |         resource_limits:
envoy       |           listener:
envoy       |             learning_envoy_listener:
envoy       |               connection_limit: 10000
envoy       | (2020-07-31 02:57:45.394)(1)(info)(config) (source/server/configuration_impl.cc:103) loading tracing configuration
envoy       | (2020-07-31 02:57:45.394)(1)(info)(config) (source/server/configuration_impl.cc:69) loading 0 static secret(s)
envoy       | (2020-07-31 02:57:45.394)(1)(info)(config) (source/server/configuration_impl.cc:75) loading 2 cluster(s)
envoy       | (2020-07-31 02:57:45.397)(1)(info)(config) (source/server/configuration_impl.cc:79) loading 1 listener(s)
envoy       | (2020-07-31 02:57:45.431)(1)(info)(config) (source/server/configuration_impl.cc:129) loading stats sink configuration
envoy       | (2020-07-31 02:57:45.432)(1)(warning)(main) (source/server/server.cc:451) there is no configured limit to the number of allowed active connections. Set a limit via the runtime key overload.global_downstream_max_connections
envoy       | (2020-07-31 02:57:45.432)(1)(info)(main) (source/server/server.cc:564) starting main dispatch loop
envoy       | (2020-07-31 02:57:45.437)(1)(info)(upstream) (source/common/upstream/cluster_manager_impl.cc:171) cm init: all clusters initialized
envoy       | (2020-07-31 02:57:45.437)(1)(info)(main) (source/server/server.cc:543) all clusters initialized. initializing init manager
envoy       | (2020-07-31 02:57:45.437)(1)(info)(config) (source/server/listener_manager_impl.cc:725) all dependencies initialized. starting workers

Selling – Tips for a healthy lifestyle

Why are you selling this site?
I have no time for that.

How is it monetized?
Different ad networks. Could also be monetized with AdSence.

Does this website contain social media accounts?
No
SEMrush

How much time does this site take to run?
One hour / week.

What are the challenges of running this website?
The website runs on WordPress and has 75 posts. It is well indexed by search engines and requires 1-2 new items a week to grow.

Healthy recipes website for sale, already make money

Website for sale: https://healthyrecipeshq.com

food recipes with great potential in very profitable niches, earn money with adsense, amazon clickbank etc

What is included in the sale?

Domain and all files + database

What is required to maintain business operations?

Pay for domain and hosting

Why are you selling the business?

need money for another project

How does the business generate revenue?

advertising (amazon, adsense etc)

Are there any business costs? If so, what are they?

Domain & hosting only

What marketing initiatives have been used for this business?

Share on social media

How can the future owner improve the business?
SEMrush

Create backlinks

Healthy recipes website for sale, great potential to attract female visitors

Website for sale: https://healthyrecipeshq.com

food recipes with great potential in very profitable niches, earn money with adsense, amazon clickbank etc

What is included in the sale?

Domain and all files + database

What is required to maintain business operations?

Pay for domain and hosting
SEMrush

Why are you selling the business?

need money for another project

How does the business generate revenue?

advertising (amazon, adsense etc)

Are there any business costs? If so, what are they?

Domain & hosting only

What marketing initiatives have been used for this business?

Share on social media

How can the future owner improve the business?

Create backlinks

[APP][FREE] Be healthy: health and nutrition tips daily

Are you looking for help with weight loss? Are you tired of following other diets without getting results? Would you like to receive real and authentic information, instructions and tips for losing weight or a healthy life? If your answer is yes, this app has everything you need. From a myriad of new weight loss and health categories to a wealth of useful information to help you address various health challenges, this app provides a complete set of useful sections for all users.

Take a break from stressful life and try Be Healthy: Health and Eating Tips daily.

* Start a healthy diet.

Read our tips and articles to get the help you need for a healthy journey. Our app offers several category tags, including:
• Tips for losing weight
• How to lose weight
• Tips to lose belly fat
• Keto diet plan and tips
• nutritional advice and diet recipes
• Vegetarian or vegan diet recipes
• General health tips

You can follow your favorite categories. The articles and information are updated daily and you can comment on or share your favorite tips. You can also save useful information by adding it to your bookmark collection.

How to Use Be Healthy: Health and Nutrition Tips Daily:
• Download and start the diet apps
• Browse the categories for healthy eating.
• Find weight loss advice and a diet plan that suits your needs
• Comment and highlight important diet plans and tips
• Share important things with friends and family members
• Browse, learn and live a healthy life!

Features of Be Healthy: Health and Nutrition Tips Daily:
• Simple and easy diet apps UI / UX
• Get expert weight loss instructions.
• Follow specific health and diet categories, read, comment, and share news
• Tons of new dietary recipes tailored to meet health goals and nutritional preferences
• Healthy health and fitness app with countless useful features and information

Download app now:

https://play.google.com/store/apps/d…alth.diet.tips