Production with Podman

In the GNU/Linux world, the way to manage the GNU/Linux system and services running on it is using systemd. For example, the cron job scheduler in your machine is probably configured using systemd.

sudo systemctl status cron

should return something like

● cron.service - Regular background program processing daemon
     Loaded: loaded (/usr/lib/systemd/system/cron.service; enabled; preset: enabled)
     Active: active (running) since Wed 2025-03-19 16:19:26 CET; 4h 57min ago
 Invocation: 71415737d80c4dccbcb1313dca53b9f6
       Docs: man:cron(8)
   Main PID: 498 (cron)
      Tasks: 1 (limit: 9358)
     Memory: 496K
     CGroup: /system.slice/cron.service
             └─498 /usr/sbin/cron -f -P

Podman offers the option to use systemd to manage the pods using a superset of systemd’s unit files called Quadlet files. Quadlet files can be used for

Because we have been using a Kubernetes manifest file (play.yml) for development, we can re-use it for production.

Workflow

Example

[Unit]
Description=A kubernetes yaml based service
Before=local-fs.target

[Kube]
Yaml=/opt/k8s/deployment.yml

[Install]
# Start by default on boot
WantedBy=multi-user.target default.target