You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Please describe your use case / problem.
I want to allow access to an external service such as a google api. I want to force access to that external service to be IPv4 or IPv6 depending on my kubernetes deployment.
This problem arises when an external service may resolve to an IPv4 or IPv6 address (e.g. ryun . Envoy does not run Happy Eyeballs, so if my ambassador pod does not have IPv6 access, and DNS resolves the service to an IPv6 address, or vice versa with IPv4, then the upstream request will fail.
This problem may not be consistent, as it depends entirely on how the DNS resolution logic invoked by Envoy behaves.
Describe the solution you'd like
I want to be able to tell a given service to use:
V4 Only
V6 Only
Auto
The default should stay as it is now -- "Auto".
Envoy supports a cluster option called dns_lookup_family. The solution should set this value according to the Mapping configuration.
I propose a new attribute of the Mapping object, called "dns". It will contain any options related to DNS resolution for the given mapping.
Underneath that attribute, we will add: lookup_family: <v4-only|v6-only|auto>
For example, if we want to access httpbin.org only with IPv4 connections:
Describe alternatives you've considered
I would have preferred a solution which used happy eyeballs, but I couldn't figure out how to make envoy do that.
Additional context
An example of a service with both V4 and V6 addresses:
I am having a similar problem, and would like to be able to either turn off v6 at the service level or globally. Disabling IPv6 on my nodes has not been enough to get Envoy to stop trying IPv6.
Please describe your use case / problem.
I want to allow access to an external service such as a google api. I want to force access to that external service to be IPv4 or IPv6 depending on my kubernetes deployment.
This problem arises when an external service may resolve to an IPv4 or IPv6 address (e.g. ryun . Envoy does not run Happy Eyeballs, so if my ambassador pod does not have IPv6 access, and DNS resolves the service to an IPv6 address, or vice versa with IPv4, then the upstream request will fail.
This problem may not be consistent, as it depends entirely on how the DNS resolution logic invoked by Envoy behaves.
Describe the solution you'd like
I want to be able to tell a given service to use:
The default should stay as it is now -- "Auto".
Envoy supports a cluster option called
dns_lookup_family
. The solution should set this value according to theMapping
configuration.I propose a new attribute of the Mapping object, called "dns". It will contain any options related to DNS resolution for the given mapping.
Underneath that attribute, we will add:
lookup_family: <v4-only|v6-only|auto>
For example, if we want to access httpbin.org only with IPv4 connections:
Describe alternatives you've considered
I would have preferred a solution which used happy eyeballs, but I couldn't figure out how to make envoy do that.
Additional context
An example of a service with both V4 and V6 addresses:
I proposed this in the ambassador-dev slack channel.
I prototyped this by hacking it into ircluster.py.
The text was updated successfully, but these errors were encountered: