Kompose: Convertir de Docker a Kubernetes/OpenShift

Docker 11 de jun. de 2023

Evolución de trabajo con Docker

La evolución lógica trabajando con contenedores pasa por empezar a trabajar con contenedores básicos, mediante Docker y sus ficheros Dockerfile, luego pasar a Docker Compose para generar stacks (grupos de contenedores que forman parte de una aplicación) mediante el uso de los ficheros docker-compose.yml

El siguiente paso es pasar a usar un entorno que aporte Alta Disponibilidad, además de disponer de la posibilidad de que los contenedores sean escalables (varias instancias de los mismo) y se puedan ejecutar en uno o varios nodos de un Cluster.

Tenemos una versión sencilla para gestionar un cluster de contenedores mediante Docker Swarm y si queremos evolucionar más disponemos de Kubernetes y OpenShift.

El transformar un fichero de Docker Compose a un entorno de Kubernetes o de OpenShift es algo que puede ser complicado por la sintaxis utilizada, sin embargo disponemos de una herramienta Kompose que facilita la conversión de tus ficheros docker-compose.yml a la sintaxis de Kubernetes/Openshift.

Instalación de Kompose

La instalación en Linux, es bastante sencilla, simplemente ejecuta los siguientes comandos:

curl -L https://github.com/kubernetes/kompose/releases/download/v1.28.0/kompose-linux-amd64 -o kompose
chmod +x kompose
sudo mv kompose /usr/local/bin/

Uso de Kompose

Para trabajar con mayor limpieza con los ficheros a generar, debemos crear dos nuevos directorios dentro de nuestro proyecto, uno lo podemos llamar kubernetes y al otro openshift.

cd mi_proyecto_docker
mkdir kubernetes openshift
Creamos los 2 directorios donde quedaran los YAML generados

Dentro de ellos se generarán los ficheros YAML separados para cada tipo.

Transformar fichero para Kubernetes

Para tranformar un docker-compose.yml existente a los ficheros YAML necesarios para su uso en Kubernetes, simplemente nos pasaremos al directorio de kubernetes previamente creado y le indicaramos al comando kompose donde esta el fichero que debe leer:

kompose convert -f ../docker-compose.yml
El formato de conversion por defecto es Kubernetes
YAML creados para Kubernetes

Tranformar fichero para OpenShift

Para transformar nuestro fichero a OpenShift hay que indicarle como opción que el proveedor a usar es 'openshift'

kompose convert --provider openshift  -f ../docker-compose.yml 
YAML creados para OpenShift

Aplicar ficheros en Kubernetes y OpenShift

Con nuestros ficheros creados para Kubernetes y/o OpenShift, debemos revisar previamente los Warning que se nos han mostrado en la conversión, editaremos y revisaremos para ajustar cada uno de los YAML creados.

Ahora simplemente desde la shell procesaremos todos los ficheros generados para realizar el despliegue en Kubernetes o en OpenShift.

Tras haber realizado el login en Kubernetes/OpenShift y habernos cambiado al NameSpace/Project donde queramos ejecutar los YAML ejecutaremos el comando:

# KUBERNETES:
kubectl apply -f .

# OPENSHIFT:
oc apply -f .
Ejecutar desde el directorio de los YAML de Kubernetes o de OpenShift

Tienes toda la información necesaria en la web del proyecto de Kompose:

Kompose - Convert your Docker Compose file to Kubernetes or OpenShift
Convert your Docker Compose file to Kubernetes or OpenShift
Web Oficial del proyecto Kompose

Etiquetas

Luis GuLo

🐧 SysAdmin GNU/Linux - 🐳 Docker - 🖥️ Bash Scripting - 🐪 Perl - 🐬 MySQL - 👥 Formador de TI - 👥 Formador de SysAdmin's - 💢 Ansible - ☁️ Cloud Computing - ❤️ Debian GNU/Linux