IoT und Edge-Computing mit Podman

Das Container-Werkzeug Podman öffnet die Cloud-native Anwendungsentwicklung mit Kubernetes auch für das IoT und Edge-Computing.

In Pocket speichern vorlesen Druckansicht 4 Kommentare lesen
IoT und Edge-Computing mit Podman

(Bild: iX)

Lesezeit: 18 Min.
Von
  • Valentin Rothberg
  • Paul Holzinger
Inhaltsverzeichnis

Die begrenzten Ressourcen im Internet of Things (IoT) und im Edge-Computing stellen andere Anforderungen an containerisierte Anwendungen als klassische Server- und Cloud-Umgebungen. Das Entwicklungsteam hinter dem Container-Werkzeug Podman, das sich seit 2018 als Alternative zu Docker anbietet, hat früh diese Trends erkannt und zahlreiche Funktionen implementiert, die den Einsatz von Containern im Edge-Computing ermöglichen.

iX-tract
  • Podman ermöglicht Cloud-native Anwendungsentwicklung mit Kubernetes für IoT und Edge-Computing auch auf ressourcenschwächeren Systemen wie dem Raspberry Pi.
  • Anders als bei Docker können Entwickler Workloads mit Werkzeugen wie podman generate systemd und Quadlet effizient in systemd integrieren und sie damit zuverlässiger und fehlertoleranter gestalten.
  • Automatische Updates und Rollbacks: Seit Version 2.0 kann Podman Container automatisch aktualisieren, vorausgesetzt, sie laufen in einer systemd-Unit und sind entsprechend konfiguriert.

Podman legt vor allem Wert auf Sicherheit und eine nahtlose Integration in moderne Linux-Systeme. Vor allem die eher traditionelle Fork-Exec-Architektur von Podman hilft beim Einsatz von Containern auf neuem Terrain. Darüber hinaus erlaubt das Tool das Ausführen von Kubernetes-Workloads, sodass Entwicklerinnen und Entwickler Cloud-native Anwendungen bequem und komfortabel auf ihrer lokalen Workstation programmieren und ausführen können, ohne Zugriff auf einen Kubernetes-Cluster haben zu müssen. Da Podman zudem ressourcenschonend arbeitet – Kubernetes-Workloads lassen sich bereits auf Raspberry-Pi-Systemen ausführen –, schlägt es die Brücke zwischen dem traditionellen Handwerk der Systemadministration und der modernen Cloud-Native-Welt.

Valentin Rothberg

Valentin Rothberg ist Senior Principal Software Engineer in Red Hats Container-Runtimes-Team und arbeitet an grundlegenden Containertechnologien sowie -werkzeugen wie Podman, Buildah und Skopeo.

Paul Holzinger

Paul Holzinger ist Software Engineer im Container-Runtimes-Team bei Red Hat und hat sich neben Podman auf Container-Networking spezialisiert.

Obwohl moderne Kubernetes-Distributionen wie Red Hat OpenShift die Installation und den Betrieb eines Kubernetes-Clusters vergleichsweise einfach gestalten, bleibt das Entwickeln Cloud-nativer Applikationen oft hürdenreich. Ein Kubernetes-Cluster besteht typischerweise aus mindestens drei Rechnern mit leistungsstarker Hardwareausstattung. Um Entwicklerinnen und Entwicklern dennoch lokales Arbeiten auf dem Desktop zu ermöglichen, bieten einige Projekte, wie zum Beispiel Minikube, abgespeckte Versionen von Kubernetes an, die auf herkömmlichen Workstations laufen.

Heise-Konferenz: CLC 2024

Im November 2024 richten iX und dpunkt.verlag die CLC-Konferenz – Continuous Lifecycle/ContainerConf – im Congress Center Rosengarten in Mannheim aus. Das Event greift seit 2014 alljährlich die wichtigsten Fragestellungen rund um Continuous Integration (CI), Continuous Delivery (CD), Dev(Sec)Ops und GitOps auf, um Antworten, Know-how und Hilfestellung für den Projektalltag zu vermitteln. Vom 12. bis 14. November setzt die CLC dieses Mal auf Themenschwerpunkte zu KI-gestütztem DevOps, Security und FinOps sowie Nachhaltigkeit.

Highlights aus dem Programm

Bis zum 23. September können sich Interessierte zum Frühbucherpreis von 1049 Euro registrieren, Workshops kosten 649 Euro (alle Preise zzgl. MwSt.).

Podman geht noch einen Schritt weiter und ermöglicht das Ausführen von Kubernetes-Workloads auch auf den für IoT und Edge-Computing typischen, ressourcenschwachen Kleinstrechnern. Somit lassen sich Cloud-native Applikationen auf dem Raspberry Pi und vergleichbaren Systemen nicht nur entwickeln, sondern auch ausführen. Ganz ohne Kubernetes geht es dennoch nicht. Insbesondere Funktionen, die auf die Rechenleistung mehrerer Maschinen angewiesen sind, wie Replikas, bleiben der Container-Plattform vorbehalten. Alle von Podman zur Verfügung gestellten Funktionen sind in einer Support-Matrix in der Podman-Dokumentation aufgelistet.

Als Beispiel einer containerisierten Applikation für Kubernetes soll nachfolgend ein Gästebuch (siehe Abbildung 1) dienen. Für das Ausführen des Gästebuchs in Listing 1 sind zwei Container erforderlich: ein Redis-Container für die Datenbank und ein zweiter Container für das Web-Frontend, das auf Port 8080 läuft.

Das Gästebuch ist unter localhost:8080 erreichbar (Abb. 1).
apiVersion: v1
kind: Pod
metadata:
  name: guestbook
spec:
  containers:
  - name: backend
image: "docker.io/redis:6"
ports:
- containerPort: 6379
  - name: frontend
image: gcr.io/google_samples/gb-frontend:v6
privileged: true
ports:
- containerPort: 80
  hostPort: 8080
env:
- name: GET_HOSTS_FROM
  value: "env"
- name: REDIS_SLAVE_SERVICE_HOST
  value: "guestbook-backend"

Listing 1: Gästebuch

Die YAML-Datei lässt sich mit podman kube play ausführen. Anschließend laufen die zwei Container in einem Pod – plus einem Infrastruktur-Container (s. Listing 2).

$ podman kube play guestbook.yaml
Pod:
4d9511ab6f087469cd841885cdba5fd3f36256774a3717f603e26e824acd12e2
Containers:
27649cdbb7627e694359fcd2dc2b6f4659063803610ffa5331373aa29d9b6420
14590a970defcfe70a19eb89660855e5df0a9c35f4c6fb39e227b8d0cb36822a

$ podman pod ps
POD ID      NAME     STATUS  CREATED      INFRA ID     # OF CONTAINERS
4d9511ab6f08  guestbook  Running 25 seconds ago  882814e1cd21  3

$ podman container ps
CONTAINER ID  IMAGE                                COMMAND           CREATED     STATUS     PORTS                                     NAMES
882814e1cd21  localhost/podman-pause:4.5.1-1685123928                    39 seconds ago  Up 37 seconds  0.0.0.0:6379->6379/tcp, 0.0.0.0:8080->80/tcp  4d9511ab6f08-infra
27649cdbb762  docker.io/library/redis:6            redis-server      38 seconds ago  Up 37 seconds  0.0.0.0:6379->6379/tcp, 0.0.0.0:8080->80/tcp  guestbook-backend
14590a970def  gcr.io/google_samples/gb-frontend:v6 apache2-foregroun...  37 seconds ago  Up 37 seconds  0.0.0.0:6379->6379/tcp, 0.0.0.0:8080->80/tcp  guestbook-frontend

Listing 2: Container für das Gästebuch

Die Container und der Pod lassen sich bei Bedarf mit dem Kommando podman kube down stoppen und entfernen.

Das Podman-Entwicklungsteam baut konsequent auf Kubernetes-YAML und verfolgt damit zwei Ziele: Zum einen soll das Entwickeln Cloud-nativer Applikationen einfacher sein, indem Podman die Brücke schlägt zwischen der lokalen Workstation der Softwareentwicklerinnen und -entwickler und dem Produktivbetrieb auf dem Kubernetes-Cluster. Zum anderen setzt Podman bevorzugt auf offene Standards – und Kubernetes-YAML hat sich in der Praxis bereits als De-facto-Standard für containerisierte Workloads etabliert. Das Podman-Entwicklungsteam verfolgt die Vision, Kubernetes-YAML nicht nur zum Ausführen Cloud-nativer Applikationen auf einem Cluster zu verwenden, sondern zum Standard in vielen weiteren Umgebungen zu machen: vom Kleinstrechner Raspberry Pi über die lokale Workstation bis zu Embedded-Systemen in der Industrie oder auch Satelliten.

Podman ist primär auf Linux ausgerichtet, seine Funktionen lassen sich aber via Podman Desktop auch unter Windows und macOS nutzen. Version 1.0 des Tools, die sich vor allem auf eine tiefere Integration mit Kubernetes fokussiert, steht seit Mai 2023 zur Verfügung.