{ "slug": "flux-bootstrap", "kind": "kubernetes", "metadata": { "name": "Flux Bootstrap", "description": "Draft Flux bootstrap manifests for wiring an already-installed Flux control plane to a Git repository and root Kustomization, with optional Helm source and release resources.", "tags": [], "icon": { "provider": "simple-icons", "id": "flux" }, "draft": true, "version": { "name": "2.7.5", "source_dep_name": "manual/flux-bootstrap" } }, "variables": [ { "title": "General", "name": "general", "items": [ { "name": "namespace", "type": "str", "title": "Flux namespace", "required": false, "default": "flux-system", "description": "Namespace where Flux source and Kustomization resources live.", "config": { "placeholder": "flux-system" } }, { "name": "create_namespace", "type": "bool", "title": "Create namespace", "required": false, "default": false, "description": "Render the Flux namespace manifest as part of this file." }, { "name": "git_repository_name", "type": "str", "title": "GitRepository name", "required": false, "default": "homelab-cluster", "config": { "placeholder": "homelab-cluster" } }, { "name": "git_repository_url", "type": "str", "title": "Git repository URL", "required": false, "default": "https://github.com/example/homelab-gitops", "description": "HTTPS or SSH URL for the GitOps repository.", "config": { "placeholder": "https://github.com/example/homelab-gitops" } }, { "name": "git_branch", "type": "str", "title": "Git branch", "required": false, "default": "main", "description": "Branch Flux should reconcile from.", "config": { "placeholder": "main" } }, { "name": "git_interval", "type": "str", "title": "Git interval", "required": false, "default": "5m0s", "description": "How often Flux fetches the Git repository.", "config": { "placeholder": "5m0s" } }, { "name": "git_timeout", "type": "str", "title": "Git timeout", "required": false, "default": "60s", "description": "Timeout for Git clone and fetch operations.", "config": { "placeholder": "60s" } }, { "name": "kustomization_name", "type": "str", "title": "Kustomization name", "required": false, "default": "cluster-root", "config": { "placeholder": "cluster-root" } }, { "name": "kustomization_path", "type": "str", "title": "Kustomization path", "required": false, "default": "./clusters/production", "description": "Path inside the Git repository that contains the root kustomization.", "config": { "placeholder": "./clusters/production" } }, { "name": "kustomization_interval", "type": "str", "title": "Kustomization interval", "required": false, "default": "10m0s", "description": "How often Flux reconciles the root Kustomization.", "config": { "placeholder": "10m0s" } }, { "name": "kustomization_timeout", "type": "str", "title": "Kustomization timeout", "required": false, "default": "5m0s", "description": "Timeout for apply and health-check operations.", "config": { "placeholder": "5m0s" } } ] }, { "title": "Reconciliation", "name": "reconciliation", "items": [ { "name": "kustomization_prune", "type": "bool", "title": "Prune", "required": false, "default": true, "description": "Remove resources from the cluster when they disappear from Git." }, { "name": "kustomization_wait", "type": "bool", "title": "Wait", "required": false, "default": true, "description": "Wait for reconciled resources to become healthy." }, { "name": "kustomization_force", "type": "bool", "title": "Force", "required": false, "default": false, "description": "Force apply resources when immutable field changes require replacement." }, { "name": "target_namespace_enabled", "type": "bool", "title": "Target namespace", "required": false, "default": false, "description": "Override the namespace for resources reconciled by this Kustomization." }, { "name": "target_namespace", "type": "str", "title": "Target namespace value", "required": false, "default": "platform", "description": "Namespace applied to resources when target namespace is enabled.", "config": { "placeholder": "platform" } }, { "name": "depends_on_enabled", "type": "bool", "title": "Depends on", "required": false, "default": false, "description": "Add a single Flux Kustomization dependency before this root applies." }, { "name": "depends_on_name", "type": "str", "title": "Dependency name", "required": false, "default": "cluster-prereqs", "config": { "placeholder": "cluster-prereqs" } } ] }, { "title": "Authentication and Decryption", "name": "security", "items": [ { "name": "git_secret_ref_enabled", "type": "bool", "title": "Git secretRef", "required": false, "default": false, "description": "Reference a Kubernetes secret for Git authentication." }, { "name": "git_secret_ref_name", "type": "str", "title": "Git secret name", "required": false, "default": "flux-system", "config": { "placeholder": "flux-system" } }, { "name": "decryption_enabled", "type": "bool", "title": "SOPS decryption", "required": false, "default": false }, { "name": "decryption_secret_name", "type": "str", "title": "Decryption secret", "required": false, "default": "sops-age", "config": { "placeholder": "sops-age" } } ] }, { "title": "Optional Helm Release", "name": "helm", "items": [ { "name": "helm_repository_enabled", "type": "bool", "title": "HelmRepository", "required": false, "default": false, "description": "Render a HelmRepository resource alongside the bootstrap objects." }, { "name": "helm_repository_name", "type": "str", "title": "HelmRepository name", "required": false, "default": "podinfo", "config": { "placeholder": "podinfo" } }, { "name": "helm_repository_url", "type": "str", "title": "HelmRepository URL", "required": false, "default": "https://stefanprodan.github.io/podinfo", "description": "Chart repository URL used by the optional Helm source.", "config": { "placeholder": "https://stefanprodan.github.io/podinfo" } }, { "name": "helm_repository_interval", "type": "str", "title": "HelmRepository interval", "required": false, "default": "15m0s", "description": "How often Flux refreshes the Helm repository index.", "config": { "placeholder": "15m0s" } }, { "name": "helm_release_enabled", "type": "bool", "title": "HelmRelease", "required": false, "default": false, "description": "Render a starter HelmRelease managed by Flux." }, { "name": "helm_release_name", "type": "str", "title": "HelmRelease name", "required": false, "default": "podinfo", "config": { "placeholder": "podinfo" } }, { "name": "helm_release_namespace", "type": "str", "title": "HelmRelease namespace", "required": false, "default": "flux-system", "description": "Namespace where the HelmRelease custom resource should live.", "config": { "placeholder": "flux-system" } }, { "name": "helm_release_interval", "type": "str", "title": "HelmRelease interval", "required": false, "default": "15m0s", "description": "How often Flux reconciles the optional Helm release.", "config": { "placeholder": "15m0s" } }, { "name": "helm_chart_name", "type": "str", "title": "Chart name", "required": false, "default": "podinfo", "description": "Chart name inside the optional Helm repository.", "config": { "placeholder": "podinfo" } }, { "name": "helm_chart_version", "type": "str", "title": "Chart version", "required": false, "default": "6.9.3", "description": "Chart version for the optional HelmRelease.", "config": { "placeholder": "6.9.3" } }, { "name": "helm_target_namespace_enabled", "type": "bool", "title": "Release target namespace", "required": false, "default": true, "description": "Install the optional Helm chart into a different namespace." }, { "name": "helm_target_namespace", "type": "str", "title": "Release target namespace value", "required": false, "default": "apps", "description": "Namespace where the Helm release should be deployed.", "config": { "placeholder": "apps" } } ] } ] }