Flux CD for the infrastructure on my home k3s cluster.
  • Dockerfile 100%
Find a file
fluxcdbot 6a2e773943 Automated image update
Automation name: flux-system/cluster-apps

Files:
- litellm/repository.yaml
Objects:
- OCIRepository litellm
  Changes:
    - 1.89.2 -> 1.89.3
2026-06-20 23:21:32 +00:00
.devcontainer remove env 2026-06-17 00:48:13 +00:00
.github/workflows updated codeberg mirror 2026-05-23 12:09:39 -04:00
apps Automated image update 2026-06-20 23:21:32 +00:00
cluster Add Flux v2.8.8 component manifests 2026-05-23 10:21:23 -04:00
infrastructure Automated image update 2026-06-19 12:01:48 +00:00
.gitignore added gitignore 2026-02-02 20:44:59 -05:00
readme.md updated readme with dev container notes 2026-06-15 21:44:52 +00:00
sops.md minor change 2026-06-16 01:11:10 +00:00

Flux CD Deployment

This repository is a Flux CD deployment for a k3s cluster, running on three Beelink Mini PC's. One k3s server node and one k3s worker node on each host. If you're reading this, and you're not the owner of this particular cluster, you really shouldn't try to use this repository directly. Feel free to reference the deployment strategy and specifics, but don't try to use them unless you know what you're doing.

Repository Structure

 ├── .devcontainer # Dev container definition
 |
 ├── .github       # GitHub actions
 |
 ├── apps             # Apps Folder:
 │   ├── application1 # All top-level applications
 │   ├── application2 # running in the cluster are
 │   └── application3 # defined in this folder.
 |
 ├── cluster                    # Cluster Folder:
 │   ├── cluster-apps           # Kustomization
 │   ├── cluster-infrastructure # Kustomization
 │   ├── flux-system            # Flux Kustomization - NO TOUCHY
 │   └── update-automation      # Flux Update Automations
 |
 └── infrastructure # Infrastructure Folder:
     ├── service1   # Core services required for the cluster
     ├── service2   # to operate are defined in this folder.
     └── service3   # Storage, Ingress, Databases, etc.

Reconciliation

Watch the Flux Kustomizations

flux get kustomizations --watch

Reconcile any changes

# Apps
flux reconcile kustomization cluster-apps --with-source

# Cluster
flux reconcile kustomization flux-system --with-source

# Infrastructure
flux reconcile kustomization cluster-infrastructure --with-source

Redeploy a HelmRelease

flux reconcile helmrelease <helmrelease_name> -n <namespace> --with-source --force

Local Machine Setup

This repo uses a dev container defined in the .devcontainer directory. The container contains all the tools required for interacting with the cluster.

  • kubectl (with cnpg plugin)
  • helm
  • flux
  • k9s
  • longhornctl

Using the container requires 3 mounts.

  • ~/.ssh with a valid SSH key for the cluster hosts.
  • ~/.kube with a valid kube config for the cluster.
  • ~/.gitconfig with valid git credentials.

Create a GitHub Token

The token needs to have repo access. I had to create it as a classic token.

https://github.com/settings/tokens

Bootstrap the Cluster

The command below will install Flux on the cluster and reference the repository.

flux bootstrap github \
  --components-extra=image-reflector-controller,image-automation-controller \
  --owner=cvsickle \
  --repository=cluster-flux \
  --branch=main \
  --path=cluster \
  --personal \
  --token-auth
# verify
flux check
# double verify
kubectl get pods -n flux-system

Misc. Commands

Get Helm Chart Versions

helm search repo <reponame>/<chartname> --versions

Helpful Things