Descubriendo Auto DevOps

 

Desde hace tiempo, en ASPgems estamos investigando sobre nuevas tecnologías que nos puedan abrir un abanico de opciones a la hora de desarrollar. Decidimos probar Gitlab como repositorio de proyectos y herramienta de integración continua. Esto nos llevó a querer indagar aún más sobre las posibilidades que ofrece esta plataforma para desarrollar.

Una de estas posibilidades es el Auto DevOps.

 

¿Qué es Auto DevOps?

Auto DevOps es una herramienta que ofrece Gitlab que permite desarrollar rápida y automáticamente la integración continua de un proyecto. Detecta, construye, prueba, despliega y supervisa automáticamente las aplicaciones. Todo esto se ve reflejado en entornos y tuberías automáticos que ayudan a una fácil visualización de errores.

Auto DevOps

 

Lo único que hay que hacer es subir el código al repositorio y esta herramienta revisará todo por ti. Además, contiene mucha documentación fácil de utilizar

 

Construcción y prueba

Antes de empezar, Auto DevOps requiere de algunas herramientas para funcionar:

  • Gitlab Runners. Es estrictamente necesario. Estos Runners pueden ser tanto propios como los públicos de Gitlab y tienen que estar configurados para utilizar Docker.
  • Un dominio base. Solamente si se quiere habilitar el despliegue automático.
  • Kubernetes. Solamente si se quiere habilitar el despliegue automático.
  • Prometheus. Solamente si se quiere habilitar la monitorización.

 

En primer lugar, el proyecto deberá tener un Dockerfile o utilizar una plantilla de Gitlab para poder construir todas las imágenes Docker necesarias.

Más tarde, necesitamos habilitar Auto DevOps en la configuración del proyecto.

Configuración -> CI / CD -> Auto DevOps

Una vez marcada la opción de utilizar Auto DevOps, debemos elegir la estrategia de despliegue que vamos a seguir:

  • Despliegue continuo hasta producción. Se desplegará lo que haya en master a producción.
  • Despliegue continuo hasta preproducción y manual desde preproducción hasta producción. Se desplegará el código de master a preproducción, permitiendo desplegar a producción manualmente.

Cuando hayamos decidido la estrategia, podremos utilizar Auto DevOps hasta la parte de pruebas, pero no podremos desplegar automáticamente.

 

Despliegue

Para empezar, necesitamos un cluster de kubernetes, ya sea nuevo o uno existente. Esto es muy fácil de hacer utilizando Gitlab.

Operaciones -> Kubernetes -> Añadir cluster de kubernetes -> Crear un nuevo cluster con GKE / Añadir un cluster existente

En caso de añadir un cluster existente, necesitaremos introducir la información correspondiente de nuestro cluster para conectarlo con Gitlab.

Después, instalaremos aplicaciones dentro del cluster. Las posibilidades son:

  • Helm Tiller. Para manejar Kubernetes.
  • Ingress. Da una manera de dirigir las peticiones a servicios basándose en la petición host o la ruta, centralizando todo en un solo punto de entrada.
  • Prometheus. Monitoriza el proyecto.
  • Gitlab Runner. Crea un Runner dentro del cluster.
  • JupyterHub. Permite múltiples instancias de un servidor de un usuario.

En este caso queremos Helm Tiller, Ingress y Prometheus para poder desplegar nuestro proyecto automáticamente a producción o preproducción.

Operaciones -> Kubernetes -> Mi_Cluster_De_Kubernetes -> Aplicaciones

Por último, nos dirigimos a la configuración de Gitlab para establecer el dominio.

Configuración -> CI / CD -> Auto DevOps -> Dominio

Este dominio es la dirección IP de Ingress mapeada con nip.io que nos sugiere debajo, algo así como xxx.xxx.xxx.xxx.nip.io.

 

Probando Auto DevOps

Auto DevOps crea una tubería y un entorno propio para cada rama del proyecto. Esto quiere decir que cada rama tendrá su propio entorno de revisión, permitiendo ver en tiempo real los todos los cambios subidos a esa rama. Como podemos ver en la imagen de abajo, tenemos el entorno de producción y un entorno de revisión para una rama.

 

Entornos de Auto DevOps

 

Además, cada vez que se suba el código tendrá que pasar por todos los análisis de la tubería.

 

Pipeline de Auto Devops

 

Otra posibilidad importante es la monitorización, permitiendo llevar un control visual sobre cada uno de los entornos existentes.

 

Monitorización de Auto DevOps

 

Por último, Auto DevOps es modificable desde el Dockerfile o Helm Tiller a los buildpacks. Incluso permite adaptar toda la integración continua a las necesidades de tu proyecto copiando y editando el .gitlab-ci.yml de Auto DevOps.

 

Si te ha gustado este artículo o tienes alguna duda puedes compartirla dejando tu comentario, o puedes rellenar el formulario de la derecha y nos pondremos en contacto contigo.