There can't be routes with the same hostname in different namespaces. That leaves two options for serving the well-known routes (webserver).
- Run the letsencrypt management pod with integrated webserver in the same namespace as the routes to use (as implemented now), or
- distribute the acme-challenges somehow, so that an external webserver pod can access them.
Integrated Webserver
It has the following big downside: It can't work with multiple namespaces. You'll have to deploy one instance, one service account, one acme credential and set the service account's permissions for every namespace.
It does only use one pod with three containers per namespace though and is conceptional easy.
Separated Webserver
I can think of the following options.
- local secrets and respawning one webserver container per namespace (when attached secrets get mounted automatically, respawning might not be necessary. There is a bug about that in kubernetes somewhere). The management pod will then have to attach the secret volume to the webserver pod, wait for the namespace's pod to be available, and remove the volume again. The problem is that there will be one container per namespace pointlessly running constantly. Maybe that can be mitigated with a timeout.
- local secret and spawning one webserver per acme-challenge. This will result in many one-shot pods. Maybe if letsencrypt's
cron does use one per namespace, that is feasible.
Both will slow down certificate deployments considerable (scheduling, pulling, starting the webserver pod).
I tend to favor a separated webserver and on-demand spawning. Opinions welcome!
There can't be routes with the same hostname in different namespaces. That leaves two options for serving the well-known routes (
webserver).Integrated Webserver
It has the following big downside: It can't work with multiple namespaces. You'll have to deploy one instance, one service account, one acme credential and set the service account's permissions for every namespace.
It does only use one pod with three containers per namespace though and is conceptional easy.
Separated Webserver
I can think of the following options.
crondoes use one per namespace, that is feasible.Both will slow down certificate deployments considerable (scheduling, pulling, starting the webserver pod).
I tend to favor a separated webserver and on-demand spawning. Opinions welcome!