Gitlab CE / Runner в Docker под VPN


Gitlab on Docker

При установке Gitlab для работы под VPN возникает ряд проблем со связностью обработчиков задач CI/CD и основного сервера Gitlab. В частности, обработчики без дополнительного конфигурирования используют HTTP протокол для клонирования, а также не видят ни VPN зону, ни зону docker-сети Gitlab.

Для решения данной задачи можно попробовать перевести HTTP-клонирование на SSH, если он доступен в Интернет, можно пробросить VPN-зону внутрь контейнера-песочницы, но простейшее решение для данного случая - это прокинуть Docker-сеть Gitlab в контейнер-песочницу создаваемую обработчиком задач Gitlab Runner, для этого достаточно добавить несколько строк в конфигурацию Gitlab Runner.

Первичные условия

  • docker-сеть: например, "gitlab_network", в этой сети доступен контейнер основного портала Gitlab CE
  • контейнер Gitlab CE: например, "gitlab_server"

Пример файла конфигурации Gitlab Runner config.toml

concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "Shared runner"
  clone_url = "http://gitlab_server"
  url = "http://gitlab_server/"
  token = "12345678900987654321"
  executor = "docker"
  [runners.docker]
    network_mode = "gitlab_network"
    tls_verify = false
    image = "alpine"
    privileged = false
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]

В этой конфигурации отметим следующие поля:

  • clone_url, url, network_mode - решают вышепоставленную проблему
  • image - позволяет ускорить процесс разворачивания кода в разы

В случае использования данного примера методом copy&paste, не забудьте обновить токен доступа к Gitlab CE. Для этого запустите оболочку внутри контейнера Gitlab Runner и исполните команду gitlab-runner register.


Comments 0