Builds en onderhoud van containerinstallatiekopieën automatiseren met Azure Container Registry-taken
Containers bieden nieuwe niveaus van virtualisatie door toepassings- en ontwikkelaarsafhankelijkheden te isoleren van infrastructuur- en operationele vereisten. Wat er overblijft, is de noodzaak om te bepalen hoe deze toepassingsvirtualisatie wordt beheerd en gepatcht gedurende de levenscyclus van de container.
Azure Container Registry-taken zijn een reeks functies die:
- Bied cloudinstallatiekopieën voor containerinstallatiekopieën voor platforms zoals Linux, Windows en ARM.
- Breid de vroege onderdelen van een ontwikkelingscyclus van een toepassing uit naar de cloud met builds van containerinstallatiekopieën op aanvraag.
- Schakel geautomatiseerde builds in die worden geactiveerd door broncode-updates, updates voor de basisinstallatiekopieën van een container of timers.
Met triggers voor updates voor een basisinstallatiekopieën kunt u bijvoorbeeld patches voor het besturingssysteem en framework automatiseren voor uw Docker-containers. Met deze triggers kunt u veilige omgevingen onderhouden terwijl u zich houdt aan de principes van onveranderbare containers.
Belangrijk
Uitvoeringen van Azure Container Registry-taken worden tijdelijk onderbroken vanuit gratis Azure-tegoed. Deze onderbreking kan van invloed zijn op bestaande taakuitvoeringen. Als u problemen ondervindt, opent u een ondersteuningsaanvraag voor ons team om aanvullende richtlijnen te bieden.
Waarschuwing
Houd er rekening mee dat alle informatie op de opdrachtregel of als onderdeel van een URI kan worden geregistreerd als onderdeel van diagnostische tracering van Azure Container Registry (ACR). Dit omvat gevoelige gegevens, zoals referenties, persoonlijke toegangstokens van GitHub en andere beveiligde informatie. Wees voorzichtig met het voorkomen van mogelijke beveiligingsrisico's. Het is van cruciaal belang om te voorkomen dat gevoelige details in opdrachtregels of URI's worden opgenomen die onderhevig zijn aan diagnostische logboekregistratie.
Taakscenario's
Azure Container Registry-taken ondersteunen verschillende scenario's voor het bouwen en onderhouden van containerinstallatiekopieën en andere artefacten. In dit artikel worden snelle taken, automatisch geactiveerde taken en taken met meerdere stappen beschreven.
Elke taak heeft een gekoppelde broncodecontext, de locatie van bronbestanden die worden gebruikt voor het bouwen van een containerinstallatiekopieën of een ander artefact. Voorbeelden van contexten zijn een Git-opslagplaats en een lokaal bestandssysteem.
Taken kunnen ook profiteren van uitvoeringsvariabelen, zodat u taakdefinities opnieuw kunt gebruiken en tags kunt standaardiseren voor afbeeldingen en artefacten.
Snelle taken
De ontwikkelingscyclus van de interne lus is het iteratieve proces voor het schrijven van code, het bouwen en testen van uw toepassing voordat u een broncodebeheer doorvoert. Het is echt het begin van het levenscyclusbeheer van containers.
De functie snelle taak in Azure Container Registry-taken kan een geïntegreerde ontwikkelervaring bieden door de builds van uw containerinstallatiekopieën naar Azure te offloaden. U kunt één containerinstallatiekopieën bouwen en pushen naar een containerregister op aanvraag, in Azure, zonder dat u een lokale Docker Engine-installatie nodig hebt. Denk docker build
, docker push
in de cloud. Met snelle taken kunt u uw geautomatiseerde builddefinities verifiëren en potentiële problemen ondervangen voordat u uw code doorvoert.
Met behulp van de vertrouwde docker build
indeling heeft de az acr build-opdracht in de Azure CLI een context. De opdracht verzendt vervolgens de context naar Azure Container Registry en (standaard) pusht de ingebouwde installatiekopie naar het register na voltooiing.
Azure Container Registry-taken zijn ontworpen als een primitieve levenscyclus van containers. U kunt bijvoorbeeld Azure Container Registry-taken integreren in uw oplossing voor continue integratie en continue levering (CI/CD). Als u az login uitvoert met een service-principal, kan uw CI/CD-oplossing vervolgens az acr build-opdrachten uitgeven om builds van installatiekopieën te starten.
Zie de quickstart en zelfstudie voor het bouwen en implementeren van containerinstallatiekopieën met behulp van Azure Container Registry-taken voor meer informatie over het gebruik van snelle taken.
Tip
Als u rechtstreeks vanuit de broncode een installatiekopieën wilt bouwen en pushen, zonder dockerfile, biedt Azure Container Registry de opdracht az acr pack build (preview). Met dit hulpprogramma bouwt en pusht u een installatiekopieën uit de broncode van de toepassing met behulp van Cloud Native Buildpacks.
Automatisch geactiveerde taken
Schakel een of meer triggers in om een installatiekopieën te maken.
Een taak activeren voor een broncode-update
U kunt een build van een containerinstallatiekopie of een taak met meerdere stappen activeren wanneer code wordt doorgevoerd of een pull-aanvraag wordt gedaan 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 bijwerkt, activeert een webhook die is gemaakt in Azure Container Registry-taken een build van de containerinstallatiekopieën die in de opslagplaats zijn gedefinieerd.
Azure Container Registry-taken ondersteunen de volgende triggers wanneer u een Git-opslagplaats instelt als context van een taak:
Activator | Standaard ingeschakeld |
---|---|
Doorvoeren | Ja |
Pull-aanvraag | Nr. |
Notitie
Momenteel bieden Azure Container Registry-taken geen ondersteuning voor doorvoer- of pull-aanvraagtriggers in GitHub Enterprise-opslagplaatsen.
Zie Builds van containerinstallatiekopieën automatiseren met Azure Container Registry-taken voor informatie over het activeren van builds van broncodes.
Persoonlijk toegangstoken
Als u een trigger voor broncode-updates wilt configureren, moet u de taak een persoonlijk toegangstoken opgeven om de webhook in te stellen in de openbare of persoonlijke GitHub- of Azure DevOps-opslagplaats. De vereiste bereiken voor het persoonlijke toegangstoken zijn als volgt:
Type opslagplaats | GitHub | Azure DevOps |
---|---|---|
Openbare opslagplaats | opslagplaats:status public_repo |
Code (lezen) |
Privéopslagplaats | opslagplaats (volledig beheer) | Code (lezen) |
Als u een persoonlijk toegangstoken wilt maken, raadpleegt u de GitHub - of Azure DevOps-documentatie .
Patches voor het besturingssysteem en framework automatiseren
De kracht van Azure Container Registry-taken om de werkstroom voor het bouwen van containers te verbeteren, is afkomstig van de mogelijkheid om een update naar een basisinstallatiekopieën te detecteren. Een basisinstallatiekopieën is een functie van de meeste containerinstallatiekopieën. Het is een bovenliggende installatiekopieën waarop een of meer toepassingsinstallatiekopieën zijn gebaseerd. Basisinstallatiekopieën bevatten doorgaans het besturingssysteem en soms toepassingsframeworks.
U kunt een Azure Container Registry-taak instellen om een afhankelijkheid van een basisinstallatiekopieën bij te houden wanneer een toepassingsinstallatiekopieën worden gemaakt. Wanneer de bijgewerkte basisinstallatiekopieën naar uw register worden gepusht of een basisinstallatiekopieën worden bijgewerkt in een openbare opslagplaats, zoals in Docker Hub, kunnen Azure Container Registry-taken automatisch installatiekopieën van toepassingen bouwen op basis van deze installatiekopieën. Met deze automatische detectie en herbouwing bespaart Azure Container Registry-taken u de tijd en moeite die normaal gesproken nodig is om elke toepassingsinstallatiekopieën die naar uw bijgewerkte basisinstallatiekopieën verwijzen, handmatig bij te houden en bij te werken.
Zie Voor meer informatie over updates van basisinstallatiekopieën voor Azure Container Registry-taken en zelfstudie: Builds van containerinstallatiekopieën automatiseren wanneer een basisinstallatiekopieën worden bijgewerkt in een Azure-containerregister.
Een taak plannen
U kunt een taak plannen door een of meer timertriggers in te stellen wanneer u de taak maakt of bijwerkt. Het plannen van een taak is handig voor het uitvoeren van containerworkloads volgens een gedefinieerd schema of het uitvoeren van onderhoudsbewerkingen of tests op installatiekopieën die regelmatig naar uw register worden gepusht. Zie Een Azure Container Registry-taak uitvoeren volgens een gedefinieerd schema voor meer informatie.
Taken met meerdere stappen
Breid de build-en-push-functionaliteit van Azure Container Registry-taken met één installatiekopieën uit met werkstromen met meerdere stappen die zijn gebaseerd op meerdere containers.
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 containerinstallatiekopieën 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 waarmee de volgende stappen worden geautomatiseerd:
- Een webtoepassingsinstallatiekopieën bouwen.
- Voer de webtoepassingscontainer uit.
- Bouw een testinstallatiekopieën voor webtoepassingen.
- Voer de testcontainer van de webtoepassing uit, waarmee tests worden uitgevoerd op de actieve toepassingscontainer.
- Als de tests zijn geslaagd, bouwt u een Archiefpakket voor Helm-grafieken.
- Voer een
helm upgrade
taak uit met behulp van het nieuwe Helm-grafiekarchiefpakket.
Met taken met meerdere stappen kunt u het gebouw splitsen, uitvoeren en testen van een installatiekopieën in meer samenstelbare stappen, met afhankelijkheidsondersteuning tussen stappen. Met taken met meerdere stappen in Azure Container Registry-taken hebt u gedetailleerdere controle over werkstromen voor het bouwen, testen en patchen van besturingssystemen en frameworks.
Contextlocaties
In de volgende tabel ziet u voorbeelden van ondersteunde contextlocaties voor Azure Container Registry-taken:
Contextlocatie | Beschrijving | Voorbeeld |
---|---|---|
Lokaal bestandssysteem | Bestanden in een map in het lokale bestandssysteem. | /home/user/projects/myapp |
GitHub-hoofdbranch | Bestanden in de hoofdbranch (of een andere standaardbranch) van een openbare of persoonlijke GitHub-opslagplaats. | https://github.com/gituser/myapp-repo.git |
GitHub-vertakking | Specifieke vertakking van een openbare of persoonlijke GitHub-opslagplaats. | https://github.com/gituser/myapp-repo.git#mybranch |
GitHub-submap | Bestanden in een submap in een openbare of persoonlijke GitHub-opslagplaats. In het voorbeeld ziet u een combinatie van een vertakkings- en submapspecificatie. | https://github.com/gituser/myapp-repo.git#mybranch:myfolder |
GitHub-doorvoer | Specifieke doorvoer in een openbare of persoonlijke GitHub-opslagplaats. In het voorbeeld ziet u een combinatie van een hash voor doorvoeren (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-opslagplaats. In het voorbeeld ziet u 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-opslagplaats gebruikt als context voor een taak die wordt geactiveerd door een broncode-update, moet u een persoonlijk toegangstoken opgeven.
Afbeeldingsplatformen
Azure Container Registry-taken bouwen standaard installatiekopieën voor het Linux-besturingssysteem en de AMD64-architectuur. Geef de tag op voor het --platform
bouwen van Windows-installatiekopieën of Linux-installatiekopieën voor andere architecturen. Geef het besturingssysteem op en eventueel een ondersteunde architectuur in de indeling os/architectuur (bijvoorbeeld --platform Linux/arm
). Geef voor ARM-architecturen desgewenst een variant op in de indeling OS/architecture/variant (bijvoorbeeld --platform Linux/arm64/v8
).
Besturingssysteem | Architectuur |
---|---|
Linux | AMD64 ARM ARM64 386 |
Windows | AMD64 |
Taakuitvoer
Elke taakuitvoering genereert logboekuitvoer die u kunt controleren om te bepalen of de taakstappen zijn uitgevoerd. Wanneer u een taak handmatig activeert, wordt logboekuitvoer voor de taakuitvoering gestreamd naar de console en opgeslagen voor later ophalen. Wanneer een taak automatisch wordt geactiveerd (bijvoorbeeld door een doorvoer van broncode of een update van een basisinstallatiekopieën), worden taaklogboeken alleen opgeslagen. Bekijk de uitvoeringslogboeken in Azure Portal of gebruik de opdracht az acr task logs .
Meer informatie over het weergeven en beheren van taaklogboeken.
Gerelateerde inhoud
Als u klaar bent om builds en onderhoud van containerinstallatiekopieën in de cloud te automatiseren, raadpleegt u de zelfstudie: Containerinstallatiekopieën bouwen en implementeren in de cloud met Azure Container Registry-taken.
Optioneel vindt u meer informatie over de Docker-extensie en de Azure-accountextensie voor Visual Studio Code. U kunt deze extensies gebruiken om installatiekopieën op te halen uit een containerregister, installatiekopieën naar een containerregister te pushen of Azure Container Registry-taken uit te voeren, allemaal in Visual Studio Code.