Deprecated: Function get_magic_quotes_gpc() is deprecated in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 99

Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 619

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1169

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176
8000 GitHub - nicolerenee/infra: Kubernetes yaml for my homelab
Nothing Special   »   [go: up one dir, main page]

Skip to content

nicolerenee/infra

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Home Kubernetes Infrastructure

A GitOps-managed Kubernetes infrastructure running on bare metal with Talos Linux, featuring automated deployments via Flux v2 and comprehensive application hosting for home lab services.

πŸ—οΈ Infrastructure Overview

This repository manages two Kubernetes clusters using a GitOps approach:

  • atlantis-k8s01: 5-node cluster (3 control plane, 2 workers) with high-availability networking running in a Colo
  • fairy-k8s01: 3-node cluster (all control plane) running at home

Core Technologies

πŸ“ Repository Structure

kubernetes/
β”œβ”€β”€ apps/                   # Application definitions (shared across clusters)
β”‚   β”œβ”€β”€ auth/               # Authentication services (Authentik, LLDAP)
β”‚   β”œβ”€β”€ cert-manager/       # Certificate management
β”‚   β”œβ”€β”€ flux/               # Flux operator and instance configs
β”‚   β”œβ”€β”€ home-automation/    # Home Assistant, ESPHome, Zigbee2MQTT
β”‚   β”œβ”€β”€ media/              # Media stack
β”‚   β”œβ”€β”€ networking/         # Network services (Cilium, MetalLB, DNS)
β”‚   β”œβ”€β”€ observability/      # Monitoring and alerting stack
β”‚   β”œβ”€β”€ secrets/            # Secret management
β”‚   β”œβ”€β”€ storage/            # Storage solutions
β”‚   └── ...
β”œβ”€β”€ clusters/               # Cluster-specific configurations
β”‚   β”œβ”€β”€ atlantis-k8s01/     # atlantis cluster configuration
β”‚   β”‚   β”œβ”€β”€ apps/           # Cluster-specific app deployments
β”‚   β”‚   β”œβ”€β”€ flux/           # Flux bootstrap configuration
β”‚   β”‚   └── talos/          # Talos machine configurations
β”‚   └── fairy-k8s01/        # fairy cluster configuration
└── components/             # Reusable Kustomize components

πŸš€ Key Features

GitOps Automation

  • Flux v2 continuously monitors this repository and applies changes automatically
  • Renovate keeps dependencies updated with automated PRs
  • GitHub Actions provide CI/CD pipeline for validation and deployment

Security & Secrets Management

  • 1Password Connect integration for secure secret management
  • External Secrets Operator syncs secrets from 1Password to Kubernetes
  • Cert-Manager with Let's Encrypt for automatic TLS certificate provisioning
  • Authentik provides SSO and identity management

High Availability Storage

  • Rook Ceph cluster provides distributed, replicated storage
  • Spegel for distributed container image caching

Comprehensive Monitoring

  • VictoriaMetrics for metrics collection and storage
  • Grafana for visualization and dashboards
  • Gatus for uptime monitoring and status pages
  • Silence Operator for intelligent alert management

Networking & Connectivity

  • Cilium with eBPF for high-performance networking
  • Gateway API for modern ingress management
  • MetalLB in BGP mode for LoadBalancer services
  • Tailscale integration for secure remote access

🏠 Applications & Services

Media & Entertainment

  • Emby/Jellyfin: Media streaming servers
  • Sonarr/Radarr/Lidarr: Media acquisition and management
  • Bazarr: Subtitle management
  • SABnzbd: Usenet downloader
  • Prowlarr: Indexer management
  • Recyclarr: Quality profile management

Home Automation

  • Home Assistant: Home automation platform
  • ESPHome: ESP device management
  • Zigbee2MQTT: Zigbee device integration
  • Scrypted: Camera and NVR management

Development & Productivity

  • GitHub Actions Runners: Self-hosted CI/CD runners
  • IT Tools: Collection of useful web tools
  • Golink: Internal URL shortener
  • Netbox: Infrastructure documentation

Infrastructure Services

  • Authentik: Identity provider and SSO
  • LLDAP: Lightweight LDAP server
  • External DNS: Automatic DNS record management
  • System Upgrade Controller: Automated node updates (Kubernetes and Talos)

πŸ”§ Hardware & Infrastructure

Atlantis Cluster

  • 5 nodes with Intel hardware and 10Gb networking
  • Bonded network interfaces with LACP for redundancy
  • NVMe boot storage for quick boot speed
  • SSD ceph storage for high-availablity cluster storage
  • Intel integrated graphics support for hardware transcoding

Fairy Cluster

  • 3 nodes (all control plane) with advanced security features
  • Secure Boot and UKI enabled for enhanced security
  • NVMe storage for boot device and ceph storage
  • Intel integrated graphics support for media workloads

🚦 Getting Started

Prerequisites

  • Talos Linux knowledge for cluster management
  • Flux CLI for GitOps operations
  • 1Password account for secrets management
  • Task for automation scripts

Bootstrap Process

  1. Prepare hardware with Talos Linux installation
  2. Configure Talos using the provided talconfig.yaml files
  3. Bootstrap Flux using the cluster-specific configurations
  4. Set up secrets in 1Password and configure External Secrets
  5. Deploy applications by committing changes to this repository

Task Automation

This repository uses Task for automation:

# Generate Talos configurations
task talos:generate CLUSTER=atlantis-k8s01

# Apply Talos configuration to a node
task talos:apply-config CLUSTER=atlantis-k8s01 node=atlantis-compute01

# Update Talos configuration
task talos:talosconfig CLUSTER=atlantis-k8s01

πŸ”„ Continuous Deployment

Automated Updates

  • Renovate automatically creates PRs for dependency updates
  • Flux applies approved changes within minutes
  • System Upgrade Controller handles node OS updates
  • Reloader restarts applications when configurations change

Monitoring & Alerting

  • VictoriaMetrics collects metrics from all cluster components
  • Grafana provides comprehensive dashboards
  • Gatus monitors service availability
  • Alert routing via various notification channels

🀝 Contributing

This repository is tailored for personal use but serves as a reference implementation. Feel free to:

  • Fork and adapt for your own infrastructure
  • Open issues for questions or suggestions
  • Submit PRs for improvements or bug fixes

πŸ“š Documentation & Resources

⚠️ Important Notes

  • Secrets: All secrets are managed via 1Password and External Secrets Operator
  • Networking: BGP configuration required for MetalLB LoadBalancer services
  • Storage: Rook Ceph requires dedicated storage devices on cluster nodes
  • Updates: Automated updates are enabled - monitor the deployment pipeline

This infrastructure powers a comprehensive home lab environment with enterprise-grade reliability and security.

About

Kubernetes yaml for my homelab

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5

0