xds/clusterresolver: set ServerName to an address for LogicalDNS #5793
3/3 Fail(s): LABEL, DESCRIPTION, MILESTONE
Status: FAIL
Here are some stats of the run:
3 validations were ran.
0 PASSED
3 FAILED
Details
❌ Validator: LABEL
- ❌ label does not include "^Type:"
Input :
Settings :{"must_include":{"regex":"^Type:"}}
❌ Validator: DESCRIPTION
- ❌ description does not include "^RELEASE NOTES:\s([Nn][Oo][Nn][Ee]|[Nn]/[Aa]|\n(*|-)\s.+)$"**
Input : ###⚠️ The branch of this PR is based on #5748
because this change needs #5748 for setting :authority
header.
What
- xds/clusterresolver: Set ServerName to an address for LogicalDNS
Motivation
With the current xds/clusterresolver
implementation, when we use LogicalDNS
, the :authority
header of a request gets to the xds target name (e.g. if we use xds:///xds-target
as a URI, the :authority
header will be xds-target
).
This causes a problem if we use some proxies that use :authority
header meaningfully.
One such proxy is Google Cloud Run, a managed container platform. Google Cloud Run creates a dedicated domain for each deployment like my-service-xxx.run.app
. Even though we use this domain for a request URI, Google Cloud Run does not route the traffic as expected if the :authority
header of the request does not match this dedicated domain. Therefore, when we distribute the target URI for Google Cloud Run deployment via xds (CDS) with LogicalDNS to a gRPC client, the gRPC client can not reach out to the desired deployment.
I know my use case (not for Service Mesh) might be a edge case for the gRPC xds feature, but I'd like it use proper :authority
header as I'm using Google Cloud Run.
Settings : {"must_include":{"regex":"^RELEASE NOTES:\\s*([Nn][Oo][Nn][Ee]|[Nn]/[Aa]|\\n(\\*|-)\\s*.+)$","regex_flag":"m"}}
❌ Validator: MILESTONE
- ❌ milestone does not include "Release$"
Input :
Settings :{"must_include":{"regex":"Release$"}}