GitLab Runners
Gitlab Runner es una aplicación que trabaja con GitLab CI/CD para ejecutar trabajos en una proceso de CI/CD1.
Cuando los desarrolladores envían código a GitLab, pueden definir tareas automatizadas en un archivo .gitlab-ci.yml.
Estas tareas pueden incluir ejecutar pruebas, compilar aplicaciones o desplegar código.
GitLab Runner es la aplicación (que puede estar en un contenedor, una máquina virtual o un servidor físico)
que ejecuta estas tareas.
Como ANDES, proporcionamos los Gitlab Runner y gestionamos la infraestructura donde se ejecutan estos trabajos de CI/CD. El equipo de CoreOps provee y mantiene algunos runners para casos específicos.
Etiquetas de GitLab Runner
Las etiquetas de GitLab Runner son identificadores usados para controlar qué runners específicos pueden ejecutar determinadas tareas en un pipeline de CI/CD.
Un runner debe tener todas las etiquetas definidas en la configuración YAML del job para poder ejecutarlo.
Conceptos clave:
- Lógica de selección de tareas: Para que una tarea sea tomada por un runner, este debe poseer cada una de las
etiquetas listadas en la sección
tagsdel archivo.gitlab-ci.yml.tipFunciona como una condición de tipo “Y”, no “O”.
- Propósito: Las etiquetas permiten diferenciar runners según sus capacidades, entornos o plataformas
(por ejemplo,
docker,macos,windows,gpu,testing-environment,ci,cd, entre otros). - Tareas sin etiquetas: Los runners pueden configurarse para ejecutar tareas que no tengan etiquetas
(tareas sin etiquetar).
tip
Los runners LATAM no están configurados para ejecutar tareas sin etiquetas.
- Etiquetas de GitLab CI/CD vs. etiquetas de Git: Las etiquetas de GitLab CI/CD son distintas de las etiquetas de Git, que se usan para marcar puntos específicos en el historial del repositorio (como lanzamientos).
Tipos de Runners en GitLab
Existen 2 tipos de Runners en GitLab:
- Runners Compartidos: Son Runners disponibles para todos los proyectos dentro de una instancia de GitLab.
peligro
En LATAM Airlines se definió que los Shared Runners no sean utilizados, por lo que estos no tienen acceso a ningún recurso de la organización.
- Runners Dedicados: Son Runners auto-gestionados disponibles en proyectos o grupos específicos, se identifican con etiquetas (tags) personalizadas para su uso.
Runners en ANDES
-
Todos son runners dedicados.
-
Cada runner utiliza una cuenta de servicio de Google (SA2) específica.
- Estas cuentas de servicio permiten la interacción con diferentes recursos de GCP3 mediante la Federación de identidad de carga de trabajo (Workload Identity Federation).
- Para que un runner pueda acceder a recursos en un proyecto específico de GCP, debes asignarle el rol adecuado a la
cuenta de servicio correspondiente en el proyecto.
- Roles a incorporar:
- Rol Base:
iam.serviceaccounts.actAs - Roles para desplegar:
- Cloud Run: Cloud Run Admin (
roles/run.admin) - Cloud Function: Cloud Functions Admin (
roles/cloudfunctions.admin) - GKE:
- Kubernetes Engine Admin (
roles/container.admin) - Kubernetes Engine Cluster Admin (
roles/container.clusterAdmin)
- Kubernetes Engine Admin (
- Storage:
- Storage Admin (
roles/storage.admin) - Storage Object Admin (
roles/storage.objectAdmin)
- Storage Admin (
- Cloud Run: Cloud Run Admin (
- Rol Base:
- Para más información sobre los roles disponibles en GCP, consulta la documentación de roles y permisos en GCP.
- Roles a incorporar:
-
Cada runner se identifica con uno o más etiquetas (tags).
- Para obtener más información sobre cómo usar etiquetas para asignar trabajos a runners específicos en GitLab, puedes visitar la documentación oficial de GitLab.
- Disponibles en el repositorio latamairlines/gitlab/config directorio
group_runner
Existe distintas versiones de runners disponibles en distintos grupos de https://gitlab.com/latamairlines/
Runners por dominio de negocio
Todos estos runner se ejecutan sobre Kubernetes. Esta versión del Runner es versátil y permite la ejecución de múltiples jobs a través pods que pueden correr en paralelo. Este tipo de runners es compatible con la mayoría de los requerimientos de ejecución de tareas de CI/CD en LATAM.
Acá se ejecutarán
- Tareas para compilación y construcción de artefactos
- Tareas para ejecutar migraciones de bases de datos
- Tareas para ejecutar procesos programados
- Tareas de Tests compatibles con contenedores
- Tareas de Validaciones
- Tareas de Impresión de Resultados
- Tareas de tipo Gates
A continuación, se muestran las etiquetas correspondientes a cada unidad de negocio:
| Sub-Grupo en Gitlab | Etiqueta del Runner | Cuenta de Servicio GCP |
|---|---|---|
| latamairlines/config | latam-0_config | gcp-sa-0-config@sp-te-cloudbees-prod-f4q0.iam.gserviceaccount.com |
| latamairlines/0-ltm | latam-0_ltm | |
| latamairlines/cyse | latam-cyse | gcp-sa-cyse@sp-te-cloudbees-prod-f4q0.iam.gserviceaccount.com |
| latamairlines/data | latam-data | gcp-sa-data@sp-te-cloudbees-prod-f4q0.iam.gserviceaccount.com |
| latamairlines/lyca | latam-lyca | gcp-sa-lyca@sp-te-cloudbees-prod-f4q0.iam.gserviceaccount.com |
| latamairlines/oper | latam-oper | gcp-sa-oper@sp-te-cloudbees-prod-f4q0.iam.gserviceaccount.com |
| latamairlines/paxc | latam-paxc | gcp-sa-paxc@sp-te-cloudbees-prod-f4q0.iam.gserviceaccount.com |
| latamairlines/shse | latam-shse | gcp-sa-shse@sp-te-cloudbees-prod-f4q0.iam.gserviceaccount.com |
| latamairlines/tech | latam-tech | gcp-sa-tech@sp-te-cloudbees-prod-f4q0.iam.gserviceaccount.com |
Runners con tag latam-emx-kubernetes disponible para el grupo
latamairlines/oper/emx y sus subgrupos,
es administrado directamente por el Equipo de Plataforma de eMantto.
Runners para dind4
En caso de que se deban ejecutar trabajos que requieran el uso de runners con Docker-in-Docker, se debe utilizar la siguiente etiqueta:
| Grupo en Gitlab | Etiqueta del Runner | Cuenta de Servicio GCP |
|---|---|---|
latamairlines | latam-docker | gcp-sa-latamairlines@sp-te-cloudbees-prod-f4q0.iam.gserviceaccount.com |
Este runner se encuentra a nivel de organización y es compartido por todas las unidades de negocio.
Runners por dominio at-core
Estos runners contienen todos la etiqueta andes y se crean por dominio at-core en la siguiente estructura:
ci-amd64: Tareas de integración continua, sobre arquitectura AMD64. Se crean 3 tamaños:smallmediumlarge
cd: Tareas de entrega continua. Se crean en 1 tamaño, pero separando entornos pre-productivo y productivos:preprodPara despliegues en todo entorno pre-productivo.prod: Para despliegues en producción.
| Runner Name | Sub-Grupo en Gitlab | Etiquetas del Runner | Cuenta de Servicio GCP | Descripción |
|---|---|---|---|---|
andes-cd-medium-preprod | latamairlines/andes | andes, cd, medium, preprod | run-andes-cd-preprod-m-prod-sa@latam-platform-prod-f7eb.iam.gserviceaccount.com | Runner medium para deploy preprod en ANDES |
andes-cd-medium-prod | latamairlines/andes | andes, cd, medium, prod | run-andes-cd-prod-m-prod-sa@latam-platform-prod-f7eb.iam.gserviceaccount.com | Runner medium para deploy prod en ANDES |
andes-ci-large | latamairlines/andes | andes, ci-amd64, large, prod | run-andes-ci-l-prod-sa@latam-platform-prod-f7eb.iam.gserviceaccount.com | Runner large para integracion prod en ANDES |
andes-ci-medium | latamairlines/andes | andes, ci-amd64, medium, prod | run-andes-ci-m-prod-sa@latam-platform-prod-f7eb.iam.gserviceaccount.com | Runner medium para integracion prod en ANDES |
andes-ci-small | latamairlines/andes | andes, ci-amd64, prod, small | run-andes-ci-s-prod-sa@latam-platform-prod-f7eb.iam.gserviceaccount.com | Runner small para integracion prod en ANDES |
andes-components-cd-medium-preprod | latamairlines/config/andes | andes, platforms, medium, cd, preprod | run-comp-cd-preprod-m-prod-sa@latam-platform-prod-f7eb.iam.gserviceaccount.com | Runner medium para deploy preprod en ANDES components |
andes-components-cd-medium-prod | latamairlines/config/andes | andes, platforms, medium, cd, prod | run-comp-cd-prod-m-prod-sa@latam-platform-prod-f7eb.iam.gserviceaccount.com | Runner medium para deploy prod en ANDES components |
andes-components-ci-large | latamairlines/config/andes | andes, platforms, large, ci-amd64 | run-comp-ci-l-prod-sa@latam-platform-prod-f7eb.iam.gserviceaccount.com | Runner large para CI en ANDES components |
andes-components-ci-medium | latamairlines/config/andes | andes, platforms, medium, ci-amd64 | run-comp-ci-m-prod-sa@latam-platform-prod-f7eb.iam.gserviceaccount.com | Runner medium para CI en ANDES components |
andes-components-ci-small | latamairlines/config/andes | andes, platforms, small, ci-amd64 | run-comp-ci-s-prod-sa@latam-platform-prod-f7eb.iam.gserviceaccount.com | Runner small para CI en ANDES components |
andes-ebusiness-cd-medium-preprod | latamairlines/paxc/ebz | andes, ebusiness, medium, cd, preprod | run-ebiz-cd-preprod-m-prod-sa@latam-platform-prod-f7eb.iam.gserviceaccount.com | Runner medium para deploy preprod en ebusiness |
andes-ebusiness-cd-medium-prod | latamairlines/paxc/ebz | andes, ebusiness, medium, cd, prod | run-ebiz-cd-prod-m-prod-sa@latam-platform-prod-f7eb.iam.gserviceaccount.com | Runner medium para deploy prod en ebusiness |
andes-ebusiness-ci-large | latamairlines/paxc/ebz | andes, ebusiness, large, ci-amd64 | run-ebiz-ci-l-prod-sa@latam-platform-prod-f7eb.iam.gserviceaccount.com | Runner large para CI en ebusiness |
andes-ebusiness-ci-medium | latamairlines/paxc/ebz | andes, ebusiness, medium, ci-amd64 | run-ebiz-ci-m-prod-sa@latam-platform-prod-f7eb.iam.gserviceaccount.com | Runner medium para CI en ebusiness |
andes-ebusiness-ci-small | latamairlines/paxc/ebz | andes, ebusiness, small, ci-amd64 | run-ebiz-ci-s-prod-sa@latam-platform-prod-f7eb.iam.gserviceaccount.com | Runner small para CI en ebusiness |
andes-ecargo-cd-medium-preprod | latamairlines/lyca/ecargo | andes, ecargo, medium, cd, preprod | run-eca-cd-preprod-m-prod-sa@latam-platform-prod-f7eb.iam.gserviceaccount.com | Runner medium para deploy preprod en ecargo |
andes-ecargo-cd-medium-prod | latamairlines/lyca/ecargo | andes, ecargo, medium, cd, prod | run-eca-cd-prod-m-prod-sa@latam-platform-prod-f7eb.iam.gserviceaccount.com | Runner medium para deploy prod en ecargo |
andes-ecargo-ci-large | latamairlines/lyca/ecargo | andes, ecargo, large, ci-amd64 | run-eca-ci-l-prod-sa@latam-platform-prod-f7eb.iam.gserviceaccount.com | Runner large para CI en ecargo |
andes-ecargo-ci-medium | latamairlines/lyca/ecargo | andes, ecargo, medium, ci-amd64 | run-eca-ci-m-prod-sa@latam-platform-prod-f7eb.iam.gserviceaccount.com | Runner medium para CI en ecargo |
andes-ecargo-ci-small | latamairlines/lyca/ecargo | andes, ecargo, small, ci-amd64 | run-eca-ci-s-prod-sa@latam-platform-prod-f7eb.iam.gserviceaccount.com | Runner small para CI en ecargo |
andes-eloyalty-cd-medium-preprod | latamairlines/lyca/eloyalty | andes, eloyalty, medium, cd, preprod | run-ely-cd-preprod-m-prod-sa@latam-platform-prod-f7eb.iam.gserviceaccount.com | Runner medium para deploy preprod en eloyalty |
andes-eloyalty-cd-medium-prod | latamairlines/lyca/eloyalty | andes, eloyalty, medium, cd, prod | run-ely-cd-prod-m-prod-sa@latam-platform-prod-f7eb.iam.gserviceaccount.com | Runner medium para deploy prod en eloyalty |
andes-eloyalty-ci-large | latamairlines/lyca/eloyalty | andes, eloyalty, large, ci-amd64 | run-ely-ci-l-prod-sa@latam-platform-prod-f7eb.iam.gserviceaccount.com | Runner large para CI en eloyalty |
andes-eloyalty-ci-medium | latamairlines/lyca/eloyalty | andes, eloyalty, medium, ci-amd64 | run-ely-ci-m-prod-sa@latam-platform-prod-f7eb.iam.gserviceaccount.com | Runner medium para CI en eloyalty |
andes-eloyalty-ci-small | latamairlines/lyca/eloyalty | andes, eloyalty, small, ci-amd64 | run-ely-ci-s-prod-sa@latam-platform-prod-f7eb.iam.gserviceaccount.com | Runner small para CI en eloyalty |
andes-emantto-cd-medium-preprod | latamairlines/oper/emx | andes, emantto, medium, cd, preprod | run-emx-cd-preprod-m-prod-sa@latam-platform-prod-f7eb.iam.gserviceaccount.com | Runner medium para deploy preprod en emantto |
andes-emantto-cd-medium-prod | latamairlines/oper/emx | andes, emantto, medium, cd, prod | run-emx-cd-prod-m-prod-sa@latam-platform-prod-f7eb.iam.gserviceaccount.com | Runner medium para deploy prod en emantto |
andes-emantto-ci-large | latamairlines/oper/emx | andes, emantto, large, ci-amd64 | run-emx-ci-l-prod-sa@latam-platform-prod-f7eb.iam.gserviceaccount.com | Runner large para CI en emantto |
andes-emantto-ci-medium | latamairlines/oper/emx | andes, emantto, medium, ci-amd64 | run-emx-ci-m-prod-sa@latam-platform-prod-f7eb.iam.gserviceaccount.com | Runner medium para CI en emantto |
andes-emantto-ci-small | latamairlines/oper/emx | andes, emantto, small, ci-amd64 | run-emx-ci-s-prod-sa@latam-platform-prod-f7eb.iam.gserviceaccount.com | Runner small para CI en emantto |
andes-platforms-cd-medium-preprod | latamairlines/tech/platforms | andes, platforms, medium, cd, preprod | run-plat-cd-preprod-m-prod-sa@latam-platform-prod-f7eb.iam.gserviceaccount.com | Runner medium para deploy preprod en platforms |
andes-platforms-cd-medium-prod | latamairlines/tech/platforms | andes, platforms, medium, cd, prod | run-plat-cd-prod-m-prod-sa@latam-platform-prod-f7eb.iam.gserviceaccount.com | Runner medium para deploy prod en platforms |
andes-platforms-ci-large | latamairlines/tech/platforms | andes, platforms, large, ci-amd64 | run-plat-ci-l-prod-sa@latam-platform-prod-f7eb.iam.gserviceaccount.com | Runner large para CI en platforms |
andes-platforms-ci-medium | latamairlines/tech/platforms | andes, platforms, medium, ci-amd64 | run-plat-ci-m-prod-sa@latam-platform-prod-f7eb.iam.gserviceaccount.com | Runner medium para CI en platforms |
andes-platforms-ci-small | latamairlines/tech/platforms | andes, platforms, small, ci-amd64 | run-plat-ci-s-prod-sa@latam-platform-prod-f7eb.iam.gserviceaccount.com | Runner small para CI en platforms |
Actualmente, los runners ANDES disponibles para la ejecución de jobs de CI corresponden a la arquitectura
AMD64/x86_64 y deben utilizar el tag ci-amd64.
Por el momento, no existen runners disponibles asociados al tag ci-arm64. En consecuencia, los pipelines
que requieran ejecución sobre arquitectura ARM64 no cuentan actualmente con soporte
mediante runners ANDES.
Solicitudes relacionadas con Runners
¿Solicitar un nuevo runner?
Si necesitas un nuevo runner para tu proyecto o grupo en GitLab, debes seguir estos pasos:
- Identificar la necesidad: Define claramente por qué necesitas un nuevo runner.
- Identifica características: Define qué características específicas debe tener (por ejemplo, etiquetas, recursos, etc.).
- Identifica el sub-grupo: Determina en qué sub-grupo de GitLab se debe crear el runner.
- Solicitar el runner: Contacta al equipo de ANDES a través del bot
ANDES Boten Google Chat, opción 8.0 con la información anterior.
¿Implementar Runners en infraestructura propia?
En el caso que sea necesario implementar runners independiente, sigue los mismos pasos anteriores, pero solo debes pedir el runner token que se entrega en un secreto de Google Secret Manager. Luego, debes proceder a implementar el runner en tu infraestructura.
Para evaluar las condiciones de tener una estructura de runners independiente debes revisar el documento de Política sobre uso de Runners
El servicio de ejecución de tareas de un pipeline debe considerar los siguientes elementos para operar:
- Caché utilizando un storage de GCP.
- Artefactos de jobs bajo el mismo storage de GCP.
- Deployment de gitlab runner.
- Service Account asignados a los nodepool del Gitlab Runner.