This repository contains Helm charts for the Podplane "Containers Layer". The charts are reconciled in-cluster by Flux CD; the only custom code is a single bootstrap script that deploys enough of the stack for Flux to take over.
- Bootstrap a cluster:
./bootstrap/apply.sh— installs cilium, fluxcd and the platform-components chart in dependency order against the currentkubectlcontext. - Bootstrap a local Podplane VM from local sources: create a bare local VM
from the Podplane CLI repo with
podplane local start --components=none, then runmake git-syncand one ofmake minimal,make recommended, ormake allfrom this repo. Usemake git-watchto re-sync automatically on file changes. - Lint all charts:
make lint. - Template all charts (no install):
make render. - Validate vendored CRDs:
make check-crds. - Update vendored CRDs:
make update-crds(ormake update-crds CHART=<name>).
Dependencies: helm, kubectl; watchexec is optional for make git-watch.
Note: agents must NEVER run ./bootstrap/apply.sh, make minimal, make recommended,
or make all against a real cluster without explicit user approval.
- Bootstrap:
bootstrap/apply.shinstalls five Helm releases in order withhelm upgrade --install --create-namespace --wait—platform-cilium-crds,platform-cilium,platform-coredns,platform-fluxcd-crds,platform-fluxcd— then renders the bootstrap chart withhelm templateandkubectl applys aplatform-componentsNamespace, aGitRepositorypointing at this repo, and a FluxHelmReleasethat installs theplatform-componentschart. From there Flux reconciles everything else. - Platform components chart (
charts/platform-components): the single source of truth at runtime. Itsvalues.yamllists every Core and Addon component. The chart renders:- One Flux
HelmReleaseper enabled CRD chart and per enabled app chart. - Cluster-scoped namespaces (
platform-cluster,default, plus aplatform-<name>namespace per enabled app wheremanageNamespaceis notfalse).
- One Flux
- Platform policy charts:
charts/platform-rbaccontains Podplane RBAC and admission policy resources;charts/platform-trustcontains Podplane trust bundle and trust policy resources. - Flux CD (
charts/fluxcd+charts/fluxcd-crds): Helm-only. Onlysource-controllerandhelm-controllerare deployed;kustomize-controller,notification-controller,image-automation-controllerandimage-reflection-controllerare all disabled to keep pod count minimal. The CRDs chart ships CRDs for all Flux controllers however, so users running their own additional Flux controllers alongside the system installation don't have to install missing CRDs themselves. - Component charts (
charts/<name>): each is a thin Helm chart that depends on an upstream chart (cilium, cert-manager, Envoy Gateway, etc.) or vendors upstream CRDs intemplates/external/. Vendored CRDs are updated through the sharedscripts/crdsGo command. - Post-bootstrap changes: edit the platform chart's values and let Flux
reconcile. The
podplane install/podplane uninstallCLI commands toggle entries inplatform.components.{apps,crds}.
- Namespaces: every component lives in
platform-<name>. Cluster-scoped releases (CRD charts,platform-rbac) use the sharedplatform-clusternamespace. Flux runs inplatform-fluxcd(not the upstreamflux-systemdefault) so users may run their own Flux installation influx-systemalongside ours if they choose. - Helm release names:
platform-<name>(e.g.platform-cilium,platform-cert-manager). Bootstrap uses the same names so Flux can adopt the existing releases when it takes over. - Network: dual-stack IPv4/IPv6 with Podplane's standard CIDRs:
Pod IPv4
100.64.0.0/10, IPv6fd64::/48, Service IPv4198.18.0.0/15, IPv6fdc6::/108. CoreDNS lives at198.19.255.254/fdc6::ffff. - CRDs: ship as a separate
<name>-crdschart per Helm best practice. App HelmReleases setinstall.crds: Skipandupgrade.crds: Skip; the matching<name>-crdsHelmRelease handles them. - Bash scripts: strict mode (
set -eo pipefail). - Naming: kebab-case for chart names;
platform-prefix for cluster components. - Dependencies on upstream charts: declared in each chart's
Chart.yamldependencies:block, not vendored as subcharts.
- The only officially supported Kubernetes distribution/platform/provider is Podplane.
- Helm only. No plain manifests, no kustomize, and no other tools.