Moving from Docker Compose to Kubernetes gives you better scaling, self-healing, and production-grade orchestration. This guide walks through converting a Compose setup to Kubernetes manifests.
Understand the Mapping
- services become Deployments and Services
- volumes become PersistentVolumeClaims
- environment variables become ConfigMaps or Secrets
- ports become Service definitions with type ClusterIP, NodePort, or LoadBalancer
Use Kompose for Automated Conversion
curl -L https://github.com/kubernetes/kompose/releases/latest/download/kompose-linux-amd64 -o kompose
chmod +x kompose && sudo mv kompose /usr/local/bin/
cd /path/to/your/docker-compose
kompose convert
This generates Kubernetes YAML files for each service defined in your Compose file.
Review and Adjust
Kompose output is a starting point. You should adjust the generated manifests:
# Add resource limits
resources:
requests:
memory: "256Mi"
cpu: "250m"
limits:
memory: "512Mi"
cpu: "500m"
Deploy to Your Cluster
kubectl apply -f .
kubectl get pods
kubectl get svc
Key Differences to Handle
- Replace
depends_onwith readiness probes and init containers - Convert bind mounts to PersistentVolumeClaims for stateful data
- Use Kubernetes Secrets for sensitive environment variables
- Add health checks (liveness and readiness probes) to all containers