.claude/skills/minikube-setup/SKILL.md
Setup and configure Minikube for local Kubernetes development
npx skillsauth add maneeshanif/todo-spec-driven minikube-setupInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Minikube runs a single-node Kubernetes cluster locally for development:
| Resource | Minimum | Recommended | |-----------|----------|-------------| | CPUs | 2 | 4+ | | Memory | 2GB | 8GB+ | | Disk | 20GB | 50GB+ | | Container Runtime | Docker or Podman | Docker |
# Download binary
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
# Verify installation
minikube version
# Using Homebrew
brew install minikube
# Or download binary
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64
sudo install minikube-darwin-amd64 /usr/local/bin/minikube
# Using Chocolatey
choco install minikube
# Or download installer from
# https://github.com/kubernetes/minikube/releases
# Start with defaults (2 CPU, 2GB RAM)
minikube start
# Start with more resources (recommended for this project)
minikube start --cpus=4 --memory=8192 --disk-size=50gb
# Docker driver (default on most systems)
minikube start --driver=docker
# Podman driver
minikube start --driver=podman
# VirtualBox driver
minikube start --driver=virtualbox
# With all recommended options
minikube start \
--cpus=4 \
--memory=8192 \
--disk-size=50gb \
--driver=docker \
--container-runtime=docker
# Enable ingress controller
minikube addons enable ingress
# Verify
kubectl get pods -n ingress-nginx
# Enable metrics for HPA
minikube addons enable metrics-server
# Verify
kubectl top pods
# See all available addons
minikube addons list
# Enable multiple
minikube addons enable ingress metrics-server registry
# Check cluster status
minikube status
# Expected output:
# type: Control Plane
# host: Running
# kubelet: Running
# apiserver: Running
# kubeconfig: Configured
# Stop cluster
minikube stop
# Start again (preserves state)
minikube start
# Delete and start fresh
minikube delete
minikube start
# If NodePort doesn't work
minikube tunnel
# This runs in foreground - keep separate terminal
Minikube cannot access local Docker images by default. You must:
# Load single image
minikube image load todo-frontend:latest
# Load multiple images
minikube image load todo-frontend:latest todo-backend:latest todo-mcp-server:latest
# Load all images
docker images --format "{{.Repository}}:{{.Tag}}" | grep todo | xargs minikube image load
# Step 1: Build images
docker build -t todo-frontend:latest ./frontend
docker build -t todo-backend:latest ./backend
docker build -t todo-mcp-server:latest -f backend/Dockerfile.mcp ./backend
# Step 2: Start Minikube
minikube start
# Step 3: Load images
minikube image load todo-frontend:latest todo-backend:latest todo-mcp-server:latest
# Step 4: Verify
minikube image list
# Apply all manifests
kubectl apply -f k8s/ -n todo-app
# Apply single file
kubectl apply -f k8s/00-namespace.yaml
kubectl apply -f k8s/01-configmap.yaml
kubectl apply -f k8s/02-secret.yaml
# Apply directory
kubectl apply -R -f k8s/
# Install with values
helm install todo-app ./helm/todo-app \
--namespace todo-app \
--create-namespace \
-f helm/todo-app/values-dev.yaml
# Or use default values
helm install todo-app ./helm/todo-app --namespace todo-app
# Forward service to local port
kubectl port-forward svc/frontend 8080:80 -n todo-app
# Access at http://localhost:8080
# Open service in browser
minikube service frontend -n todo-app
# Get URL without opening
minikube service frontend -n todo-app --url
# Get Minikube IP
minikube ip
# Access NodePort services
# http://$(minikube ip):<nodeport>
# Start dashboard
minikube dashboard
# Access at: http://127.0.0.1:5xxxx
# Open in browser with URL
minikube dashboard --url
# Check prerequisites
minikube check
# Common fixes:
# 1. Update minikube
# 2. Restart Docker Desktop
# 3. Delete .minikube directory: rm -rf ~/.minikube
# 4. Try different driver
# Verify image is loaded
minikube image list
# If not loaded, re-run load command
minikube image load todo-frontend:latest
# Check resources
kubectl top nodes
# Check events
kubectl describe pod <pod-name> -n todo-app
# May need to increase Minikube resources
minikube stop
minikube start --cpus=4 --memory=8192
# View logs
kubectl logs <pod-name> -n todo-app
# View previous logs
kubectl logs <pod-name> -n todo-app --previous
# Describe pod for events
kubectl describe pod <pod-name> -n todo-app
# Verify ingress addon
minikube addons list | grep ingress
# Enable if missing
minikube addons enable ingress
# Add host entry (for todo.local)
echo "$(minikube ip) todo.local" | sudo tee -a /etc/hosts
# 1. Start Minikube with adequate resources
minikube start --cpus=4 --memory=8192 --disk-size=50gb
# 2. Enable required addons
minikube addons enable ingress metrics-server
# 3. Build Docker images
docker build -t todo-frontend:latest ./frontend
docker build -t todo-backend:latest ./backend
docker build -t todo-mcp-server:latest -f backend/Dockerfile.mcp ./backend
# 4. Load images into Minikube
minikube image load todo-frontend:latest todo-backend:latest todo-mcp-server:latest
# 5. Create namespace
kubectl create namespace todo-app
# 6. Create secrets
kubectl create secret generic backend-secrets \
--from-literal=GEMINI_API_KEY=${GEMINI_API_KEY} \
--from-literal=BETTER_AUTH_SECRET=${BETTER_AUTH_SECRET} \
-n todo-app
# 7. Apply manifests
kubectl apply -f k8s/ -n todo-app
# 8. Verify deployment
kubectl get pods -n todo-app
kubectl get svc -n todo-app
# 9. Access application
minikube service frontend -n todo-app
# Stop Minikube
minikube stop
# Delete cluster
minikube delete
# Clear all data
rm -rf ~/.minikube
# Delete namespace
kubectl delete namespace todo-app
After Minikube setup:
minikube status)minikube image list)todo-app exists# Daily workflow
minikube start # Start cluster
kubectl get pods -n todo-app # Check status
minikube dashboard # Open dashboard
minikube service frontend -n todo-app # Access app
# Debugging
kubectl logs -f deployment/backend -n todo-app # View logs
kubectl describe pod <pod-name> -n todo-app # Debug pod
kubectl exec -it <pod-name> -n todo-app -- sh # Shell in pod
# Cleanup
minikube stop # Stop cluster
minikube delete # Delete cluster
After successful Minikube deployment:
tools
Implement WebSocket service for real-time task synchronization across clients. Use when building real-time updates for Phase 5. (project)
data-ai
Implement Urdu language support with RTL layout, translations, and AI responses in Urdu. Bonus feature (+100 points) for Phase 5. (project)
development
DEPRECATED - Use chatkit-backend skill instead. SSE streaming is now part of the chatkit-backend skill for ChatKit integration.
development
Install and configure Shadcn/ui component library with Radix UI primitives, Aceternity UI effects, set up components, and manage the component registry. Use when adding Shadcn/ui to a Next.js project or installing specific UI components for Phase 2.