Я столкнулся с довольно странной проблемой.
Прежде всего, моя установка:
У меня есть частный сервер 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