Builds en onderhoud van containerafbeeldingen automatiseren met ACR-taken

Containers bieden nieuwe virtualisatieniveaus, die afhankelijkheden van toepassingen en ontwikkelaars isoleren van infrastructuur- en operationele vereisten. Wat overblijft, is echter de noodzaak om aan te pakken hoe deze toepassingsvirtualisatie wordt beheerd en gepatcht gedurende de levenscyclus van de container.

Wat is ACR-taken?

ACR-taken is een suite met functies binnen Azure Container Registry. Het biedt het bouwen van op de cloud gebaseerde containerafbeeldingen voor platformen, waaronder Linux, Windows en ARM, en kan besturingssysteem- en frameworkpatching voor uw Docker-containers automatiseren. ACR-taken breidt niet alleen uw interne ontwikkelingscyclus uit naar de cloud met builds van containerafbeeldingen op aanvraag, maar maakt ook automatische builds mogelijk die worden geactiveerd door broncode-updates, updates voor de basisafbeelding van een container of timers. Met updatetriggers voor basisafbeeldingen kunt u bijvoorbeeld de patchwerkstroom voor uw besturingssysteem en toepassings framework automatiseren, zodat beveiligde omgevingen worden onderhouden terwijl u zich houdt aan de principes van onveranderbare containers.

Taakscenario's

ACR-taken ondersteunt verschillende scenario's voor het bouwen en onderhouden van containerafbeeldingen en andere artefacten. Zie de volgende secties in dit artikel voor meer informatie.

Elke ACR-taak heeft een gekoppelde broncodecontext: de locatie van een set bronbestanden die wordt gebruikt om een containerafbeelding of ander artefact te bouwen. Voorbeeldcontexten zijn een Git-opslagplaats of een lokaal bestandssysteem.

Taken kunnen ook profiteren van runvariabelen,zodat u taakdefinities opnieuw kunt gebruiken en tags voor afbeeldingen en artefacten kunt standaardiseren.

Snelle taak

De interne ontwikkelingscyclus, het iteratieve proces van het schrijven van code, het bouwen en testen van uw toepassing voordat u zich verbindt tot broncodebeheer, is in het echt het begin van het levenscyclusbeheer van containers.

Voordat u uw eerste coderegel doorregelt, ACR-taken de functie voor snelle taken een geïntegreerde ontwikkelervaring bieden door de builds van uw container-image te offloaden naar Azure. Met snelle taken kunt u uw geautomatiseerde builddefinities controleren en potentiële problemen ondervangen voordat u uw code gaat uitvoeren.

Met de vertrouwde indeling neemt de docker build opdracht az acr build in de Azure CLI een context (de set bestanden die moet worden gebouwd), verzendt deze naar ACR-taken en pusht standaard de gebouwde afbeelding naar het register wanneer deze is voltooid.

Zie voor een inleiding de quickstart voor het bouwen en uitvoeren van een containerafbeelding in Azure Container Registry.

ACR-taken is ontworpen als een primitieve containerlevenscyclus. Integreer bijvoorbeeld ACR-taken in uw CI/CD-oplossing. Door az login uit te voeren met een service-principal,kan uw CI/CD-oplossing vervolgens az acr build-opdrachten uitgeven om builds van de afbeeldingen te laten uitvoeren.

Meer informatie over het gebruik van snelle taken in de eerste ACR-taken zelfstudie: Containerafbeeldingen bouwen in de cloud met Azure Container Registry-taken.

Tip

Als u een afbeelding rechtstreeks vanuit de broncode wilt bouwen en pushen, zonder een Dockerfile, biedt Azure Container Registry de opdracht az acr pack build (preview). Met dit hulpprogramma bouwt en pusht u een afbeelding uit de broncode van de toepassing met behulp van Cloud Native Buildpacks.

Taak activeren bij bijwerken van broncode

Activeer een taak voor het bouwen van containerafbeeldingen of een taak met meerdere stappen wanneer code wordt vastgelegd, of wanneer er een pull-aanvraag wordt ingediend of bijgewerkt, naar een openbare of persoonlijke Git-opslagplaats in GitHub of Azure DevOps. Configureer bijvoorbeeld een build-taak met de Azure CLI-opdracht az acr task create door een Git-opslagplaats en eventueel een vertakking en Dockerfile op te geven. Wanneer uw team code in de opslagplaats bij werkt, ACR-taken door een webhook gemaakt een build van de container-afbeelding die is gedefinieerd in de opslagplaats.

ACR-taken ondersteunt de volgende triggers wanneer u een Git-repo in stelt als context van de taak:

Trigger Standaard ingeschakeld
Doorvoeren Ja
Pull-aanvraag Nee

Notitie

Op dit moment biedt ACR-taken geen ondersteuning voor de aanvraagtriggers commit of pull in GitHub Enterprise-opslagplaatsen.

Meer informatie over het activeren van builds op broncode-commit in de tweede ACR-taken zelfstudie, Builds van container-afbeeldingenautomatiseren met Azure Container Registry-taken .

Persoonlijk toegangs token

Als u een updatetrigger voor de broncode wilt configureren, moet u de taak een persoonlijk toegangsteken (PAT) verstrekken om de webhook in te stellen in de openbare of persoonlijke GitHub of Azure DevOps-repo. Vereiste scopes voor het PAT zijn als volgt:

Type repo GitHub DevOps
Openbare repo repo:status
public_repo
Code (lezen)
Privé-repo repo (volledig beheer) Code (lezen)

Zie de documentatie voor GitHub of Azure DevOps om een PAT te maken.

Besturingssysteem- en frameworkpatching automatiseren

De kracht van ACR-taken om uw werkstroom voor het bouwen van containers echt te verbeteren, is afkomstig van de mogelijkheid om een update van een basisafbeelding te detecteren. Een functie van de meeste containerafbeeldingen: een basisafbeelding is een bovenliggende afbeelding waarop een of meer toepassingsafbeeldingen zijn gebaseerd. Basisinstallatieprogramma's bevatten doorgaans het besturingssysteem en soms toepassingskaders.

U kunt een ACR-taak instellen om een afhankelijkheid van een basisafbeelding bij te houden bij het bouwen van een toepassingsafbeelding. Wanneer de bijgewerkte basisafbeelding naar uw register wordt geüpdatet of een basisafbeelding wordt bijgewerkt in een openbare repo, zoals in Docker Hub, kunnen ACR-taken automatisch toepassingsafbeeldingen bouwen op basis van deze basis. Met deze automatische detectie en herbouwing bespaart ACR-taken u de tijd en moeite die normaal gesproken nodig is om elke toepassingsafbeelding die verwijst naar uw bijgewerkte basisafbeelding handmatig bij te houden en bij te werken.

Meer informatie over updatetriggers voor basisafbeeldingen voor ACR-taken. En leer hoe u een build van een afbeelding activeert wanneer een basisafbeelding naar een containerregister wordt geüpdatet in de zelfstudie Builds van containerafbeeldingen automatiseren wanneer een basisafbeelding wordt bijgewerkt in een Azure-containerregister

Een taak plannen

U kunt een taak desgewenst plannen door een of meer timertriggers in te stellen wanneer u de taak maakt of bij te werken. Het plannen van een taak is handig voor het uitvoeren van containerworkloads volgens een gedefinieerd schema, of het uitvoeren van onderhoudsbewerkingen of tests op afbeeldingen die regelmatig naar uw register worden pusht. Zie Een ACR-taak uitvoeren volgens een gedefinieerd schema voor meer informatie.

Taken met meerdere stappen

Taken met meerdere stappen biedt een stapsgewijze taakdefinitie en -uitvoering voor het ontwikkelen, testen en patchen van containerinstallatiekopieën in de cloud. Taakstappen die zijn gedefinieerd in een YAML-bestand, geven afzonderlijke build- en pushbewerkingen op voor containerafbeeldingen of andere artefacten. Ze kunnen ook de uitvoering definiëren van een of meer containers, waarbij elke stap de container als uitvoeringsomgeving gebruikt.

U kunt bijvoorbeeld een taak met meerdere stappen maken die het volgende automatiseert:

  1. Een webtoepassingsafbeelding bouwen
  2. De webtoepassingscontainer uitvoeren
  3. Een testafbeelding voor een webtoepassing bouwen
  4. Voer de testcontainer voor de webtoepassing uit, waarmee tests worden uitgevoerd op de toepassingscontainer die wordt uitgevoerd
  5. Als de tests zijn geslaagd, bouwt u een helm-grafiekarchiefpakket
  6. Een uitvoeren met helm upgrade behulp van het nieuwe helm-grafiekarchiefpakket

Met taken met meerdere stappen kunt u het bouwen, uitvoeren en testen van een afbeelding opsplitsen in meer samen te stellen stappen, met afhankelijkheidsondersteuning tussen stappen. Met taken met meerdere stappen in ACR-taken hebt u gedetailleerdere controle over het bouwen, testen en patchen van besturingssystemen en frameworks.

Meer informatie over taken met meerdere stappen in Run multi-step build, test, and patch tasks in ACR-taken.

Contextlocaties

De volgende tabel bevat voorbeelden van ondersteunde contextlocaties voor ACR-taken:

Contextlocatie Beschrijving Voorbeeld
Lokaal bestandssysteem Bestanden in een map op het lokale bestandssysteem. /home/user/projects/myapp
GitHub main branch Bestanden in de hoofdvertakking (of een andere standaardvertakking) van een openbare of GitHub opslagplaats. https://github.com/gituser/myapp-repo.git
GitHub branch Specifieke vertakking van een openbare of GitHub-repo. https://github.com/gituser/myapp-repo.git#mybranch
GitHub submap Bestanden in een submap in een openbare of persoonlijke GitHub-repo. Voorbeeld toont een combinatie van een vertakking en een submapspecificatie. https://github.com/gituser/myapp-repo.git#mybranch:myfolder
GitHub commit Specifieke door commit in een openbare of persoonlijke GitHub-repo. Voorbeeld toont een combinatie van een commit-hash (SHA) en een submapspecificatie. https://github.com/gituser/myapp-repo.git#git-commit-hash:myfolder
Azure DevOps-submap Bestanden in een submap in een openbare of persoonlijke Azure-repo. Voorbeeld toont een combinatie van vertakkings- en submapspecificatie. https://dev.azure.com/user/myproject/_git/myapp-repo#mybranch:myfolder
Externe tarball Bestanden in een gecomprimeerd archief op een externe webserver. http://remoteserver/myapp.tar.gz
Artefact in containerregister OCI-artefactbestanden in een containerregisteropslagplaats. oci://myregistry.azurecr.io/myartifact:mytag

Notitie

Wanneer u een Git-repo gebruikt als context voor een taak die wordt geactiveerd door een broncode-update, moet u een persoonlijk toegang token (PAT) verstrekken.

Platforms voor afbeeldingen

Standaard worden er ACR-taken voor het Linux-besturingssysteem en de amd64-architectuur gemaakt. Geef de --platform tag op voor het bouwen Windows of Linux-afbeeldingen voor andere architecturen. Geef het besturingssysteem en eventueel een ondersteunde architectuur op in de indeling van het besturingssysteem/de architectuur (bijvoorbeeld --platform Linux/arm ). Voor ARM-architecturen kunt u eventueel een variant opgeven in os/architectuur/variant-indeling (bijvoorbeeld --platform Linux/arm64/v8 ):

Besturingssysteem Architectuur
Linux amd64
arm
arm64
386
Windows amd64

Taakuitvoer weergeven

Elke taakuitvoer genereert logboekuitvoer die u kunt inspecteren om te bepalen of de taakstappen zijn uitgevoerd. Wanneer u een taak handmatig activeert, wordt logboekuitvoer voor de taakuitvoer gestreamd naar de console en ook opgeslagen voor later ophalen. Wanneer een taak automatisch wordt geactiveerd, bijvoorbeeld door een door te voeren broncode of een update van de basisafbeelding, worden taaklogboeken alleen opgeslagen. Bekijk de logboeken voor de Azure Portal of gebruik de opdracht az acr task logs.

Zie meer over het weergeven en beheren van taaklogboeken.

Volgende stappen

Wanneer u klaar bent om builds en onderhoud van containerafbeeldingen in de cloud te automatiseren, raadpleegt u de reeks ACR-taken zelfstudie.

Installeer eventueel de Docker-extensie voor Visual Studio-code en de Azure-accountextensie om te werken met uw Azure-containerregisters. Pull en push installatiekopieën naar een Azure-containerregister of voer ACR-taken uit, allemaal in Visual Studio-code.