Roadmap¶
Ideas that are too good (or too cursed) to forget but not urgent enough to implement now.
For the emulation boundary — what can cross the bridge and what can't — see Concepts.
Done¶
The Moldavian Scam got its green card. ("Moldavian Scam" — arnaque moldave — is a French Hearthstone community reference to pro player Torlk, famous for pulling off improbably lucky plays in tournaments. Not a comment on Moldova.)
What started as a half-measure — CRD converters forging fake Deployments — is now a proper converter abstraction with external loading, a package manager, and its own GitHub org. The documents are no longer falsified. They are official.
- Extension loading (
--extensions-dir) — CRD converters as external Python modules. Dispatch loop,ConvertContext/ConvertResult, dynamic loading all in place. - GitHub org —
helmfile2compose/org with separate repos for core, manager, docs, extensions. - h2c-manager — lightweight package manager for installing h2c-core + extensions from GitHub releases.
- Extension repos — keycloak, certmanager, trust-manager published as standalone repos with GitHub releases.
- Deep merge for overrides — nested dict merging instead of shallow
dict.update(). - Hostname truncation — services >63 chars get explicit
hostname:to avoid sethostname failures. - Backend SSL — Caddy TLS transport for HTTPS backends (server-ca, server-sni annotations).
Next¶
Everything becomes an extension¶
Today, ConfigMap, Secret, Service, and PVC processing is hardcoded in the core. It works, but it means you can't swap out how any of these are handled without forking the script. The goal: make every kind dispatched through the same extension interface. Want to handle ConfigMaps differently? Write a ConfigMap extension. Want to add a custom Secret resolver? Drop it in extensions/.
Same for Ingress annotations — translation is currently hardcoded to haproxy.org/* and nginx.ingress.kubernetes.io/*. An IngressRewriter extension dispatched by ingressClassName or annotation prefix would let you add Traefik, Contour, or whatever your cluster uses without touching the core.
More extensions¶
New CRD operators as needed. The extension system exists — writing a new one is straightforward (see Writing operators).
Out of scope¶
CronJobs, resource limits, HPA, PDB, probes-to-healthcheck. See Limitations for the full list and rationale.
Thus spoke the disciple unto the void: "Yog Sa'rath, my hour has come." And the void answered not — for even it knew that some invocations are answered not with knowledge, but with consequences.
— De Vermis Mysteriis, On the Hubris of the Disciple (don't quote me on this)