Gitlab CI — реестр и nginx

#docker #nginx #ssl #gitlab #gitlab-ci

# #docker #nginx #ssl #gitlab #gitlab-ci

Вопрос:

Я пытаюсь настроить автономный gitlab CI с собственным реестром. Я также использую самозаверяющие сертификаты для TLS, подписал этот сертификат, используя свой собственный центр сертификации, который установлен как доверенный центр сертификации на моем хост-компьютере

Версия Gitlab-CE 13.6.3 установлена в Ubuntu 18.04. Установили кластер snap microk8s на том же хосте

Вопросы (некоторые очень простые)

  • Использует ли реестр Gitlab демон docker?
  • Как достигается подключение

    Клиент Docker -> NGINX (5050) -> Реестр Gitlab (5000)

  • У меня есть приведенная ниже конфигурация в файле gitlab.rb
 registry['enable'] = true
registry['registry_http_addr'] = "127.0.0.1:5000"
registry['log_directory'] = "/var/log/gitlab/registry"
registry['env'] = {
  'SSL_CERT_DIR' => "/etc/gitlab/ssl"
}

# Below you can find settings that are exclusive to "Registry NGINX"
registry_nginx['enable'] = true
registry_nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.local.crt"
registry_nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.local.key"

registry_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"
}

# When the registry is automatically enabled using the same domain as `external_url`,
# it listens on this port
registry_nginx['listen_port'] = 5050
registry_nginx['listen_addresses'] = ['*', '[::]']
 

Когда я пытаюсь войти в систему docker, наблюдаются следующие ошибки. Ожидается ли это на основе приведенной выше конфигурации?

    - with URL: https://127.0.0.1:5000 - > Login Success
   - with URL: https://127.0.0.1:5050 - > Login Success 
   - with URL: https://gitlab.local:5050 - > x509 certificate signed by unknown authority
 
  • У меня есть бегуны gitlab k8s и docker, могут ли они получить доступ к порту 5050 реестра gitlab (nginx) из контейнера?
     [[runners]]
      name = "docker"
      token = "xxxxxxx"
      executor = "docker"
      [runners.docker]
        image = "docker:stable"
        privileged = true
        volumes = ["/cache", "/var/run/docker.sock:/var/run/docker.sock"]
 

Я пробовал различные форумы / сообщения gitlab о проблемах с сертификатами в реестре gitlab для создания / отправки изображений, но безуспешно

Спасибо

Ответ №1:

Попробуйте поместить сертификат в docker с помощью:

 sudo mkdir -p /etc/docker/certs.d/gitlab.local:5050
cp /yourcerts/gitlab.local.crt /etc/docker/certs.d/gitlab.local:5050/ca.crt
sudo service docker reload
 

Комментарии:

1. Спасибо за ваш отзыв, да — я пробовал это, и сертификат ca находится в этом каталоге

2. Я использую реестр с самозаверяющим сертификатом, но в отдельном контейнере, gitlab-runner и gitlab — все три на одном хосте. Я столкнулся с этим и решил использовать это, а также добавить сертификат в контейнер gitlab, добавив сертификат и ключ в /etc/gitlab/ ssl и добавив сертификат реестра также в /etc/gitlab/trusted-certs/ попробуйте это.

3. Спасибо за помощь, поскольку публикация на форумах gitlab / docker forums не привлекла столько голосов :). Я скопировал ca.crt внутри — /etc/gitlab/ssl/, /etc/gitlab/ssl/gitlab.local:5050/, /etc/gitlab/trusted-certs/. Возможно ли предоставить общий доступ к gitlab.rb и config.toml, которые вы использовали для перекрестной проверки?

4. Поскольку я использую внешний реестр, а не предоставленный gitlab, я не сильно изменился в gitlab.rb. Отредактировал только эти два параметра registry_external_url ‘ registry.local:5000 ‘ amp; gitlab_rails[‘registry_api_url’] = » registry.local:5000 «. И изменил конфигурацию, как указано выше, а остальное комментируется по умолчанию, предоставляемым gitlab.

5. Используете ли вы общедоступный внешний реестр или другой автономный реестр — microk8s, docker?