Activer le docker registry avec Gitlab

Bonjour,

Je cherche à activer la fonctionalité docker registry sur gitlab sans succès.

Mon serveur YunoHost

Matériel: VM sur dédié kimsufi derrière IP failover
Version de YunoHost: 3.6.5.3
J’ai accès à mon serveur : En SSH | Par la webadmin | En direct avec un clavier/écran
Êtes-vous dans un contexte particulier ou avez-vous effectué des modificiations particulières sur votre instance ? : oui (apt install net-tools)

Description du problème

Je veux activer la fonctionalité docker registry sur mon instance gitlab.
Pour cela j’ai bêtement (c’est peut-être là le problème :p) répliqué les réglages que j’avais faits sur mon instance actuelle, à savoir dans le fichier /etc/gitlab/gitlab-persistent.yml

registry_external_url 'https://gitlab.subdomain.domain.tld:5050'
gitlab_rails['registry_enabled'] = true
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'] = "localhost:5000"
registry['log_directory'] = "/var/log/gitlab/registry"
registry['env_directory'] = "/opt/gitlab/etc/registry/env"
registry['log_level'] = "info"
registry['log_formatter'] = "text"
registry_nginx['enable'] = true
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"
}
registry_nginx['listen_port'] = 5050

EDIT: ce n’est pas exactement la config que j’ai sur mon instance gitlab de prod, il manque ces lignes mais j’aimerais déjà faire fonctionner le tout sans:

registry_nginx['listen_https'] = true
registry_nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.domain.tld.crt"
registry_nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.domain.tld.key"

ensuite j’ai lancé la reconfiguration de gitlab: gitlab-ctl reconfigure

Après vérification sur l’interface web je vois bien la section Packages > Container registry mais la connexion avec les commandes fournies (docker login gitlab.subdomain.domain.tld:5050) partait en timeout

Je me suis dit que ça venait du parefeu, et effectivement le port 5050 n’était pas autorisé, j’y ai donc remédié: yunohost firewall allow TCP 5050

Nouvel essai de connexion avec docker login cette fois j’ai directement un connexion refused, il y a du progrès.

Je vais alors sur mon instance, j’installe net-tools (il s’agit d’une instance de test, je me permets d’installer des outils de debug) et je fais un netstat -tpnl pour voir les ports en écoute et là je ne vois effectivement pas le port 5050 ouvert. Je vois cependant le port 127.0.0.1:5000 ouvert qui est bien le docker registry mais celui-ci est censé être ‘proxifié’ par nginx sur le port 5050, ce qui manque apparemment.

J’ai fait un yunohost service reload nginx sans changement.

Pouvez-vous m’aider s’il vous plaît? C’est la seule chose qui me manque pour migrer mon instance gitlab sur mon yunohost.

J’ai continué mes investigations et je me suis rendu compte que le service nginx intégré à gitlab était dans les choux:

root@services:/etc/nginx/conf.d# gitlab-ctl status                                                  
down: alertmanager: 1s, normally up, want up; run: log: (pid 8304) 157054s                                            
run: gitaly: (pid 25930) 387s; run: log: (pid 8280) 157054s                                                                                
run: gitlab-exporter: (pid 25950) 387s; run: log: (pid 8279) 157054s                 
run: gitlab-workhorse: (pid 25953) 386s; run: log: (pid 8287) 157054s                                                  
run: logrotate: (pid 25962) 386s; run: log: (pid 8302) 157054s                                        
down: nginx: 0s, normally up, want up; run: log: (pid 8276) 157054s                                    
run: node-exporter: (pid 26220) 372s; run: log: (pid 8289) 157054s                                                           
run: postgres-exporter: (pid 26228) 371s; run: log: (pid 8275) 157054s                                                                                                                                                                                                           
run: postgresql: (pid 26249) 371s; run: log: (pid 8306) 157054s                             
run: prometheus: (pid 26252) 371s; run: log: (pid 8308) 157054s                                
run: redis: (pid 26270) 370s; run: log: (pid 8284) 157054s                                                    
run: redis-exporter: (pid 26282) 370s; run: log: (pid 8283) 157054s                                                  
run: registry: (pid 26291) 370s; run: log: (pid 13137) 7279s                        
run: sidekiq: (pid 26311) 369s; run: log: (pid 8310) 157054s                                                
run: unicorn: (pid 26331) 368s; run: log: (pid 8294) 157054s  

J’ai jeté un oeil aux logs et j’ai vu:

2020/01/29 12:41:39 [emerg] 8526#0: cannot load certificate "/etc/gitlab/ssl/gitlab.subdomain.domain.tld.crt": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/etc/gitlab/ssl/gitlab.subdomain.domain.tld.crt','r') error:2006D080:
BIO routines:BIO_new_file:no such file)

J’ai donc ajouté les lignes suivantes à /etc/gitlab/gitlab-persistent.rb:

registry_nginx['listen_https'] = true 
registry_nginx['ssl_certificate'] = "/etc/yunohost/certs/gitlab.subdomain.domain.tld/crt.pem"
registry_nginx['ssl_certificate_key'] = "/etc/yunohost/certs/gitlab.subdomain.domain.tld/key.pem"

Ensuite un gitlab-ctl restart et tout allait mieux.

En revanche je voudrais savoir si j’ai bien fait pour le chemin du certificat, c’est celui que j’ai trouvé dans le fichier de conf nginx de yunohost. La config ne risque pas de sauter aux mises à jour?

This topic was automatically closed 15 days after the last reply. New replies are no longer allowed.