Gitlab Runner не может разрешить DNS сервера Gitlab

Я столкнулся с довольно странной проблемой.

Прежде всего, моя установка:
У меня есть частный сервер Gitlab, который использует Gitlab CI Runners на Kubernetes для создания образов Docker. Для этого я использую Kaniko Image. Бегуны предоставляются самим Gitlab со встроенным управлением Kubernetes. Все это работает за сервером PFSense.

Теперь к моей проблеме:
Иногда модули Kaniko не могут разрешить имя хоста сервера GitLab. Это приводит к неудачной попытке git pull и, следовательно, к неудачной сборке. Я бы оценил вероятность провала на 60%, что для нас слишком много. После нескольких попыток сборки она запустится без проблем.

Кластер Kubernetes, на котором работает Gitlab CI, настроен на CentOS 7. SELinux и FirewallD отключены. Все хосты могут разрешить сервер GitLab. Это также не связано с конкретным хост-сервером, который вызывает проблему. Я видел, как он терпит неудачу на всех 5 серверах, включая сервер менеджера. Также я не видел, чтобы эта проблема появлялась в других модулях. Но другие развертывания в кластере на самом деле не подключаются через DNS. Я уверен, что Runner вообще может получить доступ к DNS, потому что он извлекает изображение Kaniko из gcr.io.

Кто-нибудь когда-нибудь видел эту проблему или знает обходной путь?

  • Я уже пробовал создавать модули, которые выполняют только DNS-запросы к домену. Я не видел ни одного провала.
  • Также я попытался перезагрузить весь экземпляр кластера и Gitlab.
  • Я попытался выполнить статическую перезапись маршрута DNS в PFSense. Все еще та же проблема.

Вот моя конфигурация CI:

build:
  stage: build
  image:
    name: gcr.io/kaniko-project/executor:debug
    entrypoint: [""]
  script:
    - echo $REGISTRY_AUTH > /kaniko/.docker/config.json
    - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $REGISTRY_URL/$REGISTRY_IMAGE:$CI_JOB_ID
  only:
    - master

Произойдет следующая ошибка:

Initialized empty Git repository in /builds/MYPROJECT/.git/
Fetching changes...
Created fresh repository.
fatal: unable to access 'https://gitlab-ci-token:[MASKED]@git.mydomain.com/MYPROJECT.git/': Could not resolve host: git.mydomain.com

person xj32    schedule 16.07.2019    source источник
comment
Может быть, это поможет?   -  person Crou    schedule 18.07.2019


Ответы (2)


У нас была такая же проблема в течение нескольких дней. Мы пробовали изменить конфигурацию CoreDNS, переместить бегунов в другой кластер k8s и так далее. Наконец, сегодня я проверил свой личный раннер и обнаружил, что использую другую версию. У бегунов в кластере было gitlab/gitlab-runner:alpine-v12.3.0, тогда как у моего было gitlab/gitlab-runner:alpine-v12.0.1. Мы добавили строку

image: gitlab/gitlab-runner:alpine-v12.1.0

в values.yaml и эта проблема для нас решена

person tiger31    schedule 02.10.2019
comment
Я могу подтвердить, что у меня была такая же проблема, понижение до версии 12.1.0 решило проблему. Спасибо! - person aries1980; 04.10.2019
comment
Снижение версии до версии 12.1.0 и та же проблема здесь: / - person Routhinator; 09.10.2019

Есть env для gitlab-runner, который может решить эту проблему

- name: RUNNER_PRE_CLONE_SCRIPT
  value: "exec command before git fetch ..."

например: редактировать /etc/hosts

echo '127.0.0.1 git.demo.xxxx' >> /etc/hosts

или отредактируйте /etc/resolv.conf

echo 'nameserver 8.8.8.8' > /etc/resolv.conf

надеюсь, это сработает для вас

person dezhi.shen    schedule 17.04.2020