helmfile2composeDevolving begins and began here

helmfile2compose

The distribution.

The dekube core engine converts nothing on its own. It defines contracts and orchestrates extensions. helmfile2compose is the default distribution — core + 8 bundled extensions assembled into a single helmfile2compose.py at build time. One script, zero dependencies beyond Python.

This is for maintainers who embed the conversion in their project's toolchain — a generate-compose.sh that calls helmfile2compose with specific options and extensions. If you just want to run it once and move on, use kubernetes2simple instead.

# get the latest build and run it
$ curl -fsSL helmfile2compose.dekube.io/get -o helmfile2compose.py
$ python helmfile2compose.py -e local
$ docker compose up -d
# or use the manager (handles extensions too)
$ curl -fsSL manager.dekube.io/get -o dekube-manager.py
$ python dekube-manager.py run -e local
$ docker compose up -d

Python 3.10+ and Docker required.

The Eight Monks

configmap-indexer The Librarian — populates ConfigMaps
secret-indexer The Guardian — populates Secrets
pvc-indexer The Binder — populates PVC names
service-indexer The Weaver — populates Services
simple-workload The Builder — Deployment, StatefulSet, DaemonSet, Job
haproxy-rewriter The Herald — HAProxy ingress annotations
caddy-provider The Gatekeeper — Caddy service + Caddyfile
fix-permissions The Custodian — bind mount permissions

helmfile2compose vs kubernetes2simple

helmfile2compose

You control the pipeline. You choose which extensions to load, which config to pass, which output dir to write. Lives in your repo as part of your toolchain.

kubernetes2simple

One curl, one script. It detects your project, installs everything, picks extensions for you. You don't choose — it chooses for you.

Build

The distribution is defined by distribution.json — a manifest that lists core + monks. CI fetches each extension from its repo, concatenates everything via build-distribution.py, and produces a single helmfile2compose.py as the release artifact. Nothing is committed — it's built on tag push.

Extend

Third-party extensions (converters, providers, transforms, rewriters) plug into the core's contracts via --extensions-dir. They work with any distribution. The extension registry tracks what's available.