Nel precedente articolo avevo mostrato come procedere all’installazione di GitLab su un nostro server locale, clicca qui per leggerlo.

GitLab è uno strumento leader nel mondo DevOps, oggi è tra i più diffusi per il versionamento del proprio codice software, ma oltre a questo è molto di più!
GitLab tra le tante funzionalità, mette a disposizione anche un Container Registry.

Il GitLab Container Registry è un registro integrato all’interno di GitLab stesso, che consente di archiviare, condividere e distribuire facilmente le immagini dei container all’interno dei progetti GitLab.

Questa integrazione, insieme a GitLab CI, rende GitLab una piattaforma completa per automatizzare e accelerare i processi DevOps, semplificando ulteriormente l’intero ciclo di vita dello sviluppo software.

Se utilizzate GitLab come servizio direttamente su gitlab.com, troverete il registry già abilitato, se invece lo avete installato su un vostro server locale sarà necessario abilitarlo.

La documentazione ufficiale può sembrare molto esaustiva ma spesso ci si perde tra i dettagli.
In questa guida vi mostrerò brevemente solo quattro semplici stringhe da modificare per abilitare il registry.

Partiamo dalla premessa che voi siate l’amministratore del sistema e che ne abbiate accesso e pieno controllo, il file da editare sarà il classico "/etc/gitlab/gitlab.rb".

Limitiamoci a editare queste sole stringhe, ovviamente voi adattatele alla vostra url

registry_external_url 'https://gitlab.marcofanuntza.it:5050'

gitlab_rails['registry_enabled'] = true
gitlab_rails['registry_host'] = "gitlab.marcofanuntza.it"

gitlab_rails['registry_path'] = "/var/opt/gitlab/gitlab-rails/shared/registry"

Dovete sapere che potete impostare una url specifica esclusiva per il registry, come per esempio registry.gitlab.esempio.it ma nel mio caso ho preferito avere un’unico indirizzo in comune con il servizio principale. Salvate il file e subito dopo eseguite il comando per applicare la configurazione alla vostra istanza in esecuzione con:

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

Prima di procedere con ulteriori test assicuratevi che la porta 5050 sia ora in ascolto, è la porta default che viene utilizzata per contattare il registry, se la porta è in ascolto possiamo andare avanti.

Ora già per un primo controllo “visivo” accedete su un vostro project all’interno di gitlab, tra le voci presenti sulla sinistra andate su “Deploy” dovrebbe esservi apparsa nel sottomenù la voce “Container Ragistry”

Example image

Entrando sulla pagina vi mostrerà i comandi da eseguire sul vostro client docker per procedere con creazione e upload del container sul vostro nuovo Gitlab Container Registry

Example image

Procediamo con quest’ultima verifica direttamente dal client Docker…

Dobbiamo istruire il nostro client per considerare il registry come “insicuro” editando/creando il file /etc/docker/daemon.json

{
    "insecure-registries" : [ "https://gitlab.marcofanuntza.it:5050" ]
}

Non allarmatevi questa istruzione è necessaria quando si utilizza un certificato self-signed e la CA non può essere verificata da Docker

Per la successiva build prepariamo un semplice Dockerfile come segue:

FROM ubuntu

RUN apt-get update

CMD ["echo", "Ciao, Gitlab Registry!"]

Adesso siamo pronti! eseguiamo il login con il primo comando, le credenziali saranno le stesse del vostro user gitlab che vi permette di accedere al progetto

docker login gitlab.marcofanuntza.it:5050

Con il comando che segue eseguiamo la build del nostro container

docker build -t gitlab.marcofanuntza.it:5050/utentezero/testregistry .

Ora il momento cruciale, con il comando successivo carichiamo l’immagine docker finalmente sul nostro Gitlab Container Registry

docker push gitlab.marcofanuntza.it:5050/utentezero/testregistry

Nel prossimo articolo cercherò di mostrarvi lo stesso concetto però eseguito in automatico da una pipeline, sempre all’interno di Gitlab!