#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?