https://github.com/alfi0812/talos
Personal Talos Cluster
https://github.com/alfi0812/talos
clustertool gitops helm kubernetes kubesearch
Last synced: 29 days ago
JSON representation
Personal Talos Cluster
- Host: GitHub
- URL: https://github.com/alfi0812/talos
- Owner: alfi0812
- Created: 2025-09-25T17:35:44.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2025-09-30T20:17:29.000Z (9 months ago)
- Last Synced: 2025-09-30T22:14:54.942Z (9 months ago)
- Topics: clustertool, gitops, helm, kubernetes, kubesearch
- Language: Shell
- Homepage: https://alfi0812.de
- Size: 90.8 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ๐ง Personal Talos Kubernetes Cluster
*A self-hosted, GitOps-driven Kubernetes cluster built on Talos Linux, focused on reliability, observability, and clean automation.*
[](https://www.truenas.com/)ย ย
[](https://www.talos.dev/)ย ย
[](https://www.kubernetes.io/)ย ย
[](https://fluxcd.io)ย ย
[%2Fhealth%2Fbadge.shields&style=for-the-badge&logo=ubiquiti&logoColor=white&label=Home%20Internet)](https://status.goeppel.dev)ย ย
[%2Fhealth%2Fbadge.shields&style=for-the-badge&logo=statuspage&logoColor=white&label=Status%20Page)](https://status.goeppel.dev)ย ย
[%2Fhealth%2Fbadge.shields&style=for-the-badge&logo=prometheus&logoColor=white&label=Alertmanager)](https://status.goeppel.dev)
[](https://github.com/kashalls/kromgo)ย ย
[](https://github.com/kashalls/kromgo)ย ย
[](https://github.com/kashalls/kromgo)ย ย
[](https://github.com/kashalls/kromgo)ย ย
[](https://github.com/kashalls/kromgo)ย ย
[](https://github.com/kashalls/kromgo)ย ย
[](https://github.com/kashalls/kromgo)ย ย
---
## ๐ Overview
This repository contains the full **GitOps-managed configuration** for my personal Kubernetes cluster.
The cluster runs on **Talos Linux** and is fully declarative: every component, application, and configuration is defined in Git and continuously reconciled using **FluxCD**.
Key goals of this setup:
* ๐ **Reproducibility** โ rebuild the entire cluster from Git
* ๐ **Immutability & Security** โ minimal OS, no SSH, API-driven management
* ๐ **Observability** โ metrics, alerts, and public status visibility
* ๐ค **Automation-first** โ updates, deployments, and testing without manual intervention
---
## ๐ง Design Decisions
### Why Talos Linux?
- Immutable, minimal OS reduces attack surface
- No SSH or package manager
- Fully API-driven, ideal for GitOps-based Kubernetes clusters
### Why FluxCD?
- Continuous reconciliation instead of one-shot deployments
- Native Kubernetes integration
- Works seamlessly with SOPS for encrypted secrets
### Why a Single-Node Cluster?
- Simplifies operations and reduces complexity
- Ideal for homelab and learning environments
- Focuses on reproducibility rather than high availability
---
## ๐ก Networking Assumptions
This cluster assumes a **simple and reliable home network environment**.
- The Talos VM relies on the Fritzbox router for primary network connectivity
- No advanced routing, BGP, or multi-homing is assumed
- Networking is optimized for simplicity and stability rather than redundancy
- External access is handled via managed ingress and tunnels where required
---
## ๐งฉ Core Components
| Component | Description |
| ------------------ | -----------------------------------------------------------------------------------|
| **Kubernetes** | Container orchestration platform for running and managing workloads |
| **Talos Linux** | Immutable, API-driven Linux distribution purpose-built for Kubernetes |
| **FluxCD** | GitOps operator used for continuous reconciliation of cluster state |
| **Mend Renovate** | Automatically tracks and updates container images and dependencies |
| **GitHub Actions** | CI pipelines for validation, linting, and testing of cluster configs |
| **SOPS** | Encryption of all secrets and credentials stored in Git, integrated with FluxCD |
| **ForgeTool** | Bootstrap tool from TrueForge used to build the basic Cluster Structure and Setup |
---
## ๐ Directory Structure
~~~text
clusters/
โโโ main/
โโโ components/ # Common components applied to multiple parts of the cluster
โโโ kubernetes/ # Applications and Kubernetes workloads
โโโ talos/ # Talos Linux machine and cluster configuration
repositories/
โโโ entries/ # Repository entry definitions
โโโ git/ # Flux GitRepository sources
โโโ helm/ # Flux HelmRepository sources
โโโ oci/ # Flux OCIRepository sources
~~~
---
## ๐ Secrets Management
All secrets and credentials are stored in this repository **encrypted with SOPS**.
- Secrets are committed to Git in encrypted form
- Decryption happens inside the cluster via FluxCD
- Decryption keys are managed externally and are never stored in Git
- This enables full GitOps workflows without exposing sensitive data
---
## โ๏ธ Cloud & External Dependencies
| Service | Usage |
| -------------- | --------------------------------------------------------- |
| **Cloudflare** | DNS management, tunnels, and S3-compatible object storage |
| **GitHub** | Source control, CI, and GitOps reconciliation source |
---
## ๐ฅ Hardware
### TrueNAS Storage Server
| Component | Specification |
| --------------------- | -------------------------------- |
| **CPU** | AMD Ryzen 7 5700G |
| **RAM** | 64 GB DDR4 @ 3200 MHz |
| **SAS Controller** | LSI SAS 9300-16i |
| **Boot Drive** | 1ร Crucial P310 500 GB NVMe |
| **Metadata VDEV** | 2ร Samsung 870 EVO 1 TB (Mirror) |
| **Data VDEV** | 6ร Seagate Exos X24 16 TB HDD |
| **Remote Management** | NanoKVM PCIe Edition |
### Talos Kubernetes Node
| Component | Specification |
| --------------------- | ------------------------------ |
| **CPU** | AMD Ryzen 9 9950X |
| **RAM** | 128 GB DDR5 @ 5600 MHz |
| **Storage** | 2 TB Crucial P3 Plus NVMe |
| **GPU** | Sparkle Intel Arc A770 (16 GB) |
| **Remote Management** | NanoKVM PCIe Edition |
---
## ๐ Monitoring & Status
* ๐ **Metrics & Dashboards** via Prometheus-compatible tooling
* ๐จ **Alerting** with Alertmanager
* ๐ **Public Status Page** for service and connectivity visibility
* ๐งฎ **Cluster Statistics** exposed via Kromgo and Shields.io
---
## ๐ Acknowledgements
This cluster is heavily inspired by and built upon the excellent work of:
* **TrueForge** โ [https://trueforge.org/](https://trueforge.org/)
* **Home Operations** โ [https://github.com/home-operations](https://github.com/home-operations)
Their open-source contributions and documentation made this setup possible.
---
> โ ๏ธ **Note**
> This repository is public for transparency and learning purposes. Secrets and credentials **are stored in Git in encrypted form** using **SOPS**.
> Decryption keys are managed externally and are **not** committed to the repository, ensuring sensitive values remain protected.
> ๐งช This cluster is used as a learning, testing, and long-running homelab environment.
> Configurations may evolve as new Kubernetes, Talos, or GitOps features are evaluated.