feat: ✨ add an experimental Traefik chart (simplification proposal) - #1899
feat: ✨ add an experimental Traefik chart (simplification proposal)#1899darkweaver87 wants to merge 8 commits into
Conversation
d499369 to
a10a4c3
Compare
|
😱 39,000 lines?! Don't panic — grab a towel 🏖️ Yes, it's big — and that's expected: this is a full rewrite / change of paradigm, not an incremental tweak. But before you slam that
TL;DR: ~80% (≈31,400 lines) is robot-generated schema 🤖 + verbatim CRD copies 📋 that nobody reviews by hand. The chart you actually review is ~1,640 lines of templates ✨ — roughly 4%. That's smaller than the legacy Deep breath. You've got this. 💪 |
| run: | ||
| working-directory: experimental | ||
| steps: | ||
| - uses: actions/checkout@v4 |
There was a problem hiding this comment.
GitHub Action actions/checkout persist Git credentials in workflow - medium severity
actions/checkout v2 and above persist the default GITHUB_TOKEN in the repository's local git config when persist-credentials is not set to false, during the workflow run. Subsequent workflow steps or third-party actions can read this token from git configuration, increasing the risk of credential theft or misuse within the pipeline. In order to limit the attack surface when external actions are compromised, ensure persist-credentials is set to false.
Show fix
Remediation: Set persist-credentials: false on actions/checkout steps that do not need to push commits back to the repository. Only keep persist-credentials: true when the workflow explicitly performs authenticated git push operations.
Reply @AikidoSec ignore: [REASON] to ignore this issue.
More info
What
Adds a new, fully isolated
experimental/chart — a from-scratch redesign of the Traefik Helm chart, offered as a simplification proposal. It is unreleased, unsupported, fenced behind a loud "do NOT use in production" banner, and ships its own CI workflow. Nothing in the stabletraefik/chart changes.Why
The stable chart's biggest maintenance cost is mirroring every Traefik and Kubernetes field by hand — and a large share of that is community PRs adding a single PodSpec/Service field that only the author uses. Exposing the real PodSpec and Traefik config verbatim removes that whole class of change:
values.yamldrops from ~1570 to ~254 lines, and neither a new Traefik option nor a niche Kubernetes field needs a chart change anymore.Issues this explores
deployment:configuration #1789 (improvedeployment:) — the workload is a real PodSpec underdeployment.spec.template.spec.*; no split or bespoke fields to learn.ports:configuration #1476 (improveports:) — entryPoints are verbatimtraefik.entryPoints, and the Service surface is a name-keyedservice.*map, decoupled from them.deployment/daemonset) extends naturally to astatefulsetkey; not implemented yet, but the architecture makes it a small addition.Design — a deliberate departure
This intentionally reverses the current scope boundary ("avoid values that expose static/dynamic Traefik configuration verbatim"). That trade-off is the proposal, so it's the thing to debate. It also looks quite different from what most Helm charts do — but even if it doesn't land as-is, it may inspire ideas for the stable chart or others.
traefik:block — Traefik static config passes through unchanged; no curated key per field.deployment.spec.template.spec.*(container merged by name), not bespoke values.nulldisables — noenabled:flags; this deliberately mirrors Traefik's own config, where a feature is on by the presence of its key (api: {},metrics.prometheus: {}). Name-keyed maps for Services/Secrets/IngressRoutes.values.schema.jsonwires the chart surface to the upstream Kubernetes OpenAPI (editor autocomplete + install-time rejection). Thetraefik:block stays open for now; wiring an official Traefik static-config schema there is a planned follow-up, ideally with the Traefik Proxy/Hub teams, once a version-pinned public schema exists.Scope of this PR
Experimental chart +
EXAMPLES.mdonly — no migration tooling and no release.Safety / isolation
experimental/with a dedicated CI workflow: lint, 213 unit tests, schema-regeneration no-op check + transform unit tests, render of every example, and a CRD drift check.crds-synccheck.Feedback wanted
This only proves itself in real use — please install it and push your actual config through it. The call for feedback and the full design rationale live in the chart's
README.mdso they persist beyond this PR.