This commit is contained in:
Mike McFetridge
2026-07-20 09:23:17 -04:00
parent c1315882da
commit 72272e4006
3179 changed files with 562960 additions and 14 deletions
+86
View File
@@ -0,0 +1,86 @@
<%- if create_namespace %>
---
apiVersion: v1
kind: Namespace
metadata:
name: << namespace >>
<%- endif %>
---
apiVersion: source.toolkit.fluxcd.io/v1
kind: GitRepository
metadata:
name: << git_repository_name >>
namespace: << namespace >>
spec:
interval: << git_interval >>
timeout: << git_timeout >>
url: << git_repository_url >>
ref:
branch: << git_branch >>
<%- if git_secret_ref_enabled %>
secretRef:
name: << git_secret_ref_name >>
<%- endif %>
---
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: << kustomization_name >>
namespace: << namespace >>
spec:
interval: << kustomization_interval >>
timeout: << kustomization_timeout >>
force: << kustomization_force | lower >>
path: << kustomization_path >>
prune: << kustomization_prune | lower >>
wait: << kustomization_wait | lower >>
sourceRef:
kind: GitRepository
name: << git_repository_name >>
<%- if target_namespace_enabled %>
targetNamespace: << target_namespace >>
<%- endif %>
<%- if depends_on_enabled %>
dependsOn:
- name: << depends_on_name >>
<%- endif %>
<%- if decryption_enabled %>
decryption:
provider: sops
secretRef:
name: << decryption_secret_name >>
<%- endif %>
<%- if helm_repository_enabled %>
---
apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: << helm_repository_name >>
namespace: << namespace >>
spec:
interval: << helm_repository_interval >>
url: << helm_repository_url >>
<%- endif %>
<%- if helm_release_enabled %>
---
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: << helm_release_name >>
namespace: << helm_release_namespace >>
spec:
interval: << helm_release_interval >>
chart:
spec:
chart: << helm_chart_name >>
version: "<< helm_chart_version >>"
sourceRef:
kind: HelmRepository
name: << helm_repository_name >>
namespace: << namespace >>
<%- if helm_target_namespace_enabled %>
install:
createNamespace: true
targetNamespace: << helm_target_namespace >>
<%- endif %>
<%- endif %>
+377
View File
@@ -0,0 +1,377 @@
{
"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"
}
}
]
}
]
}