Skip to content

ixxeL-DevOps/fullstack

Repository files navigation

My home-lab repository 🚀

✨managed with k0s/Talos, ArgoCD, Renovate and GitHub✨


INFRASTRUCTURE K0S

K0sVersion ArgoCD

TOOLING

adguard authentik vault traefik wireguard homarr


INFRASTRUCTURE TALOS

TalosVersion k8s Cilium

TOOLING

Argocd traefik prometheu grafana


pre-commit.ci status code style: prettier GitHub last commit (by committer) GitHub commit activity (branch) Renovate


Overview

This is my mono repo for my home infrastructure. It's based loosely on the ideas from szinn/k8s-homelab as well as various templates and resources from GitHub and Reddit.

It follows the concept of Infrastructure as Code and GitOps, leveraging tools such as ArgoCD, Renovate, and go-task to create an easily bootstrappable and manageable home lab environment, with a strong focus on automation for Day 1/Day 2 operations.

The motivation behind setting up this home lab was to refactor my original environment, which was primarily based on a Raspberry Pi 4 running Docker Compose. While this setup worked, it lacked scalability, automation, and was not GitOps-friendly. To address these limitations, I decided to migrate to a fully Kubernetes-based infrastructure, leveraging its rich and advanced ecosystem. This transition allows for better workload orchestration, improved automation through GitOps practices, and seamless integration with cloud-native tools, making the entire environment more maintainable, resilient, and future-proof.

The entire infrastructure is fully virtualized on Proxmox, where each server runs as a virtual machine within the Proxmox cluster. This setup provides flexibility, isolation, and ease of management while allowing efficient resource allocation.

Schéma Excalidraw

My homelab is built on a self-hosted Kubernetes platform, fully automated and managed using a suite of DevOps tools. GitHub serves as the central repository for code and configurations, with GitHub Actions ensuring reliable and reproducible deployments. Repetitive tasks are orchestrated using Taskfile, while Helm facilitates modular application deployment and management. Renovate automates dependency updates, keeping the infrastructure up to date with minimal manual intervention. This ecosystem enables me to efficiently manage my platform while experimenting with modern infrastructure-as-code and automation practices.

Schéma Excalidraw

Kubernetes

To experiment with different Kubernetes distributions, I use a mix of k0s and Talos. Each of these distributions offers unique advantages and match different requirements of my environment.

  • A cluster running k0s, intended for a lab environment running on the BeeLink hardware
  • Another cluster running Talos, used for a production environment running on the GenMachine hardware.

The choice of k0s for the lab cluster is due to its suitability for hardware with limited resources. In this case, k0s has been configured with a minimal setup and a low footprint. On the other hand, Talos is used for the production cluster, allowing me to take advantage of advanced features and capabilities.

Global platform technological overview:

Schéma Excalidraw

GitOps

ArgoCD watches both clusters, leveraging ApplicationSet CRDs to centralize management in the main cluster.

Renovate monitors my entire repository for dependency updates. When updates are found, a PR is automatically created and sometimes merged automatically. Once PRs are merged, ArgoCD applies the changes to my clusters.

The security aspect of GitOps is managed using HC Vault as a secret manager and External Secrets for synchronization to prevent pushing sensitive information into Git.

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •