Introduction
Welcome to the Kubernetes Playground Cluster - a production-ready GitOps Kubernetes cluster management system using ArgoCD, Helm, and Flux.
What Is This?
This repository contains the complete infrastructure-as-code for a self-managed Kubernetes cluster. It follows GitOps principles where all cluster configurations are stored in Git and automatically synchronized to the cluster by ArgoCD.
What Can You Do With This?
- Deploy applications using Git-based workflows
- Manage multiple environments (dev, qa, prod) with isolated configurations
- Auto-manage DNS records via External-DNS
- Auto-provision TLS certificates via cert-manager
- Load balance services on bare-metal via MetalLB
- Route HTTP traffic via NGINX Ingress
Quick Links
- Components - What's running in the cluster
- Architecture - How it works under the hood
- Quick Start - Get up and running
- Adding Apps - Deploy new applications
- Adding Nodes - Add worker nodes to cluster
- Troubleshooting - Common issues and solutions
Tech Stack
| Component | Purpose | Version |
|---|---|---|
| Kubernetes | Container orchestration | 1.33+ |
| ArgoCD | GitOps continuous delivery | Latest |
| Helm | Package management | 3.x |
| MetalLB | Load balancer (bare-metal) | Latest |
| NGINX Ingress | HTTP routing | Latest |
| cert-manager | TLS certificates | Latest |
| External-DNS | DNS management | Latest |
| Cloudflare | DNS provider | - |
Prerequisites
- Kubernetes cluster (kubeadm, v1.33+)
- kubectl configured with cluster access
- GitHub personal access token (with repo access)
- Cloudflare account + API token (for DNS-01 challenges)
Key Features
- GitOps Workflow: All changes go through Git, ArgoCD automatically syncs
- Multi-environment: Dev, QA, Prod with isolated configurations
- Automated TLS: Let's Encrypt certificates with auto-renewal
- Auto DNS: Automatic DNS record creation via External-DNS
- Node Provisioning: Easy commands to add new worker nodes
- Helm-based: Reusable charts for all components