How to run kzero (self-hosted)

September 2, 2026 · View on GitHub

← Back to the repository README.

Pick a mode below. Install the CLI from kzero releases (v1.1.1 recommended). This repo holds operator docs and examples only.

DirectoryWhen to use
standalone/Release binary on a bastion — cron, systemd timer, one-shot down/up/reset (no Docker)
docker/docker run with ghcr.io/hrodrig/kzero — analyze / version; not a full live runtime without host kubectl / helm
examples/Minimal kzero.sample.yml, full-reset-example/, reference hooks, infra-probe Redis assets
in-cluster/Job + ServiceAccount + RBAC + ConfigMap — run kzero inside the cluster (native scale, no kubeconfig mount)
docs/CI/cron, KZERO_RUN_MODE, YES-gated wrappers, safety checklist · full-reset validation
../testing/kind/Disposable kind cluster + kzero live smoke (make test-kind-e2e)
../testing/kind/in-cluster/kind + kzero Jobs in-cluster (make test-kind-in-cluster)

Upstream application: hrodrig/kzero — Go CLI, SPEC, tests, make release-check, ghcr.io/hrodrig/kzero images, brew install hrodrig/kzero/kzero.

Not shipped here: Docker Compose, a Helm chart that installs kzero as a long-running in-cluster controller, or bundled kubectl / helm inside the runner image. In-cluster Jobs (reference manifests under run/in-cluster/) use the distroless GHCR image with run.execution: native only; release.* and shell hooks still need host tooling or future Helm SDK / exec steps in kzero.

Use a published image tag that matches your desired kzero release (in-cluster examples pin v1.1.1).


↑ Back to the repository README