Local Development Features Matrix
Platform Support Comparison
| Platform | Status | Setup Time | Resource Usage | Best For |
|---|---|---|---|---|
| kind | ✅ Recommended | <5min | Low (2GB RAM) | Development, CI/CD |
| Docker Desktop | ✅ Available | <2min | Medium (4GB RAM) | Easy Windows/Mac setup |
| minikube | ✅ Available | <10min | Medium (4GB RAM) | Feature testing |
| k3s | ✅ Available | <3min | Very Low (1GB RAM) | Resource-constrained |
Platform Component Compatibility
| Component | kind | Docker Desktop | minikube | k3s | Implementation |
|---|---|---|---|---|---|
| Ingress | ✅ | ✅ | ✅ | ✅ | NGINX Ingress Controller |
| LoadBalancer | ⚠️ MetalLB | ✅ Native | ✅ Tunnel | ⚠️ ServiceLB | Platform-specific |
| Storage | ✅ hostPath | ✅ hostPath | ✅ hostPath | ✅ local-path | Dynamic provisioning |
| DNS | ✅ hosts file | ✅ hosts file | ✅ hosts file | ✅ hosts file | Local domain mapping |
| Secrets | ✅ K8s native | ✅ K8s native | ✅ K8s native | ✅ K8s native | Kubernetes secrets |
| Registry | ✅ Local | ✅ Local | ✅ Local | ✅ Local | Docker registry |
| Monitoring | ✅ | ✅ | ✅ | ✅ | Prometheus + Grafana |
Development Features
| Feature | Status | Description | Use Case |
|---|---|---|---|
| Hot Reload | ✅ Available | Live code updates | Rapid development |
| Port Forwarding | ✅ Available | Direct service access | Debugging |
| Volume Mounts | ✅ Available | Local file mounting | Development workflow |
| Debug Mode | ✅ Available | Enhanced debugging tools | Troubleshooting |
| Multi-Environment | ✅ Available | dev/test/staging configs | Environment testing |
| GitOps Simulation | ✅ Available | Local Git repository | GitOps workflow testing |
Resource Requirements
Minimum Requirements
| Platform | RAM | CPU | Disk | Startup Time |
|---|---|---|---|---|
| kind | 2GB | 2 cores | 10GB | 30 seconds |
| Docker Desktop | 4GB | 2 cores | 15GB | 60 seconds |
| minikube | 4GB | 2 cores | 20GB | 90 seconds |
| k3s | 1GB | 1 core | 5GB | 15 seconds |
Recommended for Development
| Platform | RAM | CPU | Disk | Concurrent Apps |
|---|---|---|---|---|
| kind | 8GB | 4 cores | 30GB | 5-10 |
| Docker Desktop | 12GB | 4 cores | 50GB | 3-8 |
| minikube | 8GB | 4 cores | 40GB | 3-8 |
| k3s | 4GB | 2 cores | 20GB | 10-15 |
Platform-Specific Features
kind (Kubernetes in Docker)
✅ Advantages
- Fast cluster creation and deletion
- Excellent CI/CD integration
- Multiple cluster support
- Exact Kubernetes behavior
⚠️ Limitations
- Requires MetalLB for LoadBalancer services
- No built-in dashboard
- Docker networking complexity
🔧 Best Practices
# Multi-node cluster for HA testing
kind create cluster --config multi-node.yaml
# Load local images efficiently
kind load docker-image my-app:latest
Docker Desktop Kubernetes
✅ Advantages
- Native LoadBalancer support
- Integrated with Docker Desktop UI
- Easy file sharing with host
- Built-in Kubernetes dashboard
⚠️ Limitations
- Higher resource usage
- Windows/Mac only
- Single cluster limitation
🔧 Best Practices
# Enable Kubernetes in Docker Desktop
# Settings > Kubernetes > Enable Kubernetes
# Use localhost for services
kubectl port-forward svc/my-service 8080:80
minikube
✅ Advantages
- Rich addon ecosystem
- VM isolation options
- Multi-driver support (Docker, VirtualBox, etc.)
- Built-in dashboard and monitoring
⚠️ Limitations
- Slower startup time
- VM overhead
- Complex networking setup
🔧 Best Practices
# Use Docker driver for speed
minikube start --driver=docker --memory=8192
# Enable useful addons
minikube addons enable ingress dashboard metrics-server
k3s
✅ Advantages
- Minimal resource footprint
- Edge/IoT optimized
- Built-in components (Traefik, ServiceLB)
- Fast startup
⚠️ Limitations
- Different from standard Kubernetes
- Limited ecosystem
- Less debugging tools
🔧 Best Practices
# Install with custom config
curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig-mode 644
# Disable Traefik if using NGINX
k3s server --disable traefik
Networking Options
Local Domain Access
| Method | Configuration | Pros | Cons |
|---|---|---|---|
| hosts file | Manual entries | Simple, reliable | Manual management |
| dnsmasq | Wildcard domains | Dynamic, flexible | Platform-specific setup |
| Port forwarding | kubectl commands | No DNS needed | Multiple terminal windows |
Example hosts file entries:
# /etc/hosts (Linux/Mac) or C:\Windows\System32\drivers\etc\hosts (Windows)
127.0.0.1 argocd.local.orchestr8.io
127.0.0.1 keycloak.local.orchestr8.io
127.0.0.1 grafana.local.orchestr8.io
127.0.0.1 *.local.orchestr8.io # Wildcard (not supported in hosts file)
Storage Options
| Storage Type | Performance | Persistence | Use Case |
|---|---|---|---|
| hostPath | High | ❌ Pod restart | Temporary data |
| local-path | High | ✅ Node restart | Development PVs |
| NFS | Medium | ✅ Cluster restart | Shared storage |
| External | Variable | ✅ Full persistence | Production simulation |
Monitoring & Observability
Available Tools
| Tool | Status | Access Method | Use Case |
|---|---|---|---|
| Prometheus | ✅ Deployed | Port forward :9090 | Metrics collection |
| Grafana | ✅ Deployed | https://grafana.local.orchestr8.io | Dashboards |
| ArgoCD | ✅ Deployed | https://argocd.local.orchestr8.io | GitOps monitoring |
| Kubernetes Dashboard | 🚧 Optional | Port forward :8443 | Cluster overview |
| Jaeger | 🚧 Optional | Port forward :16686 | Distributed tracing |
Resource Monitoring
# Built-in Kubernetes metrics
kubectl top nodes
kubectl top pods --all-namespaces
# Custom metrics with Prometheus
curl http://localhost:9090/api/v1/query?query=up
Development Workflow Support
Hot Reload Configuration
| Language | Tool | Configuration | Reload Time |
|---|---|---|---|
| Node.js | nodemon | Volume mount + watch | <2 seconds |
| Python | watchdog | Flask/Django dev server | <3 seconds |
| Go | air | Binary rebuild | <5 seconds |
| Java | Spring DevTools | Classpath monitoring | <10 seconds |
Debugging Features
| Feature | Availability | Configuration | Notes |
|---|---|---|---|
| Remote debugging | ✅ All platforms | Port forwarding | Language-specific |
| Log streaming | ✅ All platforms | kubectl logs -f | Real-time logs |
| Shell access | ✅ All platforms | kubectl exec -it | Container debugging |
| Network debugging | ✅ All platforms | kubectl port-forward | Service testing |
Limitations & Workarounds
Common Limitations
| Limitation | Impact | Workaround |
|---|---|---|
| No cloud services | External integrations | Mock services or tunnels |
| Single node | HA testing limited | Multi-node kind clusters |
| Resource constraints | Large workloads | Selective service deployment |
| Networking complexity | Service access | Port forwarding or ingress |
Performance Considerations
- CPU/Memory: Adjust resource limits based on host capacity
- Storage: Use SSD for better I/O performance
- Network: Consider Docker network driver performance
- Image pulls: Use local registry to avoid internet dependencies
Getting Started Recommendations
For New Developers
- Platform: Start with Docker Desktop (Windows/Mac) or kind (Linux)
- Resources: Allocate 8GB RAM minimum
- Setup: Use
o8 setup --provider localfor quick start - Learning: Deploy sample applications first
For Experienced Teams
- Platform: Use kind for consistency with CI/CD
- Configuration: Custom values files for team standards
- Automation: Script cluster creation and teardown
- Integration: Connect to external services via tunnels
For Resource-Constrained Environments
- Platform: Use k3s for minimal footprint
- Services: Deploy only essential components
- Optimization: Use resource limits and requests
- Monitoring: Basic metrics only
Ready to start? See the Local Setup Guide for step-by-step instructions.