Optimizer en K8s
1. Introducción
Este manual ofrece la configuración necesaria para ejecutar nuestro servicio en un clúster Kubernetes utilizando MicroK8s sobre Ubuntu 24.04. El objetivo es compartir la configuración que utilizamos para poner en marcha el servicio en Kubernetes, facilitando la integración y personalización en otros entornos (por ejemplo, con balanceadores, etc.).
Nota: Nuestro propósito no es proporcionar una guía completa de instalación de MicroK8s, sino exponer nuestra configuración de referencia.
2. Instalación y Configuración de MicroK8s en Ubuntu Server 24.04
Ejecutar los siguientes comandos en la terminal para instalar y configurar MicroK8s:
sudo snap install microk8s --classic
sudo usermod -a -G microk8s $USER
newgrp microk8s
microk8s enable dns storage3. Preparacion de optimizer
Para poner en marcha el servicio, primero reúne en una única carpeta (p.e. uanatacaoptimizer_k8s) todos los recursos necesarios:
Manifiestos de Kubernetes y utilidades
Carpeta
deployments/: YAMLs de Deployment.Carpeta
services/: YAMLs de Service.Carpeta
utils/: Scripts de configuración del Optimizer en Kubernetes.
Datos de ejecución y la imagen del Optimizer
Carpeta
optimizer_data/: Datos de configuración del optimizer.Archivo
uanatacaoptimizer.tar.gz: Imagen del optimizer.
La estructura final debe ser:
uanatacaoptimizer_k8s
├── deployments/
├── services/
├── utils/
├── optimizer_data/
└── uanatacaoptimizer.tar.gz
Aquí os dejo algunos comandos que os pueden resultar de gran utilidad:
export PATH_OPTIMIZER="<RUTA DEL OPTIMIZER>"
export LINK_MANIFESTS="<LINK DE LOS MANIFESTOS DE K8S>"
export LINK_OPTIMIZER="<LINK DEL PAQUETE DEL OPTIMIZER>"
mkdir -p "$PATH_OPTIMIZER" && \
curl -fsSL "$LINK_MANIFESTS" -o /tmp/optimizer_k8s_manifests.zip && \
curl -fsSL "$LINK_OPTIMIZER" -o /tmp/optimizer_docker.zip && \
unzip /tmp/optimizer_k8s_manifests.zip -d "$PATH_OPTIMIZER" && \
unzip /tmp/optimizer_docker.zip "optimizer_data/*" "uanatacaoptimizer.tar.gz" -d "$PATH_OPTIMIZER" && \
rm -f /tmp/opt_manifests.zip /tmp/opt_docker.zip4. Importación de la Imagen en MicroK8s
Una vez configurado MicroK8s, importa la imagen de nuestro servicio desde el archivo de imagen:
microk8s ctr image import /opt/k8s/uanatacaoptimizer_k8s/uanatacaoptimizer.tar.gz #ruta_de_la_imagenNota: Asegúrate de que la ruta y el nombre del archivo sean correctos. Este comando carga la imagen en el repositorio local de MicroK8s.
5. Configuración previa: mapeo de volúmenes
Antes de desplegar, ejecuta el siguiente script para generar el manifiesto con la ruta absoluta del volumen:
bash /opt/k8s/uanatacaoptimizer_k8s/hostpath_generator.sh
6. Configuraciones de puertos (opcional)
Si deseas modificar la configuración de los puertos que utiliza el servicio, debes editar el archivo de configuración del servicio:
/opt/k8s/uanatacaoptimizer_k8s/services/optimizer-service.yaml
Dentro de este archivo se especifican dos puertos principales mediante la propiedad nodePort:
name: http80port -> para tráfico HTTP. (Por defecto: 30080)
name: https443port -> para tráfico HTTPS. (Por defecto: 30443)
7. Despliegue del optimizer
Para iniciar el optimizer, se deben aplicar los manifiestos de Kubernetes (se recomienda organizar la configuración en carpetas como deployments/ y services/):
microk8s kubectl apply -f /opt/k8s/uanatacaoptimizer_k8s/deployments/
microk8s kubectl apply -f /opt/k8s/uanatacaoptimizer_k8s/services/Estos comandos crean los recursos necesarios que configuran y exponen el servicio en el clúster
(similar a ejecutar docker-compose up -d en un entorno Docker).
El servicio queda expuesto en el puerto 30080 para HTTP y 30443 para HTTPS (se utilizan estos puertos específicos porque Kubernetes, por razones de seguridad, solo permite asignar puertos de tipo NodePort dentro del rango 30000–32767)
8. Eliminación del Servicio
Si se desea detener y eliminar todos los recursos desplegados, se puede ejecutar:
microk8s kubectl delete -f /opt/k8s/uanatacaoptimizer_k8s/deployments/
microk8s kubectl delete -f /opt/k8s/uanatacaoptimizer_k8s/services/Este procedimiento elimina los recursos creados en el clúster, similar a ejecutar docker-compose down en un entorno Docker.
9. Consulta de la versión del manifiesto y de la imagen del Optimizer
Para verificar la versión del manifiesto desplegado y la imagen actualmente utilizada por el servicio optimizer en el clúster Kubernetes, puedes utilizar los siguientes comandos:
Consultar la versión del manifiesto:
microk8s kubectl get deployments -o=jsonpath='{.items[*].metadata.annotations.manifest-version}' && echoConsultar la imagen del contenedor utilizada por el Deployment:
microk8s kubectl get deployment optimizer -o=jsonpath='{.spec.template.spec.containers[*].image}' && echo
10. Conclusión
Este ejemplo de configuración se proporciona como guía para poner en marcha nuestro servicio en Kubernetes utilizando MicroK8s. Puedes utilizarlo como base y adaptarlo según las especificaciones de tu entorno o requerimientos adicionales.