Runner
A GitLab Runner is a fundamental part of GitLab's CI/CD (Continuous Integration and Continuous Delivery) system. It functions as an entity that is responsible for executing specific jobs defined in the files .gitlab-ci.yml
. Runners allow the automation of tasks, tests and deployments in a development environment, all managed through GitLab. Here are some of its main features:
- Ejecución de trabajos: Los Runners ejecutan los trabajos definidos en los archivos
.gitlab-ci.yml
. These jobs may include tasks such as code building, unit testing, static code analysis and deployments. - Multi-platform: Runners are versatile and can run on a variety of operating systems and architectures, allowing compatibility with different types of projects and environments.
- Scalability: You can configure multiple Runners for a single project or even for multiple projects, allowing you to scale and distribute the workload as needed.
- 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.
- Security: GitLab offers advanced security options for Runners, including secure authentication and authorization to ensure that only authorized users can run jobs in Runners.
- Parallelism: Runners can run jobs in parallel, which speeds up the CI/CD process by distributing tasks across multiple Runners if necessary.
- Customization: Runners can be configured and customized to meet the specific needs of your project, allowing you to define custom environments, environment variables and execution requirements.
- 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.
Installation
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.
Then we proceed to create our own or copy the previous one.
We must add to the yaml the token we get from gitlab to register the runner in our cluster
runnerRegistrationToken: "glrt-FQX6FNEB6_vNUQkxnQFt"
We also proceed to add the following settings in order to have the cache and docker in docker enabled
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.