Skip to main content

Local Development Features Matrix

Platform Support Comparison

PlatformStatusSetup TimeResource UsageBest For
kind✅ Recommended<5minLow (2GB RAM)Development, CI/CD
Docker Desktop✅ Available<2minMedium (4GB RAM)Easy Windows/Mac setup
minikube✅ Available<10minMedium (4GB RAM)Feature testing
k3s✅ Available<3minVery Low (1GB RAM)Resource-constrained

Platform Component Compatibility

ComponentkindDocker Desktopminikubek3sImplementation
IngressNGINX Ingress Controller
LoadBalancer⚠️ MetalLB✅ Native✅ Tunnel⚠️ ServiceLBPlatform-specific
Storage✅ hostPath✅ hostPath✅ hostPath✅ local-pathDynamic provisioning
DNS✅ hosts file✅ hosts file✅ hosts file✅ hosts fileLocal domain mapping
Secrets✅ K8s native✅ K8s native✅ K8s native✅ K8s nativeKubernetes secrets
Registry✅ Local✅ Local✅ Local✅ LocalDocker registry
MonitoringPrometheus + Grafana

Development Features

FeatureStatusDescriptionUse Case
Hot Reload✅ AvailableLive code updatesRapid development
Port Forwarding✅ AvailableDirect service accessDebugging
Volume Mounts✅ AvailableLocal file mountingDevelopment workflow
Debug Mode✅ AvailableEnhanced debugging toolsTroubleshooting
Multi-Environment✅ Availabledev/test/staging configsEnvironment testing
GitOps Simulation✅ AvailableLocal Git repositoryGitOps workflow testing

Resource Requirements

Minimum Requirements

PlatformRAMCPUDiskStartup Time
kind2GB2 cores10GB30 seconds
Docker Desktop4GB2 cores15GB60 seconds
minikube4GB2 cores20GB90 seconds
k3s1GB1 core5GB15 seconds
PlatformRAMCPUDiskConcurrent Apps
kind8GB4 cores30GB5-10
Docker Desktop12GB4 cores50GB3-8
minikube8GB4 cores40GB3-8
k3s4GB2 cores20GB10-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

MethodConfigurationProsCons
hosts fileManual entriesSimple, reliableManual management
dnsmasqWildcard domainsDynamic, flexiblePlatform-specific setup
Port forwardingkubectl commandsNo DNS neededMultiple 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 TypePerformancePersistenceUse Case
hostPathHigh❌ Pod restartTemporary data
local-pathHigh✅ Node restartDevelopment PVs
NFSMedium✅ Cluster restartShared storage
ExternalVariable✅ Full persistenceProduction simulation

Monitoring & Observability

Available Tools

ToolStatusAccess MethodUse Case
Prometheus✅ DeployedPort forward :9090Metrics collection
Grafana✅ Deployedhttps://grafana.local.orchestr8.ioDashboards
ArgoCD✅ Deployedhttps://argocd.local.orchestr8.ioGitOps monitoring
Kubernetes Dashboard🚧 OptionalPort forward :8443Cluster overview
Jaeger🚧 OptionalPort forward :16686Distributed 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

LanguageToolConfigurationReload Time
Node.jsnodemonVolume mount + watch<2 seconds
PythonwatchdogFlask/Django dev server<3 seconds
GoairBinary rebuild<5 seconds
JavaSpring DevToolsClasspath monitoring<10 seconds

Debugging Features

FeatureAvailabilityConfigurationNotes
Remote debugging✅ All platformsPort forwardingLanguage-specific
Log streaming✅ All platformskubectl logs -fReal-time logs
Shell access✅ All platformskubectl exec -itContainer debugging
Network debugging✅ All platformskubectl port-forwardService testing

Limitations & Workarounds

Common Limitations

LimitationImpactWorkaround
No cloud servicesExternal integrationsMock services or tunnels
Single nodeHA testing limitedMulti-node kind clusters
Resource constraintsLarge workloadsSelective service deployment
Networking complexityService accessPort 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

  1. Platform: Start with Docker Desktop (Windows/Mac) or kind (Linux)
  2. Resources: Allocate 8GB RAM minimum
  3. Setup: Use o8 setup --provider local for quick start
  4. Learning: Deploy sample applications first

For Experienced Teams

  1. Platform: Use kind for consistency with CI/CD
  2. Configuration: Custom values files for team standards
  3. Automation: Script cluster creation and teardown
  4. Integration: Connect to external services via tunnels

For Resource-Constrained Environments

  1. Platform: Use k3s for minimal footprint
  2. Services: Deploy only essential components
  3. Optimization: Use resource limits and requests
  4. Monitoring: Basic metrics only

Ready to start? See the Local Setup Guide for step-by-step instructions.