Реестр контейнеров Gitlab - 401 Несанкционированный - PullRequest
0 голосов
/ 04 ноября 2019

Итак, я потратил некоторое время, пытаясь настроить реестр контейнера для моего собственного сервера Gitlab. Мне повезло с точки зрения того, что Docker-контейнер работает на порту 5005 и отвечает на запросы, но каждый раз, когда я пытаюсь выполнить вход в Docker, происходит сбой.

Итак, настройка:

Сервер: Ubuntu 18.04 bionic

Версия Gitlab:

  • GitLab: 12.4.0 (1425a56c75b) OMNIBUS
  • Оболочка GitLab: 10.2.0
  • Рабочая лошадка GitLab: 8.14.0
  • API GitLab: v4
  • Ruby: 2.6.3p62
  • Rails: 5.2.3

gitlabНастройки .rb:

registry_external_url 'https://registry.<domain>.com'

### Settings used by GitLab application
gitlab_rails['registry_enabled'] = true
gitlab_rails['registry_host'] = "registry.<domain>.com"
gitlab_rails['registry_port'] = "5005"
gitlab_rails['registry_path'] = "/var/opt/gitlab/gitlab-rails/shared/registry"

### Settings used by Registry application
registry['enable'] = true
registry['username'] = "registry"
registry['group'] = "registry"
registry['uid'] = nil
registry['gid'] = nil
registry['dir'] = "/var/opt/gitlab/registry"
registry['registry_http_addr'] = "127.0.0.1:5005"
registry['debug_addr'] = "localhost:5001"
registry['log_directory'] = "/var/log/gitlab/registry"
registry['env_directory'] = "/opt/gitlab/etc/registry/env"
registry['env'] = {}
registry['log_level'] = "info"
registry['rootcertbundle'] = "/etc/gitlab/ssl/fullchain.pem"
registry['health_storagedriver_enabled'] = true
registry['storage_delete_enabled'] = true

Я использую собственную установку Nginx, а не предварительно упакованную версию от Gitlab, и использую предложенные настройки:

server {
    if ($host = registry.<domain>.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen *:80;
    server_name  registry.<domain>.com;
    server_tokens off;
    return 301 https://$http_host$request_uri;
    access_log  /var/log/nginx/gitlab_registry_access.log;
    error_log   /var/log/nginx/gitlab_registry_error.log;


}

server {
    listen *:443 ssl http2;
    server_name  registry.<domain>.com;
    server_tokens off;
    client_max_body_size 0;
    chunked_transfer_encoding on;
    access_log  /var/log/gitlab/nginx/gitlab_registry_access.log;
    error_log   /var/log/gitlab/nginx/gitlab_registry_error.log;

    location ^~ /.well-known/acme-challenge { 
        allow all; 
        alias /var/www/acme;
    }

    location / {
        proxy_set_header  Host              $http_host;   # required for docker client's sake
        proxy_set_header  X-Real-IP         $remote_addr; # pass on real client's IP
        proxy_set_header  X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header  X-Forwarded-Proto $scheme;
        proxy_read_timeout                  900;
        proxy_pass          http://localhost:5005;
    }

    ssl_certificate /etc/letsencrypt/live/registry.<domain>.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/registry.<domain>.com/privkey.pem; # managed by Certbot
}

Теперь каждый раз, когда я делаю следующеекоманда: docker login registry.<domain>.com это просто дает мне следующий ответ:

Error response from daemon: Get https://registry.<domain>.com/v2/: unauthorized: HTTP Basic: Access denied

Пример вывода из /var/log/gitlab/nginx/gitlab_registry_error.log

2019/11/04 12:36:16 [error] 30957#30957: *92 no live upstreams while connecting to upstream, client: <personal_ip>, server: registry.<domain>.com, request: "GET /v2/ HTTP/1.1", upstream: "http://localhost/v2/", host: "registry.<domain>.com"
2019/11/04 12:52:33 [error] 30957#30957: *320 connect() failed (111: Connection refused) while connecting to upstream, client: <server_ip>, server: registry.<domain>.com, request: "GET /v2/ HTTP/1.1", upstream: "http://127.0.0.1:5005/v2/", host: "registry.<domain>.com"
2019/11/04 12:52:33 [error] 30957#30957: *320 connect() failed (111: Connection refused) while connecting to upstream, client: <server_ip>, server: registry.<domain>.com, request: "GET /v2/ HTTP/1.1", upstream: "http://127.0.0.1:5005/v2/", host: "registry.<domain>.com"
2019/11/04 12:52:33 [error] 30957#30957: *320 connect() failed (111: Connection refused) while connecting to upstream, client: <server_ip>, server: registry.<domain>.com, request: "GET /v2/ HTTP/1.1", upstream: "http://127.0.0.1:5005/v2/", host: "registry.<domain>.com"
2019/11/04 12:52:33 [error] 30957#30957: *324 no live upstreams while connecting to upstream, client: <server_ip>, server: registry.<domain>.com, request: "GET /v2/ HTTP/1.1", upstream: "http://localhost/v2/", host: "registry.<domain>.com"

Я не совсем уверен, что следующие шаги, Я безостановочно гуглял, но реальных ответов нет, и большинство обнаруженных мной проблем связано с бегунами-гитарами.

Любая помощьБуду очень признателен, я просто хочу знать, есть ли что-то не так с моими настройками, я вижу что-то связанное с connect () в выходном журнале, но я просто не уверен, что мне не хватает или как исправить журнал, поэтомуесли кто-то может указать мне правильное направление, был бы признателен.

...