Logo von Thomas Waldecker Software Engineering
Veröffentlichungsdatum

Containerhosting ohne Public Cloud mit Podman Quadlet

Autoren
  • avatar
    Name
    Thomas Waldecker

Containerbasierte Deployments sind heute die Standardpraxis für die Entwicklung moderner Anwendungen. Doch wer möchte schon auf Public Cloud Dienste wie AWS, Azure oder GCP angewiesen sein? Für kleine (Web)-Applikationen, die keine hohe Verfügbarkeit benötigen und auf einem einzigen Host laufen, gibt es mehrere Lösungen, welche ich in diesem Artikel vergleiche.

Anforderungen

  • Eine Umsetzung von TLS auch im lokalen Netzwerk ohne großen Mehraufwand.
  • Die Applikation soll einfach zu deployen sein über einen Continuous Delivery Job.
  • Der Verwaltungsaufwand soll niedrig sein und die Komplexität gering.
  • Es soll einfach auf Hetzner Cloud Server oder im Heimnetzwerk, z.B. auf MiniPCs gehostet werden können.

Docker / docker-compose

Das Logo von Docker ist ein Wal | Foto von Seiji Seiji https://unsplash.com/de/fotos/schwarz-weiss-wal-unter-wasser-ur4pyEnPdA0

Man kann auf einem Linux-Server einfach Docker und docker-compose installieren und die container mit docker run oder mit docker-compose up starten.

Für das automatische Update braucht man aber zusätzliche Komponenten wie Portainer1.

Außerdem muss man das Host Betriebssystem im Auge behalten und aktuell halten.

Die Einrichtung ist jedoch sehr einfach, vor allem weil man oft schon für die Entwicklung ein Dockerfile oder docker-compose.yaml hat.

Kubernetes

Das Logo von Kubernetes ist ein Ruder | Foto von Joseph Barrientos https://unsplash.com/de/fotos/steuerstand-des-schiffes-eUMEWE-7Ewg

Man kann mit z.B. k3s2 sehr einfach einen voll funktionsfähigen Kubernetes Single Node Cluster erstellen. Die erstellung der entsprechenden yaml-Files erfordert etwas Einarbeitung. Dafür ist das Wissen Herstellerunabhängig und kann auf allen Cloud-Plattformen angewandt werden.

Wenn man einen Ingress-Controller installiert und konfiguriert erhält man über den Cert-Manager auch im lokalen Netzwerk TLS Zertifikate von Let's Encrypt.

Das Betriebssystem auf dem k3s läuft muss weiterhin aktuell gehalten werden.

Podman Quadlet

Das Logo von Podman ist eine Robbe | Foto von Keith Luke https://unsplash.com/de/fotos/kegelrobbe-im-wasser-am-tag-dKe9GgzS8Ek

Mit Podman Quadlets auf Fedora CoreOS3 und Caddyserver habe ich eine sehr simple Alternative zu den eher gängigeren Methoden erarbeitet.

Das Fedora CoreOS ist ein minimales Betriebssystem, welches für die Ausführung von Container optimiert wurde. Das Betriebssystem selbst hält sich selbst automatisch aktuell. Quadlet nennt sich die Integration der Podman Containerruntime ins Linux Init System systemd.

Der Caddy4 server dient als Reverse-Proxy auf dem selben Host und Terminiert die TLS-Verbindungen. Über das Podman Netzwerk werden die Anfragen dann an die Container weitergegeben.

Das Podman Auto Update5 hält die Container automatisch aktuell.

Vergleich

Docker & docker-composeKubernetesPodman Quadlet
Einrichtungeinfachaufwändigmittel
Komplexitätniedrighochniedrig
Auto-Updatemit Portainermit ArgoCDmit Podman Auto Update

Fazit

Podman Quadlet bietet eine minimalistische, cloud-freie Plattform für Container Deployments, die sich durch geringe Komplexität, automatisches Updating und native TLS-Unterstützung auszeichnet. Ideal für kleine Applikationen auf Heim- oder Hetzner-Servern.

Durch die Verwendung von Fedora CoreOS als Basis für alle hier vorgestellten Methoden ergibt sich ein deutlich niedrigerer Pflegeaufwand für das Betriebssystem selbst als z.B. Ubuntu.

Die Implementierung der Lösung mit Podman Quadlet wird in einem späteren Post genauer beschrieben.

Sie haben eine Projektidee oder benötigen Beratung?

Egal, ob es um die Entwicklung einer neuen Anwendung, die Modernisierung bestehender Systeme oder den Einsatz von KI geht – ich helfe Ihnen gerne weiter.
Unverbindliches Erstgespräch vereinbaren

Footnotes

  1. https://www.portainer.io/

  2. https://k3s.io/

  3. https://fedoraproject.org/coreos/

  4. https://caddyserver.com/

  5. https://docs.podman.io/en/latest/markdown/podman-auto-update.1.html