On-demand upstream certificates
- Dominant language
- C++
- Stars
- 28.9k
- Forks
- 5.6k
- Avg merge
- 1d 22h
- Merged PRs (30d)
- 430
Description
Current mechanisms in Envoy don't allow dynamically picking a cert in the upstream cluster. Transport socket matching gets there half-way, but they still require updating and draining the cluster to add a cert. In a multi-tenant deployment, if we want to use a single cluster definition for all tenants, we have to be able to load a cert without having it in the cluster definition.
For this to work, we need some way to asynchronously fetch secret config to create an upstream TLS socket to the upstream host. That means that before sending "client hello", the socket should request a cert based on the transport socket options, and then proceed to the handshake. We could use the transport socket timeout to handle the failed handshakes due to the failures to fetch the secret. SDS might be one way to complete the asynchronous cert request, but certificate provider or certificate selector would also work.
Thoughts? @ggreenway @wbpcode @agrawroh
Contributor guide
Assessment
This issue has not been assessed yet.