Hur man standardiserar programvaruleverans med OCI Artifacts, ORAS och Docker Hub

0
17

Docker Hub är det mest kända registret för att distribuera och dela behållarbilder. Docker Hub och andra OCI-kompatibla register kan nu göra mer än bara containerbilder. ORAS-projektet (OCI Registry As Storage) omvandlar register till generiska artefaktbutiker, som kan publicera alla tillgångar som är relevanta för din applikation.

I den här artikeln får du lära dig vad ORAS är, vilka utmaningar det är. löser och hur du kommer igång med att använda det med Docker Hub.

Docker Hub vs OCI-register

Låt oss först få en detalj klar: containerekosystemet är mer än bara Docker. Verktygen och processerna som Docker var banbrytande för har standardiserats av OCI. Docker är nu en implementering av OCI-specifikationerna, tillsammans med andra kompatibla containersystem som Podman och Kubernetes.

Docker Hub är en OCI Registry-kompatibel plattform för att leverera containerbilder. OCI containerverktyg kan konsumera innehåll från Docker Hub och andra register via kommandon som docker pull och docker push. Även om dessa tidigare bara har fungerat med behållarbilder, kan du nu använda samma mekanism för att distribuera din apps andra komponenter.

Why Generic Artifacts Matter

Denna funktion utvecklas under ORAS-bannern. Det gör om register som “generiska artefaktbutiker” som du kan interagera med med hjälp av det välbekanta push/pull-arbetsflödet.

En artefakt är allt som en användare kan behöva för att framgångsrikt köra din programvara. Detta kan vara en containeravbildning eller en annan typ av tillgång som är vettig för ditt projekt:

  • Hjälpdiagram
  • Förkompilerade binärer och installationspaket
  • SBOM
  • Rekommenderade säkerhetspolicykonfigurationer, såsom OPA-regler
  • Releasesignaturer, certifikat och metadata

Dessa viktiga tillgångar kan ofta vara svåra för användare att hitta. De tenderar att vara utspridda över olika källkontrollplattformar, pakethanterare och direkta nedladdningar av webbplatser. Med ORAS kan du sätta in allt i ett centraliserat register och sedan låta användare hämta innehåll med en enda uppsättning verktyg och referenser. Att visa SBOM för din version 1.1.0 är lika enkelt som till exempel oras pull example.com/my-app/sbom:v1.1.0.

Är ORAS en brytande förändring för containerbilder?

ORAS bryter inte några befintliga containerregisterfunktioner. Du kan fortsätta köra kommandon som docker push my-image:latest för att flytta runt dina bilder.

Det finns dock betydande förändringar av innehållslagring bakom kulisserna. ORAS tar bort det historiska antagandet att allt registerinnehåll är en bild. För att stödja artefakter måste registren spåra typen av varje uppladdning som har slutförts. Olika typer av artefakter kallas “medietyper” inom ORAS.

Populära gemenskapsprojekt kan registrera sina egna mediatyper för att identifiera vanliga artefaktklassificeringar, till exempel Helm-diagram. Detta gör att registerleverantörer kan visa relevant information om de artefakter som du har lagrat.

Behållarbildsmedietypen används automatiskt när du trycker från befintliga verktyg som docker-push. En standard “okänt” typ tillämpas när du laddar upp direkt från ORAS CLI, om du inte anger en registrerad typ.

Installera ORAS CLI

Du behöver ORAS CLI för att trycka och dra artefakter med godtyckliga typer. Du kan ladda ner den senaste versionen från projektets GitHub-versionssida. Endast macOS- och Linux-system stöds för närvarande.

Extrahera det nedladdade arkivet och kopiera sedan oras-binären till en plats som ligger i din väg:

$ 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/

Kontrollera att ditt binära program fungerar genom att köra versionskommandot för oras:

$ oras version 0.16.0

Nu är du redo att börja använda ORAS.

Använda ORAS med Docker Hub

ORAS är endast kompatibelt med register som har implementerat stöd för OCI Artifacts-specifikationen. Den här listan innehåller nu de flesta större leverantörer, inklusive Amazon ECR, Azure, Google och GitHub, samt instanser som är värdar för sig själv som distribueras med hjälp av CNCF-distributionen.

Vi kommer att använda Docker Hub för den här artikeln eftersom det är den mest populära registerlösningen. Det lade till fullt stöd för OCI Artifacts i november 2022.

Logga in på ditt register

ORAS återanvänder automatiskt registeruppgifter som du tidigare har lagt till i filen ~/.docker/config.json. Om du behöver logga in på Docker Hub kan du köra antingen docker-inloggning eller oras-inloggning för att göra det:

$ oras login -u användarnamn -p password_or_personal_access_token $ docker login -u användarnamn -p password_or_personal_access_token

Skapa sedan en enkel fil att ladda upp till registret. Kom ihåg att det inte finns några begränsningar för vilken typ av tillgång du använder. Det här exemplet är en konstruerad JSON-fil som beskriver projektets status, men du kan ladda upp allt som kommer att vara användbart för dina användare eller utvecklare.

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

Nu är du redo att skicka din fil med ORAS CLI.

Push Your Artifact

Kör följande kommando för att skicka din artefakt, efter att ha ersatt <användarnamn> med ditt faktiska Docker Hub-användarnamn:

$ oras push docker.io/<användarnamn>/oras-demo:1.1.0 artifact.json:application/json –artifact-type application/vnd.unknown.config.v1+json Laddar upp 7ac68d8d2a12 artifact.json Uppladdad 7ac68d8d2a12 artifact.json Pushade docker.io/ilmiont/oras-demo:1.1.0 Sammanfattning: sha256:41abfed0ab43a24933c5eafe3c363418264a59eee527821aab39fe75 kommandot fåa detaljer är de första registret att trycka till och taggen att tilldela till artefakten. Detta liknar att trycka på en behållarbildtagg.

  • Till skillnad från docker CLI kräver ORAS att du anger registeradressen (docker.io för Docker Hub). ORAS är ett generiskt verktyg som inte kan göra antaganden om vad eller var du trycker.
  • Det andra argumentet anger sökvägen till filen du laddar upp i filnamn:innehåll -typ format. Eftersom exempelfilen är JSON, väljs innehållstypen program/json.
  • Det tredje argumentet anger ORAS-artefakttypen (mediatyp) som ska tilldelas din artefakt. Du bör använda en standardmediatyp om du laddar upp en registrerad typ av artefakt, som ett rordiagram, men det “okända” standard är lämpligt för denna demo.
  • Uppladdningsförloppet visas i din terminal, på samma sätt som en vanlig dockar-push. Testa att köra kommandot oras repo tags för att bekräfta att pushen är klar:

    $ oras repo taggar docker.io/<användarnamn>/oras-demo 1.1.0

    Hantera artefakter i Docker Hub’s UI

    Din artefakt kommer också att visas på Docker Hub-webbplatsen. I listan Repositories ser du Innehåller: Annat för att ange att arkivet innehåller en generisk artefakt. Behållarbildarkiv är märkta som Innehåller: Bild.

    Välj arkivet för att se dess detaljer, lägga till en beskrivning och se alla tillgängliga taggar. Det liknar att arbeta med behållarbilder.

    Dra din artefakt

    Med din artefakt tillgänglig i registret kan du nu byta till en annan maskin och upprepa stegen för att installera ORAS CLI och logga in på ditt Docker Hub-konto. När du har autentiserats använder du kommandot oras pull för att hämta din artefakt:

    $ oras pull docker.io/<username>/oras-demo:1.1.0 Laddar ner 7ac68d8d2a12 artifact.json Laddat ner 7ac68d8d2a12 artifact. json Pulled docker.io/ilmiont/oras-demo:1.1.0 Digest: sha256:41abfed0ab43a24933c5eafe3c363418264a59eee527821a39fe7c0abf25570b

    Filerna i artefakten kommer att deponeras i din arbetskatalog:

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

    Du har framgångsrikt använt ORAS för att distribuera din applikations artefakter, med hjälp av den befintliga infrastrukturen som är tillgänglig från din containerregisterleverantör.

    Sammanfattning

    ORAS omvandlar containeravbildningsregister till generiska distributionsplattformar. Du kan pusha vilken artefakt som helst som är relevant för din applikation och användare kan hämta den med en konsekvent mekanism. Detta undviker att behöva underhålla, publicera till och växla mellan flera leveranskanaler.

    ORAS-stöd läggs också till i populära ekosystemverktyg. Helm låter dig skicka diagram direkt till ett ORAS-register med hjälp av dess rod push-kommando, till exempel. Detta undviker att manuellt behöva exportera diagrammet så att du kan trycka det med oras push. Den hanterar också att ställa in rätt ORAS-mediatyp för dig. Du kan förvänta dig fler verktyg för att börja integrera ORAS, så att du kan skicka alla typer av innehåll direkt till ditt centraliserade register.

    LÄS NÄSTA

    • › Rings billigaste videodörrklocka har precis nått sitt bästa pris hittills
    • › Iphone har precis fått en fantastisk ny Mastodon-app
    • › De nya MacBook-proffsen har ännu snabbare lagring
    • › AMD’s nya Ryzen 7000X3D CPU blev precis ännu bättre
    • › 3 sätt att infoga hyperlänkar i Microsoft Excel
    • › Skaffa en 1TB Samsung 980 Pro SSD för bara $120