/homelab-kube-cluster

Dan's Homelab Kubernetes Cluster - Operated through Kustomize & ArgoCD

Primary LanguageTypeScriptCreative Commons Zero v1.0 UniversalCC0-1.0

Dan Manners' Homelab

All of the readme’s are in a state of flux at this moment. I’m working on refactoring much of the repository, but I’m happy to answer any questions in the k8s@Home Discord server or on Discord! Feel free to reach me at danmanners with any questions or at daniel.a.manners@gmail.com!

This homelab repository is aimed at applying widely-accepted tools and established practices within the DevOps/SRE world. Its primary objectives are to efficiently carry out the intended service functions while also serving as a valuable reference for individuals looking to enhance their own learning. This repository is not intended to be a "one-size-fits-all" solution, but rather a starting point for others to build upon and learn from.

🔍 Features

  • ✓ Make GitOps easy to learn

  • ✓ Modularity; make it easy to add/remove components

  • ✓ External DNS; declarative DNS management for public-facing services

  • ✓ Cert-Manager; Automagic cert management

  • ✓ Harbor; In-Cluster Container Registry

  • ❏ Monitoring and alerting 🚧

  • ❏ Hybrid Multi-Cloud 🚧

💡 Current Tech Stack

Name Description

Argo CD

GitOps for Kubernetes

Argo Events

Event based dependency management for Kubernetes

Argo Workflows

Kubernetes-native workflow engine

AWS

Cloud Provider

Blocky

Fast and lightweight DNS proxy as ad-blocker

Buildah

Container Building

Cert-Manager

Certificate Manager

Cilium

CNI utilizing eBPF for Observability and Security

CloudNativePG

Kubernetes operator covering lifecycle of HA PostgreSQL Clusters

CSI-Driver-NFS

Kubernetes NFS Driver for persistent storage

Rook Ceph

Cloud-Native File, Block, and Object Storage for Kubernetes

Dex IDP

Federated OIDC

External-DNS

Configure and manage External DNS servers

GitHub

Popular Code Management through Git

Grafana

Metrics Visualization

Harbor

Open Source Container Registry

Helm

Kubernetes Package Management

Jenkins

Open-Source Automation Server

Kubernetes

Container Orchestration

Let’s Encrypt

Free TLS certificates

Maddy

Composable all-in-one mail server

MetalLB

Kubernetes bare-metal Load Balancer

SOPS

Simple and flexible tool for managing secrets

Podman

Container and Pod management

Prometheus

Metrics and Data Collection

Python

Python Programming Language

Raspberry Pi

Baremetal ARM SoC Hardware!

SonarQube

Static code analysis

Sonatype Nexus-OSS

Manage binaries and build artifacts

Tekton

Cloud-Native CI/CD

Ubuntu

Operating System

Talos Linux

The Kubernetes Operating System

Talhelper

A tool to help creating Talos Kubernetes cluster

Uptime Kuma

Fancy self-hosted system monitoring

WikiJS

Open-Source Wiki/Documentation Service

Deployment Order of Operations

To-Do Items

  • Ensure that ALL services are tagged for the appropriate hardware (arm64 or amd64) to ensure runtime success

    • Alternatively, ensure that all containers are built for multi-architecture.

  • Ensure that ALL application and service subdirectories have READMEs explaining what they’re doing and what someone else may need to modify for their own environment

Gratitude and Thanks

This README redesign was inspired by several other homelab repos, individuals, and communities.

Communities


The DevOps Lounge

Discord

K8s-at-Home

Discord

Without the inspiration and help of these individuals and communities, I don’t think my own project would be nearly as far. Make sure to check out their projects as well!