An open API service indexing awesome lists of open source software.

https://github.com/tolkonepiu/hl-cluster

My HomeLab Cluster managed with Flux, Renovate, and GitHub Actions.
https://github.com/tolkonepiu/hl-cluster

ansible devenv flux gitops k3s kubernetes renovate selfhosted taskfile

Last synced: 4 months ago
JSON representation

My HomeLab Cluster managed with Flux, Renovate, and GitHub Actions.

Awesome Lists containing this project

README

          


Logo


My HomeLab Cluster



... managed with Flux, Renovate, and GitHub Actions 🤖




[![k3s](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.popov.wtf%2Fk3s_version&style=for-the-badge&logo=k3s&logoColor=white&color=cba6f7&label=k3s&labelColor=45475a)](https://k3s.io/)  
[![Flux](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.popov.wtf%2Fflux_version&style=for-the-badge&logo=flux&logoColor=white&color=cba6f7&label=Flux&labelColor=45475a)](https://fluxcd.io)  
[![Linux](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.popov.wtf%2Flinux_version&style=for-the-badge&logo=linux&logoColor=white&color=cba6f7&label=Linux&labelColor=45475a)](https://kernel.org/)

[![Age-Days](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.popov.wtf%2Fquery%3Fformat%3Dendpoint%26metric%3Dcluster_age_days&style=flat-square&label=Age&labelColor=45475a)](https://github.com/kashalls/kromgo/) 
[![Uptime-Days](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.popov.wtf%2Fquery%3Fformat%3Dendpoint%26metric%3Dcluster_uptime_days&style=flat-square&label=Uptime&labelColor=45475a)](https://github.com/kashalls/kromgo/) 
[![Node-Count](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.popov.wtf%2Fquery%3Fformat%3Dendpoint%26metric%3Dcluster_node_count&style=flat-square&label=Nodes&labelColor=45475a)](https://github.com/kashalls/kromgo/) 
[![Pod-Count](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.popov.wtf%2Fquery%3Fformat%3Dendpoint%26metric%3Dcluster_pod_count&style=flat-square&label=Pods&labelColor=45475a)](https://github.com/kashalls/kromgo/) 
[![CPU-Usage](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.popov.wtf%2Fquery%3Fformat%3Dendpoint%26metric%3Dcluster_cpu_usage&style=flat-square&label=CPU&labelColor=45475a)](https://github.com/kashalls/kromgo/) 
[![Memory-Usage](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.popov.wtf%2Fquery%3Fformat%3Dendpoint%26metric%3Dcluster_memory_usage&style=flat-square&label=Memory&labelColor=45475a)](https://github.com/kashalls/kromgo/) 
[![Alerts](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.popov.wtf%2Fcluster_alert_count&style=flat-square&label=Alerts&labelColor=45475a)](https://github.com/kashalls/kromgo)

## Overview

This repository is my home Kubernetes cluster in a declarative state.
[Flux](https://github.com/fluxcd/flux2) watches the [kubernetes](./kubernetes/)
folder and will make the changes to the cluster based on the YAML manifests.

The cluster runs on [k3s](https://k3s.io/) and consists of nodes based on
[Rock Pi 4B](https://radxa.com/products/rock4/4b/) single-board computers, each
equipped with 1TB NVME storage. Power to the boards is supplied through
[ROCKPI 23W PoE HAT](https://wiki.radxa.com/ROCKPI_23W_PoE_HAT) modules.

Although [Talos Linux](https://www.talos.dev/) was initially planned as the
operating system (which has
[official support for Rock Pi 4B](https://www.talos.dev/v1.6/talos-guides/install/single-board-computers/rockpi_4/)),
it has
[issues with NVME storage](https://github.com/siderolabs/sbc-rockchip/issues/65)
on this hardware platform, so k3s was chosen instead.

### 💡 Core Components

Core components that form the foundation of the cluster:

- [cilium/cilium](https://github.com/cilium/cilium): Kubernetes CNI.
- [jetstack/cert-manager](https://cert-manager.io/docs/): Creates SSL
certificates for services in my Kubernetes cluster.
- [kubernetes-sigs/external-dns](https://github.com/kubernetes-sigs/external-dns):
Automatically manages DNS records from my cluster in CloudFlare.
- [rancher/system-upgrade-controller](https://github.com/rancher/system-upgrade-controller):
Handles k3s upgrades automatically.
- [kubereboot/kured](https://github.com/kubereboot/kured): Kubernetes reboot
daemon that performs safe automatic node reboots when needed.

### 🚨 Observability

For observability and monitoring of the cluster the following software is used:

- [grafana/grafana](https://github.com/grafana/grafana): Data visualization
platform.
- [prometheus/alertmanager](https://github.com/prometheus/alertmanager): Handles
processing and sending alerts.
- [pushover](https://pushover.net): Handles receiving alerts on my devices.
- [VictoriaMetrics/VictoriaMetrics](https://github.com/VictoriaMetrics/VictoriaMetrics):
Time series database, drop-in replacement for Prometheus.

### 🤖 Automation

- [Github Actions](https://docs.github.com/en/actions) for checking code
formatting and running periodic jobs
- [Renovate](https://github.com/renovatebot/renovate) keeps the application
charts and container images up-to-date

## ✏ License

See [LICENSE](./LICENSE)