Automatisera byggen och underhåll av containeravbildningar med Azure Container Registry-uppgifter

Containrar ger nya nivåer av virtualisering genom att isolera program- och utvecklarberoenden från infrastruktur- och driftskrav. Det som återstår är behovet av att åtgärda hur den här programvirtualiseringen hanteras och korrigeras under containerns livscykel.

Azure Container Registry-uppgifter är en uppsättning funktioner som:

  • Tillhandahålla molnbaserad containeravbildningsbyggnad för plattformar som Linux, Windows och ARM.
  • Utöka de tidiga delarna av en programutvecklingscykel till molnet med containeravbildningsversioner på begäran.
  • Aktivera automatiserade versioner som utlöses av källkodsuppdateringar, uppdateringar av en containers basavbildning eller timers.

Med utlösare för uppdateringar av en basavbildning kan du till exempel automatisera os- och ramverkskorrigeringar för dina Docker-containrar. Dessa utlösare kan hjälpa dig att upprätthålla säkra miljöer samtidigt som du följer principerna för oföränderliga containrar.

Viktigt!

Azure Container Registry-aktivitetskörningar pausas tillfälligt från kostnadsfria Azure-krediter. Den här pausen kan påverka befintliga aktivitetskörningar. Om du stöter på problem öppnar du ett supportärende för vårt team för att ge ytterligare vägledning.

Varning

Observera att all information som tillhandahålls på kommandoraden eller som en del av en URI kan loggas som en del av diagnostikspårningen i Azure Container Registry (ACR). Detta omfattar känsliga data som autentiseringsuppgifter, personliga GitHub-åtkomsttoken och annan säker information. Var försiktig för att förhindra eventuella säkerhetsrisker, det är viktigt att undvika att inkludera känslig information i kommandorader eller URI:er som är föremål för diagnostisk loggning.

Aktivitetsscenarier

Azure Container Registry-uppgifter stöder flera scenarier för att skapa och underhålla containeravbildningar och andra artefakter. I den här artikeln beskrivs snabbuppgifter, automatiskt utlösta uppgifter och uppgifter i flera steg.

Varje uppgift har en associerad källkodskontext, som är platsen för källfiler som används för att skapa en containeravbildning eller annan artefakt. Exempelkontexter är en Git-lagringsplats och ett lokalt filsystem.

Aktiviteter kan också dra nytta av körningsvariabler, så att du kan återanvända uppgiftsdefinitioner och standardisera taggar för bilder och artefakter.

Snabbuppgifter

Utvecklingscykeln för inre loopar är den iterativa processen att skriva kod, skapa och testa ditt program innan du förbinder dig till källkontroll. Det är verkligen början på livscykelhantering för containrar.

Snabbaktivitetsfunktionen i Azure Container Registry-uppgifter kan ge en integrerad utvecklingsupplevelse genom att avlasta dina containeravbildningsversioner till Azure. Du kan skapa och push-överföra en enda containeravbildning till ett containerregister på begäran i Azure utan att behöva en lokal Docker Engine-installation. Tänk docker buildi docker push molnet. Med snabba uppgifter kan du verifiera dina automatiserade byggdefinitioner och fånga upp potentiella problem innan du checkar in koden.

Med hjälp av det välbekanta docker build formatet tar kommandot az acr build i Azure CLI en kontext. Kommandot skickar sedan kontexten till Azure Container Registry och (som standard) skickar den skapade avbildningen till registret när den är klar.

Azure Container Registry-uppgifter är utformade som en primitiv containerlivscykel. Du kan till exempel integrera Azure Container Registry-uppgifter i din ci/CD-lösning (continuous integration and continuous delivery). Om du kör az login med ett huvudnamn för tjänsten kan din CI/CD-lösning sedan utfärda az acr build-kommandon för att starta avbildningsversioner.

Information om hur du använder snabbuppgifter finns i snabbstarten och självstudien för att skapa och distribuera containeravbildningar med hjälp av Azure Container Registry-uppgifter.

Dricks

Om du vill skapa och push-överföra en avbildning direkt från källkoden, utan en Dockerfile, tillhandahåller Azure Container Registry kommandot az acr pack build (förhandsversion). Det här verktyget skapar och push-överför en avbildning från programmets källkod med hjälp av Cloud Native Buildpacks.

Automatiskt utlösta uppgifter

Aktivera en eller flera utlösare för att skapa en avbildning.

Utlösa en uppgift i en källkodsuppdatering

Du kan utlösa en containeravbildningsversion eller en uppgift i flera steg när kod har checkats in eller en pull-begäran görs eller uppdateras till en offentlig eller privat Git-lagringsplats i GitHub eller Azure DevOps. Konfigurera till exempel en bygguppgift med Azure CLI-kommandot az acr task create genom att ange en Git-lagringsplats och eventuellt en gren och Dockerfile. När ditt team uppdaterar kod på lagringsplatsen utlöser en webhook som skapats i Azure Container Registry-uppgifter en version av containeravbildningen som definierats på lagringsplatsen.

Azure Container Registry-uppgifter stöder följande utlösare när du anger en Git-lagringsplats som en aktivitets kontext:

Utlösare Aktiverad som standard
Checka in Ja
Pull-begäran Nej

Kommentar

För närvarande stöder Inte Azure Container Registry-uppgifter utlösare för incheckning eller pull-begäran i GitHub Enterprise-lagringsplatser.

Information om hur du utlöser byggen vid incheckningar av källkod finns i Automatisera containeravbildningsversioner med Azure Container Registry-uppgifter.

Personlig åtkomsttoken

För att konfigurera en utlösare för källkodsuppdateringar måste du tillhandahålla uppgiften en personlig åtkomsttoken för att ange webhooken på den offentliga eller privata GitHub- eller Azure DevOps-lagringsplatsen. Nödvändiga omfång för den personliga åtkomsttoken är följande:

Lagringsplatstyp GitHub Azure DevOps
Offentlig lagringsplats repo:status
public_repo
Kod (läs)
Privat lagringsplats lagringsplats (fullständig kontroll) Kod (läs)

Information om hur du skapar en personlig åtkomsttoken finns i GitHub - eller Azure DevOps-dokumentationen .

Automatisera korrigering av operativsystem och ramverk

Kraften i Azure Container Registry-uppgifter för att förbättra ditt arbetsflöde för containerbygge kommer från deras möjlighet att identifiera en uppdatering till en basavbildning. En basavbildning är en funktion i de flesta containeravbildningar. Det är en överordnad bild som en eller flera programbilder baseras på. Basavbildningar innehåller vanligtvis operativsystemet och ibland programramverk.

Du kan konfigurera en Azure Container Registry-uppgift för att spåra ett beroende av en basavbildning när den skapar en programavbildning. När den uppdaterade basavbildningen skickas till registret eller om en basavbildning uppdateras på en offentlig lagringsplats, till exempel i Docker Hub, kan Azure Container Registry-uppgifter automatiskt skapa programavbildningar baserat på den. Med den här automatiska identifieringen och återskapande sparar Azure Container Registry-uppgifter den tid och det arbete som normalt krävs för att manuellt spåra och uppdatera varje programavbildning som refererar till din uppdaterade basavbildning.

Mer information finns i Om basavbildningsuppdateringar för Azure Container Registry-uppgifter och Självstudier: Automatisera containeravbildningsversioner när en basavbildning uppdateras i ett Azure-containerregister.

Schemalägga en aktivitet

Du kan schemalägga en aktivitet genom att konfigurera en eller flera timerutlösare när du skapar eller uppdaterar aktiviteten. Schemaläggning av en uppgift är användbart för att köra containerarbetsbelastningar enligt ett definierat schema, eller köra underhållsåtgärder eller tester på avbildningar som skickas regelbundet till registret. Mer information finns i Köra en Azure Container Registry-uppgift enligt ett definierat schema.

Uppgifter i flera steg

Utöka genererings- och push-funktionen för en avbildning för Azure Container Registry-uppgifter med arbetsflöden i flera steg som baseras på flera containrar.

Med flerstegsuppgifter får du stegbaserad uppgiftsdefinition och körning för att skapa, testa och korrigera containeravbildningar i molnet. Uppgiftssteg som definieras i en YAML-fil anger enskilda bygg- och push-åtgärder för containeravbildningar eller andra artefakter. De kan också definiera körningen av en eller flera container så varje steg använder containern som sin körningsmiljö.

Du kan till exempel skapa en uppgift i flera steg som automatiserar följande steg:

  1. Skapa en webbappsbild.
  2. Kör webbprogramcontainern.
  3. Skapa en testbild för webbprogram.
  4. Kör testcontainern för webbprogram, som utför tester mot den programcontainer som körs.
  5. Om testerna godkänns skapar du ett Helm-diagramarkivpaket.
  6. Utför en helm upgrade uppgift med hjälp av det nya Helm-diagramarkivpaketet.

Med flerstegsuppgifter kan du dela upp byggnaden, körningen och testningen av en avbildning i mer komposterbara steg, med beroendestöd mellan steg. Med flerstegsuppgifter i Azure Container Registry-uppgifter har du mer detaljerad kontroll över arbetsflöden för bildskapande, testning och korrigering av operativsystem och ramverk.

Läs mer om att köra bygg-, test- och korrigeringsuppgifter i Azure Container Registry-uppgifter i flera steg.

Kontextplatser

I följande tabell visas exempel på kontextplatser som stöds för Azure Container Registry-uppgifter:

Plats för kontext beskrivning Exempel
Ett lokalt filsystem Filer i en katalog i det lokala filsystemet. /home/user/projects/myapp
GitHub-huvudgren Filer inom huvudgrenen (eller annan standard) för en offentlig eller privat GitHub-lagringsplats. https://github.com/gituser/myapp-repo.git
GitHub-gren Specifik gren av en offentlig eller privat GitHub-lagringsplats. https://github.com/gituser/myapp-repo.git#mybranch
GitHub-undermapp Filer i en undermapp på en offentlig eller privat GitHub-lagringsplats. Exemplet visar en kombination av en gren- och undermappsspecifikation. https://github.com/gituser/myapp-repo.git#mybranch:myfolder
GitHub-incheckning Specifik incheckning i en offentlig eller privat GitHub-lagringsplats. Exemplet visar en kombination av en incheckningshash (SHA) och undermappsspecifikation. https://github.com/gituser/myapp-repo.git#git-commit-hash:myfolder
Azure DevOps-undermapp Filer i en undermapp på en offentlig eller privat Azure-lagringsplats. Exemplet visar en kombination av förgrenings- och undermappsspecifikation. https://dev.azure.com/user/myproject/_git/myapp-repo#mybranch:myfolder
Fjärr-tarball Filer i ett komprimerat arkiv på en fjärrwebbserver. http://remoteserver/myapp.tar.gz
Artefakt i containerregistret OCI-artefaktfiler i en containerregisterlagringsplats. oci://myregistry.azurecr.io/myartifact:mytag

Kommentar

När du använder en Git-lagringsplats som kontext för en uppgift som utlöses av en källkodsuppdatering måste du ange en personlig åtkomsttoken.

Bildplattformar

Som standard skapar Azure Container Registry-uppgifter avbildningar för Linux-operativsystemet och AMD64-arkitekturen. Ange taggen --platform för att skapa Windows-avbildningar eller Linux-avbildningar för andra arkitekturer. Ange operativsystemet och eventuellt en arkitektur som stöds i OS/arkitekturformat (till exempel --platform Linux/arm). För ARM-arkitekturer kan du ange en variant i OS/arkitektur/variantformat (till exempel --platform Linux/arm64/v8).

OS Arkitektur
Linux AMD64
ARM
ARM64
386
Windows AMD64

Aktivitetsutdata

Varje aktivitetskörning genererar loggutdata som du kan kontrollera för att avgöra om aktivitetsstegen har körts. När du utlöser en aktivitet manuellt strömmas loggutdata för aktivitetskörningen till konsolen och lagras för senare hämtning. När en aktivitet utlöses automatiskt (till exempel av en källkodsincheckning eller en basavbildningsuppdatering) lagras endast aktivitetsloggar. Visa körningsloggarna i Azure Portal eller använd kommandot az acr task logs.

Läs mer om att visa och hantera aktivitetsloggar.