Syntax highlighting of 56b67dc ~( devops/gitlab/registry)
= Gitlab Registry = <<TableOfContents()>> == Garbage == {{{ docker exec -it gitlab gitlab-ctl registry-garbage-collect --delete-manifests }}} == Internal == Docker Registry запущен в Gitlab по умолчанию. Для того, чтобы получить к нему доступ достаточно пробросить порт 5050 при создании контейнера. Для использования s3 в качестве хранилища образов необходимо: (1) запустить minio (2) прописать конфигурацию подключения в gitlab.rb. Запуск minio смотри в блокноте sb_devops Конфигурация подключения {{https://clck.ru/Xsh6f|message2505}} == External == [[https://about.gitlab.com/2016/05/23/gitlab-container-registry/|GitLab Container Registry|class=" moin-https"]] [[https://docs.gitlab.com/ce/administration/container_registry.html|GitLab Container Registry administration|class=" moin-https"]] [[https://gitlab.com/gitlab-org/gitlab-ce/issues/25967|How to setup omnibus installation to use an external Docker registry?|class=" moin-https"]] [[https://gitlab.com/gitlab-org/omnibus-gitlab/issues/2783|Docker login fails to gitlab registry, when gitlab and the registry are on separate domains|class=" moin-https"]] [[https://github.com/cpoetter/Synology-GitLab-Setup|Setup of GitLab Docker on Synology DSM|class=" moin-https"]] [[https://github.com/sameersbn/docker-gitlab/blob/master/docs/container_registry.md|GitLab Container Registry|class=" moin-https"]] [[https://github.com/docker/distribution/issues/1143|Token authentication error: token signed by untrusted key with ID: "xyz"|class=" moin-https"]] === Registry Auth via Gitlab === Ниже приведен способ, как "подружить" ''gitlab'', запущенный из docker-образа, и внешний docker-registry. Под понятием "внешний" предполагается Registry не из состава gitlab. Прописываем в ''/srv/gitlab/config/gitlab.rb'' следующую конфигурацию: {{{ # /srv/gitlab/config/gitlab.rb gitlab_rails['registry_enabled'] = true gitlab_rails['registry_api_url'] = "https://registry.example.com:5000" gitlab_rails['registry_key_path'] = "/etc/gitlab/token.key" gitlab_rails['registry_issuer'] = "gitlab-issuer" }}} Опция ''registry_key_path'' определяет куда ''gitlab'' '''запишет''' внутренний RSA ключ, который необходимо использовать для подписи сертификата, который, в свою очередь, будет отдан ''registry''. Выпускаем сертификат с помощью ''token.key'' {{{ openssl req -key token.key -new -x509 -days 3650 -out token.crt }}} Сертификат ''token.crt'' копируем на сервер с ''registry'' Конфигурируем ''registry'' с учетом данного сертификата: {{{ version: '3' services: registry: image: registry:2 restart: always ports: - 5005:5000 environment: REGISTRY_HTTP_ADDR: 0.0.0.0:5000 REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt REGISTRY_HTTP_TLS_KEY: /certs/domain.key REGISTRY_LOG_LEVEL: info REGISTRY_AUTH_TOKEN_REALM: https://gitlab.onrails.ru/jwt/auth REGISTRY_AUTH_TOKEN_SERVICE: container_registry REGISTRY_AUTH_TOKEN_ISSUER: gitlab-issuer REGISTRY_AUTH_TOKEN_ROOTCERTBUNDLE: /certs/token.crt volumes: - /opt/registry/data:/var/lib/registry - /opt/registry/certs:/certs }}} Артефакты: 1) Раздел ''Registry'' в проектах ''Gitlab'' 2) Авторизация в Docker Registry через Gitlab {{{ docker login registry.example.com:5000 Username: gitlab-username Password: gitlab-password Login Successed }}} 3) Заливка образа в Registry и отображение его в соответствующем разделе проекта Gitlab {{{ docker push registry.example.com:5000/username/project-name }}}
