A Flux v2 setup for installing a set of services on a bare-metal Kubernetes cluster of Rock64s.
NOTE: The following services need to be adjusted if you want to clone this repository and use it for your setup:
- MetalLB is used as a layer 2 load balancer and manages IP addresses range 192.168.88.100-192.168.88.150 (see MetalLB HelmRelease).
- Domain cppcli.com with a wild card SSL certificate provided by Let's Encrypt (see Traefik HelmRelease) is used within a local network for accessing the following services:
- grafana.cppcli.com for Grafana (see Ingress settings).
- prometheus.cppcli.com for Prometheus (see Ingress resource).
- git.cppcli.com for the internal basic Git server (see Ingress settings).
- NFS server is available at 192.168.88.246, and the path for the root directory, where NFS sub-directory provisioner is going to create sub-folder, is
/data/kubernetes
(see NFS provisioner HelmRelease).
You will need a bare-metal Kubernetes cluster accessible via your current kubectl
context.
Install Flux CLI - flux
and set $GITHUB_USER and $GITHUB_TOKEN environment variables following Get started with Flux v2.
Bootstrap the cluster by connecting to the GitOps repository.
flux bootstrap github \
--owner=$GITHUB_USER \
--repository=petite-cloud \
--branch=master \
--personal \
--arch arm64
The setup is powered by Flux v2 and contains the following components:
- Flux v2 for monitoring your repositories and apply changes to the cluster.
- MetalLB so that you can have a layer 2 load balancer.
- Traefik, so that you can access services using your domain and wildcard SSL certificates provided by Let's Encrypt.
- Grafana for displaying observability dashboards.
- Lens-metrics - a set of services including Prometheus, node-exporter, and kube-state-metrics, for gathering cluster metrics.
- nfs-subdir-external-provisioner for porvisining persisted volumes on your home NAS.
- basic-git-server for accessing the private part of your cluster setup.