Как зарегистрировать runner в GitLab?

«Как зарегистрировать runner в GitLab?» — вопрос из категории CI/CD, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Регистрация GitLab Runner — это стандартная задача при настройке CI/CD пайплайнов. Вот пошаговый процесс, который я использую:

1. Установка GitLab Runner:

# Для Ubuntu/Debian
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash
sudo apt-get install gitlab-runner

# Для RHEL/CentOS/Fedora
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | sudo bash
sudo yum install gitlab-runner

2. Регистрация Runner:

sudo gitlab-runner register

Во время интерактивной регистрации нужно указать:

  • URL GitLab instance: https://gitlab.com (для SaaS) или адрес вашего self-hosted GitLab.
  • Registration token: Находится в Settings -> CI/CD -> Runners в разделе "Set up a specific Runner manually". Для групповых или проектных раннеров токены находятся в соответствующих разделах.
  • Description: Например, docker-runner-for-backend.
  • Tags (опционально): Теги для выбора раннера в .gitlab-ci.yml, например docker, linux, x86.
  • Executor: Выбираю в зависимости от среды:
    • docker — для изоляции в контейнерах (использую чаще всего).
    • kubernetes — для запуска в K8s кластере.
    • shell — для прямого выполнения на хосте.

3. Пример конфигурации для Docker executor (/etc/gitlab-runner/config.toml):

concurrent = 4
check_interval = 0

[[runners]]
  name = "production-docker-runner"
  url = "https://gitlab.com"
  token = "glrt-xxxxxxxxxxxxxxxx"
  executor = "docker"
  [runners.docker]
    tls_verify = false
    image = "alpine:latest"
    privileged = false
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache", "/var/run/docker.sock:/var/run/docker.sock"]
    shm_size = 0
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]

4. Практический пример из production: Для регистрации раннера в Kubernetes кластере использовал Helm chart:

helm upgrade --install gitlab-runner gitlab/gitlab-runner 
  --namespace gitlab-runner 
  --set "gitlabUrl=https://gitlab.example.com" 
  --set "runnerRegistrationToken=GR1348941nBhuynDxmJCMttrsTox" 
  --set "rbac.create=true" 
  --set "runners.tags=kubernetes,production"

После регистрации раннер появляется в интерфейсе GitLab и готов выполнять jobs. В .gitlab-ci.yml можно указать теги для выбора конкретного раннера:

build:
  stage: build
  tags:
    - docker
    - linux
  script:
    - docker build -t app:latest .