warbler-cda / k8s /docker-desktop-k8s-setup.md
Bellok's picture
trying again (#2)
5d2d720 verified
|
raw
history blame
4.17 kB

Docker Desktop + Kubernetes Setup for Warbler CDA

Since you're using Docker, you can test the Kubernetes deployment locally using Docker Desktop's built-in Kubernetes feature.

Prerequisites

  1. Enable Kubernetes in Docker Desktop:

    • Open Docker Desktop
    • Go to Settings → Kubernetes
    • Check "Enable Kubernetes"
    • Apply & Restart
  2. Verify Kubernetes is running:

    kubectl cluster-info
    kubectl get nodes
    

Quick Start with Docker Desktop K8s

Option 1: Use the deployment script

cd k8s
./deploy.sh

Option 2: Manual deployment

  1. Build and load image directly to Docker Desktop:
# Build the image
docker build -t warbler-cda:latest .

# The image is now available to K8s since Docker Desktop shares images
  1. Deploy to local Kubernetes:
cd k8s
kubectl apply -f .
  1. Check deployment:
kubectl get pods -n warbler-cda
kubectl get svc -n warbler-cda
kubectl get ingress -n warbler-cda
  1. Access the application:

Option A: Use port-forwarding (recommended for development)

kubectl port-forward svc/warbler-cda-service 8001:80 -n warbler-cda

Then visit: http://localhost:8001/health

Option B: Access via Ingress (requires ingress controller)

First, enable ingress in Docker Desktop and install NGINX Ingress:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.1/deploy/static/provider/cloud/deploy.yaml

Then update your ingress.yaml to use a local domain or use port forwarding.

Compare: Docker Compose vs Kubernetes

Feature Docker Compose Kubernetes
Scaling Manual replica adjustment Auto-scaling, rolling updates
Networking Simple service discovery Complex service mesh
Storage Local volumes Persistent volumes, storage classes
Health Checks Basic Liveness/readiness probes
Resource Limits Basic Detailed QoS, limits/requests
Environment Single host Multi-node clusters

Local Development Workflow

  1. Develop with Docker Compose (faster iteration):

    docker-compose up --build
    
  2. Test production deployment with Kubernetes:

    cd k8s && ./deploy.sh
    kubectl port-forward svc/warbler-cda-service 8001:80 -n warbler-cda
    
  3. Debug if needed:

    kubectl logs -f deployment/warbler-cda -n warbler-cda
    kubectl describe pod -n warbler-cda
    

Benefits of Docker Desktop Kubernetes

  • Same deployment as production - test your exact K8s manifests
  • Resource isolation - proper containerization like production
  • Networking simulation - test service communication
  • Storage testing - validate PVC behavior
  • Health check validation - ensure probes work correctly

Troubleshooting Docker Desktop K8s

Common issues:

  1. "ImagePullBackOff" error:

    • Make sure you built the image: docker build -t warbler-cda:latest .
    • Update deployment.yaml image to warbler-cda:latest
  2. PVC pending:

    • Docker Desktop K8s has storage classes, but storage might not provision immediately
    • Check: kubectl get pvc -n warbler-cda
    • You can use hostPath storage for local testing
  3. Ingress not working:

    • Install ingress controller first
    • Use port-forwarding for simpler local access
  4. Resource constraints:

    • Docker Desktop K8s shares resources with Docker
    • Reduce resource requests in deployment.yaml if needed

Converting Docker Compose to Kubernetes

Your docker-compose.yml has been converted to K8s with these mappings:

Docker Compose Kubernetes Equivalent
image: . deployment.yaml with image build step
ports: - "8001:8000" service.yaml + ingress.yaml
environment: configmap.yaml + envFrom
volumes: ./data:/app/data pvc.yaml + volumeMounts
restart: unless-stopped Deployment with replicas

The Kubernetes setup provides production-grade features while maintaining the same application behavior as your Docker Compose setup.