Тайм-аут клона Gitlab runner после traefik (относительный путь)

Я пытаюсь получить экземпляр Gitlab, работающий по относительному пути (/ dev / git /) за прокси-сервером Traefik.
Сам Gitlab работает как шарм, но мне не повезло с добавлением Runner в проект.

Регистрация бегуна прошла успешно, но когда он захватывает задание, клонирование репозитория завершается неудачно с ошибкой тайм-аута:

Cloning into '/builds/dev/git/root/ci-test'...
fatal: unable to access 'https://gitlab-ci- 
token:[email protected]/dev/git/root/ci-test.git/': Failed to connect to SUBDOMAIN.DOMAIN.de port 443: Operation timed out

Gitlab доступен по адресу https://SUBDOMAIN.DOMAIN.de/dev/git/.

Docker-Config «docker-compose.yml»:

version: "2.1"
services:
  proxy1:
    container_name: proxy1
    image: traefik:latest
    restart: always
    networks:
      - web
    ports:
      - 80:80
      - 443:443
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /srv/docker/config/proxy1/acme.json:/acme.json
      - /srv/docker/config/proxy1/traefik.toml:/traefik.toml
    labels:
      - "traefik.docker.network=web"
      - "traefik.enable=true"
      - "traefik.basic.frontend.rule=Host:SUBDOMAIN.DOMAIN.de;PathPrefixStrip:/traefik/"
      - "traefik.basic.port=8080"
      - "traefik.basic.protocol=http"
  gitlab1:
    container_name: gitlab1
    image: gitlab/gitlab-ce:latest
    restart: always
    networks:
      - web
    volumes:
      - /srv/docker/volumes/gitlab1/config:/etc/gitlab
      - /srv/docker/volumes/gitlab1/log:/var/log/gitlab
      - /srv/docker/volumes/gitlab1/data:/var/opt/gitlab
    labels:
      - "traefik.docker.network=web"
      - "traefik.enable=true"
      - "traefik.basic.frontend.rule=Host:SUBDOMAIN.DOMAIN.de;PathPrefix:/dev/git/"
      - "traefik.basic.port=80"
      - "traefik.basic.protocol=http"
  gitlab-runner1:
    container_name: gitlab-runner1
    image: gitlab/gitlab-runner:latest
    restart: always
    networks:
      - web
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /srv/docker/volumes/runner1/config:/etc/gitlab-runner
networks:
  web:

Конфигурация Traefik «traefik.toml»:

debug = true

logLevel = "ERROR"
defaultEntryPoints = ["https", "http"]

[entryPoints]
  [entryPoints.http]
  address = ":80"
    [entryPoints.http.redirect]
    entryPoint = "https"
  [entryPoints.https]
  address = ":443"
  [entryPoints.https.tls]

[retry]

[docker]
endpoint = "unix:/https://var/run/docker.sock"
domain = "SUBDOMAIN.DOMAIN.de"
watch = true
exposedByDefault = false

[acme]
email = "[email protected]"
storage = "acme.json"
entryPoint = "https"
onHostRule = true
[acme.httpChallenge]
entryPoint = "http"

[api]
entryPoint = "traefik"
dashboard = true

Gitlab настроен для прослушивания HTTP за прокси, который обрабатывает SSL.
Gitlab config «gitlab.rb»:

external_url "https://subdomain.domain.de/dev/git/"
nginx['redirect_http_to_https'] = true
nginx['listen_port'] = 80 
nginx['listen_https'] = false
nginx['proxy_set_headers'] = {
 "Host" => "$http_host",
 "X-Real-IP" => "$remote_addr",
 "X-Forwarded-For" => "$proxy_add_x_forwarded_for",
 "X-Forwarded-Proto" => "https",
 "X-Forwarded-Ssl" => "on"
}

Конфигурация Gitlab-Runner «config.toml»:

concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "runner1"
  url = "https://gitlab1/dev/git/"
  token = "TOKEN"
  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"]
    shm_size = 0
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]

Мне было бы приятно, если бы вы мне помогли с этим. Я много искал в Интернете, но не могу найти никого, кто бы это уже решил.
Большое спасибо за каждый ответ.

См. также:  Как работать над двумя независимыми вещами одновременно, используя ветки git?
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 1
  1. Luckyf

    Я нашел решение:

    Задание, выполняемое на gitlab-runner, подключается не к web сети, а к стандартной bridge сети.

    Поэтому мне пришлось перенастроить бегун gitlab, добавив:

    [[runners]]
    url = "https://gitlab1/dev/git/"
    clone_url = "https://gitlab1/dev/git/"
    [runners.docker]
        network_mode = "docker_gitlab"
        privileged = true
    

    docker_gitlab — это имя сети, которое я добавил в файл docker-compose выше, чтобы соединить gitlab и gitlab-runner.

    новый docker-compose.yml

    gitlab1:
      container_name: gitlab1
      image: gitlab/gitlab-ce:latest
      restart: always
      networks:
        - gitlab
        - web
      volumes:
        - /srv/docker/volumes/gitlab1/config:/etc/gitlab
        - /srv/docker/volumes/gitlab1/log:/var/log/gitlab
        - /srv/docker/volumes/gitlab1/data:/var/opt/gitlab
      hostname: SUBDOMAIN.DOMAIN.de
      labels:
        - "traefik.enable=true"
        - "traefik.docker.network=docker_web"
        - "traefik.port=80"
        - "traefik.backend=gitlab"
        - "traefik.frontend.rule=Host:SUBDOMAIN.DOMAIN.de;PathPrefix:/dev/git/"
    gitlab-runner1:
      container_name: gitlab-runner1
      image: gitlab/gitlab-runner:latest
      restart: always
      networks:
        - gitlab
      volumes:
        - /var/run/docker.sock:/var/run/docker.sock
        - /srv/docker/volumes/runner1/config:/etc/gitlab-runner
      links:
        - gitlab1
      labels:
        - "traefik.enable=false"
    

    Потратив несколько часов на то, чтобы исправить свою проблему, я нашел ваш ответ. Большое спасибо за то, что поделились, когда узнали! person Luckyf; 19.05.2020

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: