Softwarelevering standaardiseren met OCI Artifacts, ORAS en Docker Hub

0
67

Docker Hub is de bekendste registry voor het distribueren en delen van containerimages. Docker Hub en andere OCI-compatibele registers kunnen nu echter meer doen dan alleen container-images. Het ORAS-project (OCI Registry As Storage) transformeert registers in generieke artefact-archieven, die in staat zijn om elk item te publiceren dat relevant is voor uw toepassing.

In dit artikel leert u wat ORAS is, de uitdagingen die het met zich meebrengt oplost en hoe u ermee aan de slag kunt met Docker Hub.

Docker Hub versus OCI Registries

Laten we eerst één detail duidelijk maken: het containerecosysteem is meer dan alleen Docker. De tools en processen waarmee Docker pionierde, zijn gestandaardiseerd door de OCI. Docker is nu één implementatie van de OCI-specificaties, naast andere compatibele containersystemen zoals Podman en Kubernetes.

Docker Hub is een OCI Registry-compatibel platform voor het leveren van container-images. OCI-containertools kunnen inhoud van Docker Hub en andere registers gebruiken via opdrachten zoals docker pull en docker push. Hoewel deze voorheen alleen werkten met container-images, kunt u nu hetzelfde mechanisme gebruiken om de andere componenten van uw app te distribueren.

Waarom generieke artefacten ertoe doen

Deze functionaliteit wordt ontwikkeld onder de vlag van ORAS. Het hermodelleert registers als “algemene artefact-winkels” waarmee u kunt communiceren met behulp van de bekende push/pull-workflow.

Een artefact is alles wat een gebruiker nodig heeft om uw software met succes uit te voeren. Dit kan een containerimage zijn, of een ander type item dat zinvol is voor uw project:

  • Roerdiagrammen
  • Vooraf gecompileerde binaire bestanden en installatiepakketten
  • SBOM's
  • Aanbevolen beveiligingsbeleidsconfiguraties, zoals OPA-regels
  • Handtekeningen, certificaten en metadata vrijgeven

Deze vitale activa zijn vaak moeilijk te vinden voor gebruikers. Ze zijn meestal verspreid over verschillende bronbeheerplatforms, pakketbeheerders en directe website-downloads. Met ORAS kunt u alles in één gecentraliseerd register deponeren en gebruikers vervolgens inhoud laten ophalen met behulp van een enkele set tools en inloggegevens. Het bekijken van de SBOM voor uw v1.1.0-release is net zo eenvoudig als bijvoorbeeld het ophalen van example.com/my-app/sbom:v1.1.0.

Is ORAS een grote verandering voor container-images?

ORAS breekt geen bestaande containerregisterfuncties. U kunt opdrachten zoals docker push my-image:latest blijven uitvoeren om uw afbeeldingen te verplaatsen.

Achter de schermen zijn er echter aanzienlijke wijzigingen in de opslag van inhoud. ORAS verwijdert de historische veronderstelling dat alle registerinhoud een afbeelding is. Om artefacten te ondersteunen, moeten registers het type van elke voltooide upload bijhouden. Verschillende soorten artefacten worden “mediatypen” binnen ORAS.

Populaire gemeenschapsprojecten kunnen hun eigen mediatypen registreren om veelgebruikte artefactclassificaties, zoals Helm-grafieken, te identificeren. Hierdoor kunnen registerproviders relevante informatie weergeven over de artefacten die u hebt opgeslagen.

Het mediatype containerimage wordt automatisch gebruikt wanneer u pusht vanuit bestaande tools zoals docker push. Een standaard “onbekende” type wordt toegepast wanneer u rechtstreeks vanuit de ORAS CLI uploadt, tenzij u een geregistreerd type opgeeft.

De ORAS CLI installeren

U hebt de ORAS CLI om artefacten met willekeurige typen te pushen en te trekken. U kunt de nieuwste versie downloaden van de GitHub-releasepagina van het project. Alleen macOS- en Linux-systemen worden momenteel ondersteund.

Pak het gedownloade archief uit en kopieer vervolgens het binaire bestand oras naar een locatie die zich in uw pad bevindt:

$ tar -zxf oras_0.16.0_*.tar.gz -C oras-install/$ mv oras-install/oras /usr/local/bin/$ rm -rf oras_0.16.0_*.tar.gz oras-install/

Controleer of uw binaire bestand werkt door het commando oras version uit te voeren:

$ oras version 0.16.0

Nu bent u klaar om ORAS te gaan gebruiken.

ORAS gebruiken met Docker Hub

ORAS is alleen compatibel met registers die ondersteuning voor de OCI Artifacts-specificatie hebben geïmplementeerd. Deze lijst bevat nu de meeste grote leveranciers, waaronder Amazon ECR, Azure, Google en GitHub, evenals zelfgehoste instanties die zijn geïmplementeerd met behulp van de CNCF-distributie.

We gebruiken Docker Hub voor dit artikel omdat dit de meest populaire registeroplossing is. Het heeft volledige ondersteuning voor OCI Artifacts toegevoegd in november 2022.

Log in op uw register

ORAS hergebruikt automatisch registerreferenties die u eerder aan uw ~/.docker/config.json-bestand hebt toegevoegd. Als u zich moet aanmelden bij Docker Hub, kunt u docker login of oras login gebruiken om dit te doen:

$ oras login -u gebruikersnaam -p password_or_personal_access_token $ docker login -u gebruikersnaam -p password_or_personal_access_token

Maak vervolgens een eenvoudig bestand om naar het register te uploaden. Onthoud dat er geen beperkingen zijn voor het soort activa dat u pusht. Dit voorbeeld is een gekunsteld JSON-bestand dat de status van het project beschrijft, maar u kunt alles uploaden dat nuttig is voor uw gebruikers of ontwikkelaars.

$ echo '{“app”: “oras-demo”, “version”: “1.1.0”}' > artefact.json

U bent nu klaar om uw bestand te pushen met de ORAS CLI.

Push Your Artifact

Voer de volgende opdracht om uw artefact te pushen, na het vervangen van <gebruikersnaam> met uw daadwerkelijke Docker Hub-gebruikersnaam:

$ oras push docker.io/<gebruikersnaam>/oras-demo:1.1.0 artefact.json:application/json –artifact-type application/vnd.unknown.config.v1+json Uploaden 7ac68d8d2a12 artefact.json Geüpload 7ac68d8d2a12 artefact.json Gepusht docker.io/ilmiont/oras-demo:1.1.0 Digest: sha256:41abfed0ab43a24933c5eafe3c363418264a59eee527821a39fe7c0abf25570b

Er zijn een paar opmerkelijke details in deze opdracht:

  • De eerste argumenten definiëren het register waarnaar moet worden gepusht en de tag die aan het artefact moet worden toegewezen. Dit is vergelijkbaar met het pushen van een containerafbeeldingstag.
  • In tegenstelling tot de docker CLI, vereist ORAS dat u de register-URL opgeeft (docker.io voor Docker Hub). ORAS is een algemene tool die geen aannames kan doen over wat of waar u pusht.
  • Het tweede argument specificeert het pad naar het bestand dat u uploadt in filename:content -type formaat. Aangezien het voorbeeldbestand JSON is, is het inhoudstype application/json geselecteerd.
  • Het derde argument specificeert het ORAS-artefacttype (mediatype) dat aan uw artefact moet worden toegewezen. U moet een standaard mediatype gebruiken als u een geregistreerd soort artefact uploadt, zoals een Helm-grafiek, maar de “onbekende” standaard is geschikt voor deze demo.

De voortgang van het uploaden wordt weergegeven in uw terminal, vergelijkbaar met een gewone docker-push. Probeer de opdracht oras repo tags uit te voeren om te bevestigen dat de push is voltooid:

$ oras repo tags docker.io/<gebruikersnaam>/oras-demo 1.1.0

Artefacten beheren in de gebruikersinterface van Docker Hub

Uw artefact verschijnt ook op de Docker Hub-website. In de lijst Repositories ziet u Bevat: Overig om aan te geven dat de repository een generiek artefact bevat. Opslagplaatsen voor containerafbeeldingen zijn gelabeld als Bevat: Afbeelding.

Selecteer de repository om de details te bekijken, een beschrijving toe te voegen en alle beschikbare tags te zien. Het is vergelijkbaar met het werken met containerafbeeldingen.

Je artefact trekken

Nu uw artefact beschikbaar is in het register, kunt u nu overschakelen naar een andere machine en de stappen herhalen om de ORAS CLI te installeren en in te loggen op uw Docker Hub-account. Zodra u zich heeft geauthenticeerd, gebruikt u de opdracht oras pull om uw artefact op te halen:

$ oras pull docker.io/<gebruikersnaam>/oras-demo:1.1.0 7ac68d8d2a12 artefact.json gedownload 7ac68d8d2a12 artefact. json Pulled docker.io/ilmiont/oras-demo:1.1.0 Digest: sha256:41abfed0ab43a24933c5eafe3c363418264a59eee527821a39fe7c0abf25570b

De bestanden in het artefact worden in uw werkdirectory geplaatst:

$ ls artefact.json $ cat artefact.json {“app”: “demo-oras”, “version”: “1.1.0”}

U hebt met succes ORAS gebruikt om de artefacten van uw toepassing te distribueren, gebruikmakend van de bestaande infrastructuur die beschikbaar is bij uw containerregisterprovider.

Samenvatting

ORAS transformeert container image registers in generieke distributieplatforms. U kunt elk artefact dat relevant is voor uw toepassing pushen en gebruikers kunnen het ophalen met behulp van één consistent mechanisme. Dit voorkomt dat u meerdere leveringskanalen moet onderhouden, publiceren naar en schakelen tussen meerdere leveringskanalen.

ORAS-ondersteuning wordt ook toegevoegd aan populaire ecosysteemtools. Met Helm kunt u bijvoorbeeld direct grafieken naar een ORAS-register pushen met behulp van de helm push-opdracht. Dit voorkomt dat u de grafiek handmatig moet exporteren, zodat u deze kunt pushen met of als push. Het regelt ook het instellen van het juiste ORAS-mediatype voor u. U kunt meer tools verwachten om ORAS te integreren, zodat u allerlei soorten inhoud rechtstreeks naar uw gecentraliseerde register kunt pushen.

LEES VOLGENDE

  • › De goedkoopste videodeurbel van Ring heeft zojuist zijn beste prijs tot nu toe bereikt
  • › De nieuwe MacBook Pro's hebben nog snellere opslag
  • › AMD's nieuwe Ryzen 7000X3D CPU is nog beter geworden
  • › De iPhone heeft zojuist een fantastische nieuwe Mastodon-app gekregen
  • › 3 manieren om hyperlinks in Microsoft Excel in te voegen
  • › Koop een Samsung 980 Pro SSD van 1 TB voor slechts $ 120