Introduction
Kompose bridges the gap between Docker Compose and Kubernetes. Teams that prototyped with Compose can migrate to Kubernetes without manually rewriting manifests, letting Kompose handle the translation of services, volumes, and networks into native K8s resources.
What Kompose Does
- Converts docker-compose.yml into Kubernetes Deployments and Services
- Maps Compose volumes to PersistentVolumeClaims automatically
- Supports output as standard YAML, Helm charts, or OpenShift resources
- Handles Compose v2 and v3 file formats including build directives
- Provides a
kompose upshortcut that converts and deploys in one step
Architecture Overview
Kompose is a Go CLI that parses Docker Compose files using the official Compose library, builds an intermediate object model, then transforms each service into the corresponding Kubernetes resource types. A provider abstraction allows swapping the output target between Kubernetes, OpenShift, and Helm.
Self-Hosting & Configuration
- Single binary install with no dependencies on Docker or Compose CLI
- Add labels like
kompose.service.type: LoadBalancerin Compose to customize output - Control replica count with
kompose.service.replicaslabel - Use
--volumes hostPathflag for local dev orpersistentVolumeClaimfor production - Integrate into CI to auto-generate manifests from a Compose source of truth
Key Features
- Official Kubernetes SIG project maintained under kubernetes/kompose
- Outputs Helm v3 charts with
--chartflag for templated deployments - Supports OpenShift DeploymentConfig and Route generation
- Preserves environment variables, secrets, and config references
- Handles depends_on ordering with init containers when needed
Comparison with Similar Tools
- kubectl create — manual manifest writing, no Compose import path
- Docker Desktop K8s — runs Compose on K8s but not portable manifests
- Podman Compose — runs Compose files natively, doesn't produce K8s YAML
- Helm — template engine for K8s, but requires writing charts from scratch
- Skaffold — dev workflow tool, doesn't convert Compose to manifests
FAQ
Q: Does Kompose support Compose v3 deploy keys?
A: Yes. It maps deploy.replicas, resource limits, and restart policies to equivalent Kubernetes spec fields.
Q: Can I customize the generated Kubernetes resource names?
A: Yes. Use Compose labels prefixed with kompose. to override service type, expose settings, image pull policy, and more.
Q: Will Kompose handle my build directives?
A: Kompose converts the runtime configuration. Build directives are noted but you still need a separate image build step like docker build or Kaniko.
Q: Is Kompose suitable for production migrations? A: It is a great starting point. Review the generated manifests and tune resource requests, health checks, and ingress rules for production readiness.