Wenn man mit einem Overlay VPN Infrastruktur bei völlig unabhängigen (Cloud-) Providern verbindet und Nomad benutzt, um diese dann zu integrieren (bzw. zu abstrahieren), dann müssen für die verschiedenen Endpunkte, an denen Dienste angeboten werden sollen, natürlich gültige SSL-Zertifikate verfügbar sein.
Mit der http-01 Challenge ist es dann nicht mehr so einfach, diese für verschiedene Endpunkte auch zu bekommen. Ziel ist es also mit der dns-01 Challenge , ein Wildcard-Zertifikat für eine (Sub-)Domain auszustellen, welches an allen Endpunkten verwendet werden kann.
Eine sehr geschickte Methode hat Michael Aldridge in Building a Nomad Cluster: Traffic Ingress beschrieben. Die kommt auch in seinem Vortrag zur Hashiconf 2025
vor, zu dem auch ein Repository auf Github gehört:
Der Trick ist, mit diesem Nomad Job
in einem Docker-Container mit Terraform zyklisch dieses Terraform Skript
auszuführen. Damit das funktioniert, wird natürlich ein Backend benötigt, in dem Terraform seinen State speichern kann. Auch das hat Michael Aldridge geschrieben:
Der "Batch-Job" letsencrypt.nomad wird "@weekly" von Nomad aufgerufen und führt den Terraform-Container mit dem Terraform Skript certs.tf aus. Der dort verwendete Terraform Provider acme unterstützt über lego eine große Auswahl an DNS-Providern:
Die damit ausgestellten Zertifikate werden mit dem Nomad Provider in Nomad Variablen gespeichert, stehen damit im gesamten Cluster zur Verfügung und können damit natürlich auch einfach in einem traefik.nomad Job verwendet werden. Genauso kann man sie dann natürlich auch für Caddy bereitstellen.
Da es im Nomad Cluster auch noch andere Dinge gibt, die man gut per Terraform konfigurieren kann (z. B. das Verwalten von Policies), ist so ein Setup sehr sinnvoll.
Der Vortrag von Michael Aldridge ist aber auch unter anderen Aspekten durchaus interessant. Ein komplettes Datacenter für seinen Arbeitgeber Backblaze innerhalb von drei Stunden fertig bereitzustellen, ist durchaus respektabel.