Introducción
Este artículo es parte de la serie de píldoras para Product Managers que quieren tomarle el pulso a la tecnología, que puedan probarla, instalarla y demostrar sus capacidades.
Saber es poder
En Taniwa usamos máquinas en la nube dónde desplegamos nuestros propios productos (madriwa, mememtum, biolabeler, tanimage, etc) y otros tantos de algunos de nuestros clientes.
Desde hace tiempo nos dimos cuenta, como muchos otros, de que ibamos a vivir mejor (tener menos problemas y encima trabajar menos!!!) si tanto en el desarrollo como en nuestras operaciones de despliegue y mantenimiento utilizábamos:
- Contenedores.
- Integración continua.
- Despliegue continuo.
Y así lo hacemos, solo desplegamos aplicaciones en contenedores y de momento sin orquestador ninguno utilizando sólo docker-compose; y para la CI/CD utilizamos el servicio SaaS (GitLab).
El servicio GitLab es una herramienta estandar de DevOps que permite:
- Albergar el código de la aplicación en repositorios git.
- Ejecutar un conjunto de acciones llamado pipeline cuando ocurre algo en el código, para en primer lugar compilarlo, pasar los tests automáticos y construir la aplicación.
- Y después desplegar automáticamente esa aplicación en la mayoría de los proveedores de Cloud usados (Azure, AWS, GCloud, etc) o en tus propias máquinas.
Los pipelines se ejecutan en máquinas compartidas de la infraestructura de GitLab y no funcionan mal si no tienes demásiada urgencia en los despliegues y no eres muy paranoico con la seguridad.
Pero aunque no estemos muy obsesionados (en la seguridad por lo menos) en nuestro caso GitLab tiene que acceder a nuestras máquinas para desplegar nuestra aplicación, y para hacerlo con algo más de “privacidad” utilizamos los runners de GitLab.
GitLab Runner
GitLab Runner es una aplicación que se comunica con el sistema CI/CD de GitLab y es capaz de ejecutar los comandos de los pipelines que tiene asignados.
Puedes desplegar runners en la infraestructura de GitLab (runners manejados) pero también en tus propias máquinas. Los runner son aplicaciones open source escritas en Go, que además se pueden desplegar en contenedores (oeoeoe!!!)
Los pasos a seguir son:
- Lanzar el registro del runner con Gitlab
|
|
-
Te pide registrarlo para que se puedan ejecutar pipelines de un determinado proyecto o de un grupo de proyectos. Para ello te hay que introducir el token correspondiente que sale en la consola de GitLab (settings->ci/cd->runners).
-
También tienes que elegir un tipo de ejecutor, en nuestro caso “docker executor” pero dependiendo de tu instalación y necesidades hay otros (shell, ssh, virtual machine, kubernetes, etc)
-
Y por último configurar otros parámetros como número de jobs concurrentes, intervalo de chequear en gitlab si hay trabajos que realizar, timeouts sesión activa después de ejecutar un trabajo, etc.
Nuestro fichero de configuración del runner (/srv/gitlab-runner/config/config.toml) luce así:
|
|
- Lanzar el docker del runner en tú máquina
|
|
Variables Pipelines
Lo que vamos a hacer dentro de los pipelines de nuestras aplicaciones es ejecutarlos en el runner de una de nuestras máquinas y desde allí hacer ssh y desplegarlas en las máquinas que necesitemos.
Para ello tenemos que configurar las siguientes variables del pipeline (settings->ci/cd->runners))
|
|
Pipeline
Un pipeline de ejemplo de una de nuestras aplicaciones es el siguiente:
|
|
En el stage de build podemos ver que usamos
- Una imagen de docker:dind (docker in docker) para poder ejecutar las órdenes de docker (login, build y push)
- Las variables predefinidas de GitLab $CI_REGISTRY_USER $CI_JOB_TOKEN $CI_REGISTRY que nos permiten hacer login con el repositorio de contenedores que GitLab lleva integrado en cada proyecto (Packages & Registries -> Container Registry)
Por último en el stage de publish lo que hacemos es hacer ssh al servidor dónde va a correr la aplicación y lanzar el docker con la imagen de la misma a través de docker-compose.
Chupao!!! … si alguna vez llego a ser PM o Leader de un proyecto (que no creo) seguro que no me acuerdo de nada …
Ir a Madriwa | Encuentra el sitio que mejor se adapta a ti en Madrid