Git

GitLab Container Registry-Setup

GitLab Container Registry-Setup
In unserem letzten Beitrag haben wir Ihnen gezeigt, wie Sie eine GitLab-Instanz einrichten können, um die Projekte Ihrer Organisation oder Ihrer persönlichen Projekte zu verwalten. Wir empfehlen Ihnen, einen FQDN zu verwenden und die GitLab-Instanz über HTTPS verfügbar zu haben. Da die meisten Anwendungen als Container verpackt sind, ist es sinnvoll, eine Container-Registry einzurichten, in der verschiedene Versionen Ihrer Anwendung sowie deren verschiedenen Komponenten als Docker-Images gespeichert werden können.

Wenn Sie nicht wissen, was eine Container-Registry ist, machen Sie sich keine Sorgen. Es wird klar, sobald Sie Ihr erstes Container-Image tatsächlich in eine GitLab-Instanz übertragen haben. Stellen Sie sie sich vorerst als Repositorys für Ihre Container-Images vor. Dies sind keine laufenden Container, sondern nur Bilder (einfache Daten), die sich in der entfernten GitLab-Instanz befinden.

Warum sollten Sie eine GitLab-Container-Registry haben??

Es besteht die Möglichkeit, dass Ihre Anwendung entweder als einzelnes Docker-Image oder als Sammlung solcher Images verpackt ist. Dies bedeutet, dass verschiedene Versionen mit unterschiedlichen Images verknüpft werden und die Container-Registrierung Ihnen hilft, sie einzeln zu verfolgen und zu sehen, welche in einer bestimmten Version gebündelt werden sollen.

Registry ist für Container, was Repository für Quellcode ist und GitLab ist ein Ort, um sie alle zu verwalten.

Voraussetzungen

  1. Eine funktionierende GitLab-Instanz über HTTPS
  2. Root-Zugriff auf die Instanz
  3. Zugriff zum Ändern der DNS-Einträge Ihres Domainnamens

Wir gehen davon aus, dass unser GitLab läuft gitlab.Beispiel.com .

Registry-DNS- und TLS-Zertifikate

Sie müssen der Root-Benutzer sein, um die Containerregistrierungsfunktion in der gesamten GitLab-Instanz zu aktivieren. Einzelne Benutzer können diese Funktion dann in ihren jeweiligen Projekten verwenden, wenn sie dies wünschen. Dazu gibt es zwei Möglichkeiten:

  1. Verwenden Sie den vorhandenen Domänennamen und die TLS-Zertifikate für gitlab.Beispiel.com und führen Sie die Registrierung auf einem anderen Port aus.
  2. Zeigen Sie auf einen anderen Domainnamen, sagen wir, Registrierung.gitlab.Beispiel.com an dieselbe IP-Adresse, auf der GitLab läuft und dort die Registry konfigurieren.

Lass uns mit der zweiten Option gehen, da sie viel professioneller ist.

Schritt 1: Fügen Sie einen A-Eintrag hinzu für Registrierung.gitlab.Beispiel.com zeigt auf dieselbe IP, auf der Ihre GitLab-Instanz ausgeführt wird.

Schritt 2: Stoppen Sie die auf Ihrem Server ausgeführten gitlab-Dienste running.

$ sudo gitlab-ctl stop

Schritt 3: ACME-Client hinzufügen certbots PPA auf Ihr System und installieren Sie certbot.

$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-Update
$ sudo apt install certbot

Schritt 4: Erhalten Sie Zertifikate von Let's Encrypt.

$ certbot certonly

Sie sehen eine Nachricht wie:
„'
Wie möchten Sie sich bei der ACME CA authentifizieren??
--
1: Richten Sie einen temporären Webserver ein (eigenständig)
2: Dateien im Webroot-Verzeichnis ablegen (webroot)
--
Wählen Sie die entsprechende Zahl [1-2] und dann [enter] (drücken Sie 'c' zum Abbrechen): 1
„'

Dies wird dann nach Ihrer E-Mail-Adresse fragen, Sie bitten, den Nutzungsbedingungen zuzustimmen, und vor allem nach Ihrem Domainnamen fragen, der so lautet: Registrierung.gitlab.Beispiel.com in unserem Beispielfall. Sie erhalten eine Nachricht, ob die Zertifikate erhalten wurden oder nicht. Wenn ja, fahren Sie mit Schritt 5 fort

Schritt 5: Jetzt, da wir unsere Zertifikate haben, ist es an der Zeit, sie unter GitLab-bezogenen Verzeichnissen abzulegen.

$ cp /etc/letsencrypt/live/registry.gitlab.Beispiel.com/fullchain.pem
/etc/gitlab/ssl/registry.gitlab.Beispiel.crt
$ cp /etc/letsencrypt/live/registry.gitlab.Beispiel.com/privkey.pem
/etc/gitlab/ssl/registry.gitlab.Beispiel.Schlüssel

Sichern Sie die Berechtigungen für sie:

$ chmod 600 /etc/gitlab/ssl/registry.gitlab.Beispiel.com.*

Stellen Sie wie im Rest des Tutorials sicher, dass Sie example . ersetzen.com mit Ihrem bestehenden Domainnamen. Denn so soll das Verzeichnis heißen, in dem certbot das Zertifikat gespeichert hat.

Schritt 6: GitLab-Konfiguration bearbeiten. Öffne die Datei /etc/gitlab/gitlab.rb und fügen Sie am Ende die folgenden Zeilen hinzu:

Registry_external_url 'https://registry.gitlab.Beispiel.com'

Wenn Sie alles sorgfältig gemacht haben, ist der komplizierteste Teil der Einrichtung vorbei! Sie haben jetzt eine Container-Registry in Betrieb, führen Sie einfach aus:

$ sudo gitlab-ctl reconfigure
$ sudo gitlab-ctl start

Aktivieren der Registrierung und Übertragen von Bildern

Da wir nun eine Container Registry für uns selbst haben, erstellen wir ein neues Projekt mit der GitLab-Webbenutzeroberfläche und überprüfen, ob es funktioniert.

In der linken Spalte sehen Sie einen Registrierungsbereich.  Sie können darauf klicken, um detaillierte Anweisungen zum Anmelden und Übertragen von Bildern anzuzeigen. Gehen wir zurück zu unserem lokalen Desktop, auf dem Docker installiert sein sollte.

Wir können es verwenden, um einen einfachen Hello-World-Container zu erstellen und ihn in diese Registry zu übertragen. Erstellen Sie in Ihrem lokalen System einen neuen Ordner:

$ cd ~
$ mkdir sample_container

Lassen Sie uns darin eine Datei namens . erstellen Dockerfile und fügen Sie folgende Inhalte hinzu:

VON Ubuntu: neuestes
## Ihre benutzerdefinierten Befehle hier

Sie können Ihr Dockerfile mit nur der ersten Zeile behalten. Es wird ein einfacher Ubuntu-Container sein. Jetzt bauen Sie es mit einem aussagekräftigen Tag (wir werden das Tag verwenden Mein Projekt was mit unserem GitLab-Projektnamen identisch ist, das ist wichtig). Im gleichen Verzeichnis ausführen:

$ docker build -t Registrierung.gitlab.Beispiel.com//Mein Projekt .

Denken Sie daran, Ihren GitLab-Benutzernamen anstelle des . zu ersetzen Platzhalter, der im obigen Befehl verwendet wird.

Es erstellt nur einen Ubuntu-Container zusammen mit dem Abrufen des Images. Dieses Bild wird gepusht. Wenn Sie den Container ändern und damit ein neues Image erstellen (mit Docker-Commit Befehl, es wird ein neues Bild sein). Lassen Sie uns das Vanilla-Ubuntu-Image in unsere Registrierung verschieben.

Zuerst müssen wir uns mit unserem Gitlab-Benutzernamen und Passwort anmelden:

$ Docker-Login-Registrierung.gitlab.Beispiel.com

Dann renne:

$ docker build -t Registrierung.gitlab.Beispiel.com/root/mein-projekt .
$ Docker Push-Registrierung.gitlab.Beispiel.com/root/mein-projekt

Wenn Sie sich nicht sicher sind, wie das Tag Ihres Containers aussehen soll, besuchen Sie die Registrierungsseite Ihres Projekts und es gibt klare Anweisungen dafür. Wenn der docker push-Befehl ordnungsgemäß funktioniert hat, können Sie sehen, wie ein neues Docker-Image in Ihre GitLab-Instanz hochgeladen (oder gepusht) wird. Wie es in meinem Fall gezeigt wurde:

Fazit

Versionskontrolle ist so viel mehr als nur Quellcodeverwaltung. Es wird ständig verbessert, um eine Vielzahl von Anforderungen zu erfüllen, die jedes Softwareprojekt unerwartet erfordern kann. Containerregister ist nur die Spitze des Eisbergs. Sie können in GitLab pipeline CD/CI-Pipelines, erweitertes Konfigurationsmanagement, Autorisierung über Token und eine Vielzahl anderer Funktionen aktivieren. Ich hoffe, Sie haben in diesem Tutorial etwas Neues über diese wunderbare Technologie gelernt.

Lassen Sie es uns wissen, wenn wir etwas abdecken möchten us!

So entwickeln Sie ein Spiel unter Linux
Vor einem Jahrzehnt hätten nicht viele Linux-Benutzer vorhergesagt, dass ihr Lieblingsbetriebssystem eines Tages eine beliebte Spieleplattform für kom...
Open-Source-Ports kommerzieller Spiele-Engines
Kostenlose, quelloffene und plattformübergreifende Spiel-Engine-Nachbildungen können verwendet werden, um sowohl alte als auch einige der relativ neue...
Beste Befehlszeilenspiele für Linux
Die Befehlszeile ist nicht nur Ihr größter Verbündeter bei der Verwendung von Linux – sie kann auch eine Quelle der Unterhaltung sein, da Sie damit vi...