Skip to main content

Study Case Overview

Act as: Senior DevOps / Platform Engineer mentoring a junior engineer.
Goal: Build a production-like Kubernetes environment from scratch on bare-metal VMs.

This is not a "Hello World" Kubernetes tutorial.
You are here to understand how Kubernetes is actually used in modern production environments — from infrastructure bootstrapping to GitOps, monitoring, and failure recovery.


What You Have

ResourceDetail
VM 1 — k8s-controlControl-plane node — 192.168.90.26
VM 2 — k8s-worker1Worker node 1 — 192.168.90.27
VM 3 — k8s-worker2Worker node 2 — 192.168.90.28
OSLinux (Ubuntu 22.04 LTS recommended)
NetworkingBasic host networking already configured
KubernetesNot yet installed

Cluster Topology


Target Stack


Learning Phases

PhaseTopicWhat You'll Build
01Container RuntimeInstall & verify containerd on all 3 VMs
02Cluster Bootstrapkubeadm init + join worker nodes
03CNI NetworkingCalico pod networking
04Load BalancerMetalLB for bare-metal external IPs
05IngressNGINX Ingress Controller + host routing
06Persistent StoragePV, PVC, StorageClass + NFS for databases
07Laravel StackFull production app deployment
08MonitoringPrometheus + Grafana stack
09GitOpsArgoCD for automated deployments
10SecurityRBAC, NetworkPolicy, TLS hardening
11Failure SimulationReal troubleshooting scenarios

Sample Application

You will deploy this Laravel application throughout the study case:

https://github.com/pndhkm/sample-app

It includes a web frontend, API routes, Redis integration, and database migrations — a realistic production workload.


How to Follow This Guide

Each phase follows this structure:

  1. Concept — why this component exists in production
  2. Architecture — diagram of how it fits into the cluster
  3. Step-by-step — exact commands to run
  4. YAML manifests — production-grade configurations
  5. Validation — how to verify it works
  6. Troubleshooting — what breaks and how to fix it
  7. Best practices — what production teams actually do

Production Mindset: Every step you take here mirrors what a Platform Engineering team does when onboarding a new cluster. Read the "why" before running the commands.