Saltar al contenido

Manifiesto docker-compose a Kubernetes

Convierte servicios docker-compose en manifiestos Kubernetes Deployment y Service.

Entrada
Salida

Manifiesto docker-compose a Kubernetes

Pega un archivo docker-compose.yml y esta herramienta convierte cada servicio en manifiestos Kubernetes listos para aplicar: un Deployment y, cuando el servicio publica un puerto, un Service correspondiente. Está diseñada para desarrolladores que trasladan una pila basada en Compose a un cluster, redactan un Helm chart a mano, o simplemente quieren un primer borrador del YAML en lugar de escribir cada campo desde cero.

Establece un espacio de nombres y etiquetas comunes para aplicar a cada recurso generado, y elige cuántas réplicas debe ejecutar cada Deployment. Los puertos se convierten en un Service ClusterIP o NodePort según lo que elijas, las variables de entorno se convierten en un ConfigMap o un Secret, y los volúmenes se convierten en un PersistentVolumeClaim o un emptyDir, según cómo planees ejecutar la carga de trabajo. Activa los sondeos de disponibilidad y permanencia para añadir una verificación TCP básica contra el primer puerto del contenedor, y activa la generación de Ingress para exponer servicios con puertos fuera del cluster.

Los límites de cpus y memoria de Compose bajo deploy.resources se traducen al formato de cantidad propio de Kubernetes: 0.5 cpus se convierten en 500m, 512M se convierte en 512Mi, y cada plantilla de pod generada obtiene restartPolicy: Always, el único valor que acepta un Deployment. Un servicio sin image, ports o volumes aún genera un Deployment mínimo. Un archivo sin una sección top-level services:, o YAML que no se analiza correctamente, devuelve un error claro que nombra la línea en lugar de un resultado en blanco.

Todo se ejecuta en tu navegador: el archivo compose nunca abandona tu dispositivo, así que es seguro pegar la configuración de producción. Copia los manifiestos generados, descárgalos como archivo .txt, o envía el resultado directamente de vuelta a la entrada para seguir refinando el espacio de nombres, las etiquetas o el número de réplicas.

Preguntas frecuentes

¿Admite la sintaxis larga de Compose para puertos y volúmenes?
Sí. Junto a cadenas cortas como "8080:80" o "data:/var/lib/data", también se leen puertos y volúmenes escritos como asignaciones (target, published, source).
¿Por qué cada pod obtiene restartPolicy: Always?
Un pod template de Deployment solo acepta ese valor: un controlador, no el runtime del contenedor, decide cómo reaccionar ante un contenedor fallido, por lo que la configuración de reinicio propia de Compose no puede llevarse uno a uno.
¿Puede generar un Ingress para un servicio sin puerto?
No. Los manifiestos de Service e Ingress solo se crean para servicios que publican al menos un puerto en Compose, ya que no hay nada a lo que enrutar el tráfico de lo contrario.
¿Qué sucede con los límites de memoria y CPU?
El bloque deploy.resources de Compose se convierte en cantidades de recursos de Kubernetes: los valores de CPU decimales se convierten en millicores (0.5 → 500m) y las unidades de memoria como M o G se convierten en Mi o Gi.
¿Se carga mi archivo docker-compose en algún lugar?
No. La conversión se ejecuta completamente en tu navegador: tu archivo compose y su contenido nunca abandonan tu dispositivo.