Als u niet weet wat een containerregister is, hoeft u zich geen zorgen te maken. Het wordt duidelijk zodra je je eerste container-image daadwerkelijk in een GitLab-instantie hebt gepusht. Zie ze voorlopig als opslagplaatsen voor uw containerafbeeldingen. Dit zijn geen draaiende containers, maar alleen afbeeldingen (plain data) die in de externe GitLab-instantie zitten.
Waarom zou je een GitLab-containerregister willen??
De kans is groot dat uw toepassing is verpakt als een enkele Docker-afbeelding of als een verzameling van dergelijke afbeeldingen. Dit betekent dat verschillende versies worden gekoppeld aan verschillende afbeeldingen en het containerregister helpt u om ze afzonderlijk bij te houden en om te zien welke samen in een bepaalde release moeten worden gebundeld.
Register is voor containers, wat repository is voor broncode en GitLab is één plek om ze allemaal af te handelen.
Vereisten
- Een werkende GitLab-instantie via HTTPS
- Root-toegang tot de instantie
- Toegang om de DNS-records van uw domeinnaam te wijzigen
We gaan ervan uit dat ons GitLab draait gitlab.voorbeeld.com .
Register DNS- en TLS-certificaten
U moet de rootgebruiker zijn om de containerregisterfunctie voor de GitLab-instantie in te schakelen. Individuele gebruikers kunnen er vervolgens voor kiezen om deze functie in hun respectievelijke projecten te gebruiken, als ze dat willen. Er zijn twee manieren om dit te doen:
- Hergebruik de bestaande domeinnaam en TLS-certificaten voor: gitlab.voorbeeld.com en voer het register uit op een andere poort.
- Wijs een andere domeinnaam aan, laten we zeggen, register.gitlab.voorbeeld.com naar hetzelfde IP-adres waar GitLab draait en configureer het register daar.
Laten we gaan met de tweede optie omdat deze veel professioneler is.
Stap 1: Voeg een A-record toe voor register.gitlab.voorbeeld.com wijzend naar hetzelfde IP-adres waar uw GitLab-instantie wordt uitgevoerd.
Stap 2: Stop de gitlab-services die op uw server worden uitgevoerd.
$ sudo gitlab-ctl stopStap 3: ACME-client toevoegen certbot's PPA naar uw systeem en installeer certbot.
$ sudo add-apt-repository ppa:certbot/certbot$ sudo apt-update
$ sudo apt install certbot
Stap 4: Verkrijg certificaten van Let's Encrypt.
$ certbot alleen gecertificeerdU ziet een bericht als:
"'
Hoe wilt u zich authenticeren met de ACME CA?
--
1: Start een tijdelijke webserver (standalone)
2: Plaats bestanden in de webroot-map (webroot)
--
Selecteer het juiste nummer [1-2] en vervolgens [enter] (druk op 'c' om te annuleren): 1
"'
Dit zal dan om uw e-mailadres vragen, u vragen om akkoord te gaan met hun servicevoorwaarden en, belangrijker nog, u om uw domeinnaam vragen die zou zijn register.gitlab.voorbeeld.com in ons voorbeeldgeval. U krijgt een bericht waarin staat of de certificaten al dan niet zijn behaald. Als dat zo was, ga dan verder met stap 5
Stap 5: Nu we onze certificaten hebben, is het tijd om ze onder GitLab-gerelateerde mappen te plaatsen.
$ cp /etc/letsencrypt/live/registry.gitlab.voorbeeld.com/fullchain.pem/etc/gitlab/ssl/registry.gitlab.voorbeeld.crt
$ cp /etc/letsencrypt/live/registry.gitlab.voorbeeld.com/privkey.pem
/etc/gitlab/ssl/registry.gitlab.voorbeeld.sleutel
Beveilig de machtigingen op hen:
$ chmod 600 /etc/gitlab/ssl/registry.gitlab.voorbeeld.com.*Zorg ervoor dat u, net als de rest van de tutorial, voorbeeld vervangt.com met uw bestaande domeinnaam. Aangezien dat is wat de naam van de map zal zijn, waar certbot het certificaat heeft opgeslagen.
Stap 6: GitLab-configuratie bewerken. Open het bestand /etc/gitlab/gitlab.rb en voeg de volgende regels toe aan de onderkant ervan:
registry_external_url 'https://registry'.gitlab.voorbeeld.kom'Als je alles zorgvuldig hebt gedaan, is het meest gecompliceerde deel van de installatie voorbij! U hebt nu een Container-register in gebruik, voer gewoon uit:
$ sudo gitlab-ctl opnieuw configureren$ sudo gitlab-ctl start
Register inschakelen en afbeeldingen pushen
Nu we een containerregister voor onszelf hebben, laten we een nieuw project maken met behulp van de GitLab-webgebruikersinterface en controleren of het werkt.
In de linkerkolom ziet u een registergedeelte. U kunt erop klikken om gedetailleerde instructies te zien over hoe u kunt inloggen en afbeeldingen erin kunt pushen. Laten we teruggaan naar onze lokale desktop, waarop Docker zou moeten zijn geïnstalleerd.
We kunnen het gebruiken om een eenvoudige hello-world container te bouwen en deze naar dit register te pushen. Maak in uw lokale systeem een nieuwe map:
$ cd ~$ mkdir sample_container
Laten we binnenin een bestand maken met de naam Dockerbestand en voeg er de volgende inhoud aan toe:
VAN ubuntu:laatste## Uw aangepaste commando's hier
U kunt uw Docker-bestand behouden met alleen de eerste regel. Het wordt een gewone ubuntu-container. Nu bouw je het met een betekenisvolle tag (we zullen de tag gebruiken) mijn project wat hetzelfde is als onze GitLab-projectnaam, dit is belangrijk). Voer in dezelfde map uit:
$ docker build -t register.gitlab.voorbeeld.com/Vergeet niet om uw GitLab-gebruikersnaam te vervangen in plaats van de
Het maakt gewoon een Ubuntu-container samen met het ophalen van de afbeelding. Dit beeld is wat wordt gepusht. Als u de container wijzigt en er een nieuwe afbeelding mee maakt (met havenarbeider commit commando het zal een nieuwe afbeelding zijn). Laten we de vanille-ubuntu-afbeelding naar ons register pushen.
Eerst moeten we inloggen met onze Gitlab-gebruikersnaam en -wachtwoord:
$ docker login register.gitlab.voorbeeld.comVoer dan uit:
$ docker build -t register.gitlab.voorbeeld.com/root/mijn-project .$ docker push-register.gitlab.voorbeeld.com/root/mijn-project
Als u niet zeker weet wat de tag van uw container moet zijn, gaat u naar de registerpagina van uw project en vindt u er duidelijke instructies voor. Als de docker-push-opdracht correct heeft gewerkt, kunt u zien dat een nieuwe docker-afbeelding wordt geüpload (of gepusht) in uw GitLab-instantie. Zoals het in mijn geval werd getoond:
Conclusie
Versiebeheer is zoveel meer dan alleen broncodebeheer. Het wordt voortdurend verbeterd om tegemoet te komen aan een veelzijdige reeks eisen die elk softwareproject onverwachts nodig kan hebben. Containerregistratie is slechts het topje van de ijsberg. U kunt CD/CI-pipelines, geavanceerd configuratiebeheer, autorisatie via tokens en tal van andere functionaliteiten inschakelen in GitLab. Ik hoop dat je in deze tutorial iets nieuws hebt geleerd over deze geweldige technologie.
Laat het ons weten als er iets is dat je wilt dat we behandelen!