Every project that connects to a GRPC endpoint has a poorly specified, 
inconsistent half baked way of specifying the TLS (or not TLS) parameters 
of a GRPC client connection:

   - Apache Arrow: https://github.com/apache/arrow/issues/35080
   - Jaeger https://github.com/jaegertracing/jaeger/issues/3351
   - Thanos: https://github.com/thanos-io/thanos/issues/977
   - Keda: https://github.com/kedacore/keda/issues/3565
   - Confidential 
   Containers: 
https://github.com/confidential-containers/attestation-agent/issues/36
   - Pravega https://github.com/pravega/pravega/issues/3895

These were just going through the first 3 pages of issues regarding "grpc 
tls uri" https://github.com/search?q=uri+tls+grpc . I'm sure you'll find 
with every GRPC based product meant for developer usage, there is an issue 
related to expressing how to connect to a GRPC server. Maybe all projects, 
thousands, with any meaningful adoption are affected by the lack of a 
canonical URI format.

Since I've been personally blocked by the Thanos and Keda bugs, I'm hoping 
that the GRPC team can adopt and advocate for a single canonical URI format 
that supports some of the following scenarios:

   -  should we connect with TLS or not?
   -  what certificate should we use to do that? it sometimes has to 
   rotate, and it is sometimes not trusted by the executing process's root 
   store.
   -  when this address is a dns+srv address or similar load balancing 
   expression, how should that be dealt with?

What can be done? First accept it was a mistake to not author a canonical 
URI format that deals with TLS well. This revisits 
https://github.com/grpc/grpc/issues/2314 https://github.com/grpc/grpc/pull/2758 
.

In my experience in issues like these, where an architectural or design 
mistake was made, there will be a lot of inertia. See this far smaller bug 
with eksctl 
<https://github.com/weaveworks/eksctl/issues/5256#issuecomment-1130313683> as 
an example - it still took about 3 months to change two validation lines.

That said, nobody could have anticipated that Lets Encrypt would be so 
widely adopted.

I'm posting this in the community here to show there will be a consensus 
that the lack of a canonical URI format expressing TLS settings is an issue 
everywhere, a hair on fire issue, and it's really making the GRPC ecosystem 
crummy in a way that ordinary REST users basically never deal with.

Databases have complex URI formats. This is maybe just how it goes. Maybe 
this is also a chance to investigate other GRPC connectivity options being 
put into the URI, like enabling keepalive, that are more or less 
application agnostic.

-- 
You received this message because you are subscribed to the Google Groups 
"grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to grpc-io+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/grpc-io/3b1a3d3c-22f8-483a-a9e2-59f2ad8e597en%40googlegroups.com.

Reply via email to