Bootstrapping Flux
Flux manages itself from Git.
Flux installs itself in a very GitOps way: flux bootstrap. Instead of a one-off kubectl apply, bootstrap commits Flux’s own controller manifests into a Git repository and configures Flux to reconcile that path — so Flux is itself managed by Flux, from Git. Upgrades and configuration changes to Flux then happen through commits, like everything else. The bootstrap command takes your Git provider, repo, and a path, and wires up the whole loop.
$ flux bootstrap github \--owner=acme --repository=fleet-infra \--branch=main --path=clusters/prod \--personal=false --token-auth=false # deploy key, not a PAT, where possible# commits Flux manifests to clusters/prod and starts reconciling them
Self-managed, and the repo structure
After bootstrap, the repo has a clusters/<name> path holding Flux’s config plus your Kustomization/HelmRelease resources that point at the rest of your infrastructure. A common layout separates infrastructure (ingress, cert-manager), configuration (namespaces, policies), and apps, each a Kustomization with dependencies between them. Because Flux manages itself, you upgrade Flux by bumping its manifests in Git and letting it reconcile the change.
clusters/prod/flux-system/ # Flux’s own manifests (from bootstrap)infrastructure.yaml # Kustomization -> ./infrastructureapps.yaml # Kustomization -> ./apps (dependsOn infrastructure)infrastructure/apps/