gitlab docker executor при логине в репозиторий выдает ошибку X509
Есть ci в docker executor'е c использованием docker-dind на gitlab:
docker-build-job:
stage: build
image: docker:20.10.6
scripts:
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.our.ru
config.toml:
[runners.docker]
image = "docker:20.10.6"
tls_verify = false
privileged = true
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/cache", "/certs/client", "/usr/share/ca-certificates:/certs"]
shm_size = 0
[[runners.docker.services]]
alias = "docker"
name = "docker:20.10.12-dind"
volumes = ["/cache", "/certs/client", "/etc/gitlab-runner/certs:/certs/ca:ro"]
command = ['/bin/sh', '-c', 'ls -alh /certs/client && dockerd-entrypoint.sh || exit']
Подскажите, пожалуйста:
В файле config.toml в секции runners.docker.services указан docker:20.10.12-dind. Правильно ли я понимая , что в данном случае скрипты всех джобов будут выполняться внутри контейнера dind, независимо от того указываю ли я инструкцию services: docker:19.03.12-dind в джобе ci (файл .gitlab-ci.yml)? т.е. запись про service в config.toml автоматически подключает dind контейнер?
В dind контейнере выполняется команда login к развернутому на другой машине registry следующем образом:
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.our.ru
При этом возникает ошибка Error response from daemon: Get "https://registry.our.ru/v2/": x509: certificate signed by unknown authority
При этом если я выполняю команду openssl s_client -showcerts -connect registry.our.ru:443 я получаю ответ с фразой Verification: OK. Понимаю так , что сертификаты используются верные. С машины, на которой установлен gitlab-runner я могу залогиниться к registry.
Вопрос: что я делаю не так?
- в файле настроек docker registry есть следующая запись:
auth:
token:
realm: https://gitlab.our.ru/jwt/auth
service: container_registry
issuer: omnibus-gitlab-issuer
rootcertbundle: /etc/docker/registry/ssl/gitlab-registry.crt
Правильно ли я понимаю, что $CI_BUILD_TOKEN участвует в создании сертификата? Где должен распологаться этот сертификат в контейнере dind? этот сертификат проверяется корневым сертикатом, расположенным по пути /etc/docker/registry/ssl/gitlab-registry.crt?
Всем заранее спасибо за ответы!