Setup del registro dei container Gitlab

Setup del registro dei container Gitlab
Nel nostro ultimo post ti abbiamo mostrato come è possibile impostare un'istanza Gitlab per gestire la tua organizzazione o i tuoi progetti personali. Ti abbiamo consigliato di utilizzare un FQDN e avere l'istanza GitLab disponibile su HTTPS. Poiché la maggior parte delle applicazioni sono confezionate come contenitori, è ragionevole impostare un registro dei contenitori in cui diverse versioni dell'applicazione, così come i suoi diversi componenti, possono essere archiviati come immagini Docker.

Se non sai cosa sia un registro dei container, non preoccuparti. Diventerà chiaro dopo aver effettivamente spinto la tua prima immagine del contenitore in un'istanza Gitlab. Per ora, pensa a loro come repository per le immagini del tuo contenitore. Questi non sono contenitori in esecuzione ma solo immagini (dati semplici) seduti nell'istanza Gitlab remota.

Perché vorresti un registro dei container Gitlab?

È probabile che l'applicazione sia confezionata come un'immagine a singolo docker o una raccolta di tali immagini. Ciò significa che versioni diverse saranno associate a diverse immagini e registro dei contenitori ti aiuteranno a tenerne traccia individualmente e vedere quali devono essere bundle insieme in una versione particolare.

Il registro è ai contenitori, quale repository è quello di sorgere codice e gitlab è un posto per gestirli tutti.

Prerequisiti

  1. Un'istanza Gitlab funzionante su HTTPS
  2. Accesso alla root all'istanza
  3. Accesso a modificare i record DNS del nome di dominio

Supponiamo che il nostro gitlab sia in esecuzione gitlab.esempio.com .

Certificati Registry DNS e TLS

È necessario essere l'utente root per abilitare la funzione Registro dei contenitori attraverso l'istanza GitLab. I singoli utenti possono quindi scegliere di utilizzare questa funzione nei rispettivi progetti, se lo desiderano. Ci sono due modi per farlo:

  1. Riutilizzare il nome di dominio esistente e i certificati TLS per gitlab.esempio.com e eseguire il registro su un porto diverso.
  2. Punta un altro nome di dominio, diciamo, registro.gitlab.esempio.com allo stesso indirizzo IP in cui Gitlab è in esecuzione e configura il registro lì.

Andiamo con la seconda opzione in quanto è molto più professionale.

Passo 1: Aggiungi un record A per registro.gitlab.esempio.com indicando lo stesso IP in cui è in esecuzione la tua istanza Gitlab.

Passo 2: Ferma i servizi Gitlab in esecuzione nel tuo server.

$ sudo gitlab-ctl stop

Passaggio 3: Aggiungi client ACME Certbot's PPA al sistema e installa certbot.

$ sudo ADD-APP-Repository PPA: certbot/certbot
$ sudo apt update
$ sudo apt install certbot

Passaggio 4: Ottieni certificati da Let's Cript.

$ CERTBOT CERTONLY

Vedrai un messaggio come:
""
Come vorresti autenticare con Acme CA?
--
1: girare un server web temporaneo (autonomo)
2: posizionare i file nella directory di Webroot (Webroot)
--
Seleziona il numero appropriato [1-2] quindi [Enter] (premere 'C' per annullare): 1
""

Questo chiederà quindi la tua e -mail, ti chiederà di accettare i loro termini di servizio e, soprattutto, chiederti il ​​tuo nome di dominio che sarebbe registro.gitlab.esempio.com Nel nostro caso di esempio. Riceverai un messaggio che dice se sono stati ottenuti o meno i certificati. Se lo fossero, passa al passaggio 5

Passaggio 5: Ora che abbiamo i nostri certificati, è tempo di metterli sotto le directory relative a Gitlab.

$ cp/etc/letsencrypt/live/registry.gitlab.esempio.com/fullchain.PEM
/etc/gitlab/ssl/registro.gitlab.esempio.Crt
$ cp/etc/letsencrypt/live/registry.gitlab.esempio.com/privkey.PEM
/etc/gitlab/ssl/registro.gitlab.esempio.chiave

Proteggere le autorizzazioni su di loro:

$ chmod 600/etc/gitlab/ssl/registro.gitlab.esempio.com.*

Come il resto del tutorial, assicurati di sostituire l'esempio.com con il tuo nome di dominio esistente. Dal momento che è quello che sarà il nome della directory, dove certbot ha memorizzato il certificato.

Passaggio 6: Modifica configurazione Gitlab. Apri il file /etc/gitlab/gitlab.Rb e aggiungi le seguenti righe in fondo:

registry_external_url 'https: // registry.gitlab.esempio.com

Se hai fatto tutto attentamente, la parte più complicata della configurazione è finita! Ora avrai un registro dei container attivo e funzionante, esegui solo:

$ sudo gitlab-ctl riconfigurazione
$ sudo gitlab-ctl start

Abilitare il registro e spingere le immagini

Ora che dobbiamo con noi stessi un registro dei container, creiamo un nuovo progetto utilizzando l'interfaccia utente di Gitlab Web e verifichiamo che funzioni.

Nella colonna di sinistra è possibile vedere una sezione di registro. Puoi fare clic su di esso per vedere istruzioni dettagliate su come accedere e spingere le immagini dentro. Torniamo al nostro desktop locale, che dovrebbe avere Docker installato su di esso.

Possiamo usarlo per costruire un semplice contenitore Hello-World e spingerlo in questo registro. Nel tuo sistema locale, crea una nuova cartella:

$ cd ~
$ mkdir sample_container

Al suo interno creiamo un file denominato Dockerfile e aggiungi i seguenti contenuti:

Da Ubuntu: ultimo
## i tuoi comandi personalizzati qui

Puoi mantenere il tuo Dockerfile con solo la prima riga. Sarà un semplice contenitore Ubuntu. Ora lo costruisci con un tag significativo (useremo il tag il mio progetto Che è uguale al nome del nostro progetto Gitlab, questo è importante). Nella stessa corsa di directory:

$ Docker Build -t Registry.gitlab.esempio.com//il mio progetto .

Ricorda di sostituire il tuo nome utente Gitlab invece del segnaposto usato nel comando sopra.

Crea solo un contenitore Ubuntu insieme a prendere l'immagine. Questa immagine è ciò che viene spinto. Se si modifica il contenitore e si crea una nuova immagine con esso (usando Docker Commit comando sarà una nuova immagine). Spingiamo l'immagine della vaniglia Ubuntu nel nostro registro.

Per prima cosa dobbiamo accedere usando il nostro nome utente e password Gitlab:

Registro di accesso $ Docker.gitlab.esempio.com

Quindi corri:

$ Docker Build -t Registry.gitlab.esempio.com/root/my-project .
$ Docker Push Registry.gitlab.esempio.com/root/my-project

Se non sei sicuro di quale dovrebbe essere il tag del tuo contenitore, visita la pagina del registro del tuo progetto e ci saranno istruzioni chiare per questo. Se il comando Docker Push ha funzionato correttamente, puoi vedere una nuova immagine Docker che viene caricata (o spinta) nell'istanza Gitlab. Come è stato mostrato nel mio caso:

Conclusione

Il controllo della versione è molto più che una semplice gestione del codice sorgente. È costantemente migliorato per soddisfare una serie versatile di richieste che qualsiasi progetto software possa aver bisogno inaspettatamente. Il registro dei container è solo la punta dell'iceberg. È possibile avere condotte CD/CI, gestione avanzata di configurazione, autorizzazione tramite token e una moltitudine di altre funzionalità abilitate in GitLab. Spero che tu abbia imparato qualcosa di nuovo su questa meravigliosa tecnologia in questo tutorial.

Facci sapere se c'è qualcosa che vuoi che copriamo!