migrate
This commit is contained in:
@@ -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 %>
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user