podman kube play: Run Kubernetes YAML Locally
podman kube play reads a Kubernetes YAML and creates the equivalent Podman pods and containers locally.
podman kube play (formerly podman play kube) lets a CI job run a Kubernetes manifest without a cluster, handy for testing the same YAML you deploy.
What it does
podman kube play parses a Kubernetes Pod, Deployment, or related manifest and creates matching Podman pods and containers. podman kube down tears them back down. It is the bridge between Podman and Kubernetes-style YAML.
Common usage
podman kube play app.yaml
podman kube play --build app.yaml
podman kube down app.yaml
# generate a manifest from a running pod
podman kube generate mypod > app.yamlOptions
| Command/Flag | What it does |
|---|---|
| kube play <file> | Create pods/containers from the YAML |
| kube down <file> | Remove what the YAML created |
| --build | Build images referenced in the manifest |
| --replace | Replace existing pods with the same name |
| --network <name> | Attach the pod to a named network |
In CI
Use podman kube play to smoke-test a deployment manifest in a pipeline before it reaches a cluster. Note Podman supports a subset of Kubernetes fields, so a manifest that runs here is not a guarantee it is fully valid for a real cluster.
Common errors in CI
"Error: short-name ... no resolution" appears when container images in the YAML are unqualified; fully qualify them. "Error: unsupported Kubernetes kind" means the manifest uses a kind Podman does not implement. "pod ... already exists" on a re-run is cleared with --replace or a prior podman kube down. Image pulls still need podman login for private registries.