Runner
Un Runner de GitLab es una parte fundamental del sistema de CI/CD (Integración Continua y Entrega Continua) de GitLab. Funciona como una entidad que se encarga de ejecutar trabajos específicos definidos en los archivos .gitlab-ci.yml
. Los Runners permiten la automatización de tareas, pruebas y despliegues en un entorno de desarrollo, todo ello gestionado a través de GitLab. Aquí tienes algunas de sus características principales:
- Ejecución de trabajos: Los Runners ejecutan los trabajos definidos en los archivos
.gitlab-ci.yml
. Estos trabajos pueden incluir tareas como la construcción de código, pruebas unitarias, análisis estático de código y despliegues. - Multiplataforma: Los Runners son versátiles y pueden ejecutarse en una variedad de sistemas operativos y arquitecturas, lo que permite la compatibilidad con diferentes tipos de proyectos y entornos.
- Escalabilidad: Puedes configurar múltiples Runners para un solo proyecto o incluso para varios proyectos, lo que permite escalar y distribuir la carga de trabajo según sea necesario.
- Docker: Los Runners de GitLab son compatibles con Docker, lo que facilita la creación de entornos de prueba y despliegues de aplicaciones en contenedores.
- Seguridad: GitLab ofrece opciones avanzadas de seguridad para los Runners, lo que incluye autenticación y autorización seguras para garantizar que solo los usuarios autorizados puedan ejecutar trabajos en los Runners.
- Paralelismo: Los Runners pueden ejecutar trabajos en paralelo, lo que acelera el proceso de CI/CD al distribuir las tareas en varios Runners si es necesario.
- Personalización: Los Runners pueden ser configurados y personalizados para satisfacer las necesidades específicas de tu proyecto, lo que te permite definir entornos, variables de entorno y requisitos de ejecución personalizados.
- Monitorización y registro: GitLab proporciona herramientas de monitorización y registro para que puedas rastrear el estado y el rendimiento de tus Runners, lo que facilita la detección y solución de problemas.
- Escenarios de despliegue complejos: Los Runners permiten la automatización de flujos de trabajo complejos de CI/CD que abarcan múltiples etapas, desde la construcción hasta las pruebas y el despliegue en diferentes entornos.
Instalación
Official GitLab repositories
Para instalar un runner de GitLab, primero debemos agregar el repositorio oficial de GitLab a nuestro sistema. Esto se puede hacer ejecutando los siguientes comandos:
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash
Luego, instalamos el paquete del runner de GitLab con el siguiente comando:
sudo apt-get install gitlab-runner
Una vez instalado, podemos verificar que el runner se haya instalado correctamente ejecutando:
gitlab-runner --version
Esto debería mostrar la versión del runner de GitLab que acabamos de instalar.
Registro del Runner
Para registrar el runner, necesitamos un token de registro que podemos obtener desde la interfaz de usuario de GitLab. Este token se encuentra en la sección de configuración del proyecto o grupo donde queremos registrar el runner.
Una vez que tengamos el token, podemos proceder a registrar el runner. Para ello, ejecutamos el siguiente comando:
sudo gitlab-runner register --url https://gitlab.com --token glrt-1G9u9XWWFnAeQPSH8KXXXXXXXXXXXwFw.01.1i1rubub7
Kubernetes
Para proceder a la instalacion del runner de GitLab en nuestra plataforma como con otras herramientas primero necesitamos revisar el values yaml en el siguiente repo https://gitlab.com/gitlab-org/charts/gitlab-runner/blob/main/values.yaml, para asi poder ver los valores que deseamos utilizar en nuestro despliegue.
Luego procedemos a crear uno propio o copiar el anterior.
Debemos agregar al yaml el token que obtenemos de gitlab para registrar el runner en nuestro cluster
runnerRegistrationToken: "glrt-FQX6FNEB6_vNUQkxnQFt"
Tambien procedemos a agregar las siguientes configuraciones para poder tener la cache y el docker in docker habilitados
config: |
[[runners]]
[runners.kubernetes]
namespace = "namespace del gitlab-runner"
image = "ubuntu:latest"
[[runners.kubernetes.volumes.host_path]]
name = "docker-socket"
mount_path = "/var/run/docker.sock"
read_only = false
host_path = "/var/run/docker.sock"
[runners.cache]
Type = "s3"
Shared = true
[runners.cache.s3]
ServerAddress = "S3_ADDRESS"
AccessKey = "ACCESSKEY"
SecretKey = "SECRETKEY"
BucketName = "BUCKETNAME"
BucketLocation = "BUCKET_LOCATION"
Insecure = false
Una vez configurado el archivo, proceder con la instalación utilizando Helm:
helm repo add gitlab https://charts.gitlab.io
helm upgrade --install -n gitlab-runner gitlab-runner -f values.yaml gitlab/gitlab-runner --create-namespace
Detalles del comando anterior:
-- install
permite instalar Harbor si no está instalado, o actualizarlo si ya existe.--create-namespace
crea el namespacegitlab-runner
en Kubernetes si no existe.-f values.yaml
indica el archivo de configuración personalizado que se utilizará para la instalación.-n gitlab-runner
es el nombre del namespace donde se instalará el runner de GitLab.