This repository contains everything needed to deploy and manage a homelab Kubernetes infrastructure using Ansible and RKE2.
- Getting Started - New to this project? Start here!
- Troubleshooting - Having issues? Check common solutions
- Contributing - Want to contribute? Read the guidelines
- Getting Started Guide - Step-by-step setup instructions
- Changelog - Project changelog and recent updates
- Ansible Setup Guide - Comprehensive Ansible documentation
- Inventory configuration
- Playbook usage
- Role documentation
- TODO List - Planned improvements
- RKE2 Overview - Kubernetes cluster overview
- Namespace organization
- Directory structure
- Application Deployment Guide - Deploy and manage applications
- Core infrastructure (cert-manager, ingress, MetalLB, Longhorn)
- Monitoring and observability
- Media services
- Web applications
- Game servers
- Secrets management
- Authentik Integration Guide - Centralized authentication
- OAuth/OIDC configuration for services
- Group-based access control
- Setup Checklist
- Implementation Summary
- Troubleshooting Guide - Common issues and solutions
- Ansible issues
- RKE2 cluster issues
- Networking problems
- Storage problems
- Application issues
- Contributing Guide - How to contribute to this project
.
├── ansible/ # Ansible playbooks and roles
│ ├── inventory/ # Host inventory files
│ ├── playbooks/ # Ansible playbooks
│ └── roles/ # Ansible roles
├── rke2/ # Kubernetes manifests and Helm values
│ ├── argocd/ # GitOps configurations
│ ├── kube-system/ # Core K8s components
│ ├── monitor/ # Monitoring stack
│ ├── web-server/ # Web applications
│ └── ... # Other namespaces
└── docs/ # Documentation
├── ansible/ # Ansible-specific docs
└── rke2/ # RKE2-specific docs
- Automated Infrastructure: Ansible playbooks for repeatable, idempotent deployments
- RKE2 Kubernetes: Lightweight, secure Kubernetes distribution
- GitOps Ready: ArgoCD integration for declarative deployments
- Centralized Authentication: Authentik OAuth/OIDC for SSO across services
- Comprehensive Monitoring: Prometheus and Grafana for observability
- Network Observability: Hubble UI for Cilium network visibility
- Persistent Storage: Longhorn for distributed block storage
- Load Balancing: MetalLB for bare-metal load balancing
- Secrets Management: External Secrets Operator with Bitwarden integration
- SSL/TLS: Automated certificate management with cert-manager
The main inspiration for this comes from https://github.com/chkpwd/iac. Brian has helped me a great deal in understanding the concepts provided in this repo. So to him a great deal of credit is owed. I have used his repo as a reference for moving my homelab to k8s.