-
Notifications
You must be signed in to change notification settings - Fork 0
Home
A small REST wrapper around Podman's libpod REST API that lets a CMS (or any orchestrator) deploy and manage pods described by YAML templates across a fleet of Podman hosts. Opinionated, single-binary, and deliberately narrow.
Templates and desired-state live in an always-on SQLite store (-state-db,
default /var/lib/podman-api/state.db); templates are managed over the
/templates API, not on disk. See Operating and Deploying.
This wiki is the operator's handbook. For the API surface itself, see the
OpenAPI spec
(also served by the binary at GET /openapi.yaml).
-
Building — why the build needs tags, the
maketargets, static and cross builds. - Provisioning a Podman Host — turn a fresh Linux box into a target podman-api can drive over SSH.
- Deploying — install the daemon itself: user, config tree, systemd, TLS.
- Operating — key rotation, audit-log shipping, metrics, health checks.
- Backing up and Restoring — on-demand per-instance volume backups and one-click in-place restore.
- Troubleshooting — the failures you are most likely to hit, and the fix for each.
┌────────────┐ HTTPS ┌────────────────┐ SSH-tunneled ┌────────────┐
│ CMS / curl │ ───────▶ │ podman-api │ ─────────────▶ │ podman.sock│
│ │ │ (this binary) │ libpod REST │ on hostN │
└────────────┘ └────────────────┘ └────────────┘
-
One daemon drives many hosts. Each host is a
hosts/<id>.yamlfile. - podman-api reaches each host's rootless
podman.sockover an SSH tunnel (or a local unix socket for dev). - The deploy unit is a single Pod per instance, rendered from a template and played with
podman play kube. - Auth is Argon2id bearer tokens with scopes; TLS is terminated by a reverse proxy.
Commands assume the repo's Makefile and the build tags it carries (see
Building). Host-side commands are shown for a rootless user named podman
or almalinux; substitute your own. Anything destructive or outward-facing is
called out inline.