https://github.com/chrede88/home-ops
Repository for my Talos Linux/Kubernetes cluster
https://github.com/chrede88/home-ops
bare-metal fluxcd gitops kubernetes kubesearch renovate talos
Last synced: 6 months ago
JSON representation
Repository for my Talos Linux/Kubernetes cluster
- Host: GitHub
- URL: https://github.com/chrede88/home-ops
- Owner: chrede88
- License: mit
- Created: 2024-02-18T18:51:28.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-04-12T18:14:59.000Z (6 months ago)
- Last Synced: 2025-04-14T00:14:59.344Z (6 months ago)
- Topics: bare-metal, fluxcd, gitops, kubernetes, kubesearch, renovate, talos
- Homepage:
- Size: 2.38 MB
- Stars: 14
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
![]()
![]()
### My Home-ops Repository
_... powered by Talos Linux and Kubernetes_
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
---
##
Introduction
This repository holds all information about my homelab and kubernetes cluster. I'm doing my best to adhere to the principles of infrastructure as code (IaC) and GitOps.
---
##
Kubernetes
My Kubernetes cluster is deployed with [Talos Linux](https://www.talos.dev), a Linux distribution build spefically for running Kubernetes. I run a three bare-metal node cluster on Intel 12th gen NUC's and using [Rook](https://github.com/rock/rock) for cluster persistence block, object, and file storage.
### GitOps
[Flux](https://github.com/fluxcd/flux2) watches the cluster resources in the [kubernetes](./cluster/kubernetes/) folder (see [Directories](#directories)) and makes the changes to the cluster based on the state of the Git repository.
Flux is pointed at the two top level Flux kustomization ([ks.yaml](./cluster/kubernetes/flux/main/ks.yaml)) which points at the [kubernetes/apps](./cluster/kubernetes/apps) folder and some other general common components. Flux will recursively search the `kubernetes/apps` folder until it finds the most top level `kustomization.yaml` per directory and then apply all the resources listed in it. That aforementioned `kustomization.yaml` will generally only define a few resource and one or many Flux kustomizations. Under the control of those Flux kustomizations there will be the actual resources related to each application.
[Renovate](https://github.com/renovatebot/renovate) watches my **entire** repository looking for dependency updates, when they are found a PR is automatically created. When PRs are merged Flux applies the changes to my cluster.
### Directories
The layout of the repository is as follows:
```sh
📁 .github # Github related files
📁 docs # My running documentation
📁 network # My internal network setup
📁 cluster
├── 📁 kubernetes # Kubernetes cluster definitions
│ ├── 📁 apps # application manifests
│ └── 📁 flux # flux system configuration
└── 📁 talos # Talos configuration stuff
```### Docs
I keep running [docs](./docs/README.md) where I try to document my journey. Hopefully others will find them helpful.
---
##
Hardware
| Device | Num | OS Disk Size | Data Disk Size | Ram | OS | Function |
| --------------------- | --- | -------------- | -------------- | ---- | ------------------- | -------------- |
| Intel NUC 12th i5 | 3 | 500GB SATA SSD | 2TB NVMe SSD | 64GB | Talos | Kubernetes |
| Rasberry Pi 4 | 1 | 64GB SD card | - | 4GB | Debian GNU/Linux 12 | |
| Unifi Gateway Fiber | 1 | - | - | - | - | Router |
| Unifi Cloudkey Gen 2+ | 1 | - | - | - | - | Unifi OS |
| Unifi Switch Flex 2.5G 8 PoE | 1 | - | - | - | - | PoE 2.5Gb Switch |
| Unifi U6+ AP | 1 | - | - | - | - | Wifi |---
##
Thanks
Thanks to all the people who donate their time to the [Home Operations](https://discord.gg/home-operations) Discord community. Be sure to check out [kubesearch.dev](https://kubesearch.dev/) for ideas on how to deploy applications or get ideas on what you could deploy.