Docker-installatiekopieën bouwen en publiceren naar Azure Container Registry
Azure DevOps Services | Azure DevOps Server 2022
Met Behulp van Azure Pipelines kunt u een pijplijnwerkstroom instellen voor het bouwen en publiceren van uw Docker-installatiekopieën naar Azure Container Registry. In dit artikel leert u het volgende:
- Een Azure Container Registry maken
- Een zelf-hostende agent instellen op een Azure-VM
- De beheerde service-identiteit instellen
- Een Docker Registry-serviceverbinding maken
- Uw installatiekopieën bouwen en publiceren naar Azure Container Registry
Vereisten
Een GitHub-account. meld u gratis aan als u er nog geen hebt.
De beheerdersrol voor serviceverbindingen in uw Azure DevOps-project.
Een Azure-account met een actief abonnement. Meld u gratis aan als u er nog geen hebt.
Code ophalen
Fork of kloon de voorbeeld-app die u samen met deze zelfstudie moet volgen.
https://github.com/MicrosoftDocs/pipelines-javascript-docker
Een Azure Container Registry maken
Ga naar Azure Portal.
Selecteer Een resource maken in het linkernavigatievenster en selecteer vervolgens Containers en vervolgens Container Registry.
Selecteer uw abonnement en selecteer vervolgens uw resourcegroep of maak een nieuwe.
Voer een registernaam in voor het containerregister. De registernaam moet uniek zijn binnen Azure en moet ten minste 5 tekens bevatten.
Selecteer de gewenste locatie en SKU en selecteer vervolgens Beoordelen en maken.
Controleer uw instellingen en selecteer Vervolgens Maken wanneer u klaar bent.
Een zelf-hostende agent-VM instellen
Als u Managed Service Identity wilt gebruiken met Azure Pipelines om Docker-installatiekopieën te publiceren naar Azure Container Registry, moet u onze eigen zelf-hostende agent instellen op een Azure-VM.
Een VM maken:
Ga naar Azure Portal.
Selecteer Een resource maken in het linkernavigatievenster en selecteer vervolgens Virtuele machine ->Maken.
Selecteer uw abonnement en selecteer vervolgens de resourcegroep die u hebt gebruikt om uw containerregister te maken.
Geef uw virtuele machine een naam en kies een installatiekopieën.
Voer uw gebruikersnaam en wachtwoord in en selecteer Beoordelen en maken.
Controleer uw instellingen en selecteer Vervolgens Maken wanneer u klaar bent.
Selecteer Naar de resource gaan zodra de implementatie is voltooid.
Een agentpool maken
Selecteer in uw Azure DevOps-project het tandwielpictogram om naar uw Project-instellingen te navigeren.
Selecteer Agentpools en selecteer vervolgens Pool toevoegen.
Selecteer Nieuw en selecteer vervolgens Zelf-hostend in de vervolgkeuzelijst Pooltype .
Geef uw pool een naam en schakel vervolgens het selectievakje Toegang verlenen aan alle pijplijnen in.
Selecteer Maken wanneer u klaar bent.
Selecteer nu de pool die u zojuist hebt gemaakt en selecteer vervolgens Nieuwe agent.
We gebruiken de instructies in dit venster om uw agent in te stellen op de VM die u eerder hebt gemaakt. Selecteer de knop Kopiëren om de downloadkoppeling naar het Klembord te kopiëren.
Een persoonlijk toegangstoken maken
Selecteer in uw Azure DevOps-project gebruikersinstellingen en selecteer vervolgens Persoonlijke toegangstokens.
Selecteer Nieuw token om een nieuw persoonlijk toegangstoken te maken.
Voer een naam in voor uw PAT en kies vervolgens een vervaldatum.
Selecteer Aangepast gedefinieerd in Bereiken en selecteer vervolgens Alle bereiken weergeven.
Selecteer Agentpools -> Lezen en beheren en Implementatiegroepen -> Lezen en beheren.
Selecteer Maken wanneer u klaar bent en sla uw PAT op een veilige locatie op.
Een zelf-hostende agent instellen
Maak in Azure Portal verbinding met uw virtuele machine.
Voer in een PowerShell-opdrachtprompt met verhoogde bevoegdheid de volgende opdracht uit om de agent te downloaden.
Invoke-WebRequest -URI <YOUR_AGENT_DOWNLOAD_LINK> -UseBasicParsing -OutFile <FILE_PATH> ##Example: Invoke-WebRequest -URI https://vstsagentpackage.azureedge.net/agent/2.213.2/vsts-agent-win-x64-2.213.2.zip -OutFile C:\vsts-agent-win-x64-2.213.2.zip
Voer de volgende opdracht uit om uw agent te extraheren en te maken.
mkdir agent ; cd agent Add-Type -AssemblyName System.IO.Compression.FileSystem ; [System.IO.Compression.ZipFile]::ExtractToDirectory("<FILE_PATH>", "$PWD")
Voer de volgende opdracht uit om de agent te configureren.
.\config.cmd
Voer uw server-URL in wanneer u om invoer wordt gevraagd. Voorbeeld: https://dev.azure.com/fabrikamFiber
Druk op Enter wanneer u wordt gevraagd om het verificatietype om PAT-verificatie te kiezen.
Plak uw persoonlijke toegangstoken dat u eerder hebt gemaakt en druk op Enter.
Voer de naam van uw agentgroep in en voer de naam van uw agent in.
Laat de standaardwaarde voor de werkmap staan en voer vervolgens Y in als u uw agent als een service wilt uitvoeren.
Nu de agent klaar is om te gaan luisteren naar taken, gaan we Docker installeren op onze VIRTUELE machine. Voer de volgende opdracht uit om Docker te downloaden.
Invoke-WebRequest -URI https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe -OutFile <DOWNLOAD_PATH>
Navigeer naar het downloadpad en voer vervolgens de volgende opdracht uit om Docker te installeren en te starten.
Start-Process 'Docker%20Desktop%20Installer.exe' -Wait install
Ga nu terug naar de map van de agent en voer het cmd-bestand uit om de agent uit te voeren op uw Azure-VM.
.\run.cmd
Uw agent moet nu worden vermeld in uw agentgroep -> Agents in de Azure DevOps-portal.
De beheerde identiteit instellen
Navigeer in Azure Portal naar de VM die u eerder hebt gemaakt.
Selecteer Identiteit in het linkernavigatievenster en schakel vervolgens de door het systeem toegewezen identiteit in.
Selecteer Opslaan wanneer u klaar bent en bevestig uw keuze.
Selecteer Azure-roltoewijzingen en selecteer vervolgens Roltoewijzing toevoegen.
Selecteer Resourcegroep in de vervolgkeuzelijst Bereik .
Selecteer uw abonnement en uw resourcegroep en selecteer vervolgens de rol AcrPush .
Herhaal de stappen 5 & 6 om de AcrPull-rol toe te voegen.
Een Docker-registerserviceverbinding maken
Selecteer in uw Azure DevOps-project het tandwielpictogram om naar uw Project-instellingen te navigeren.
Selecteer Serviceverbindingen in het linkerdeelvenster.
Selecteer Nieuwe serviceverbinding en selecteer vervolgens Docker Registry en vervolgens Volgende.
Selecteer Azure Container Registry en selecteer vervolgens Managed Service Identity als verificatietype.
Voer de naam van uw abonnements-id-abonnement en de aanmeldingsserver van uw Azure-containerregister in. Plak de door het systeem toegewezen tenant-id van uw VM die u in de vorige stap in het tekstveld Tenant-id hebt gemaakt.
Voer een naam in voor uw serviceverbinding en schakel het selectievakje Toegang verlenen aan alle pijplijnen in. Als u deze optie wilt selecteren, hebt u de rol Beheerder van de serviceverbinding nodig.
Selecteer Opslaan wanneer u klaar bent.
Bouwen en publiceren naar Azure Container Registry
Selecteer Pijplijnen in uw Azure DevOps-project en selecteer vervolgens Pijplijn maken.
Selecteer de service die als host fungeert voor uw broncode (Azure-opslagplaatsen, GitHub enzovoort).
Selecteer uw opslagplaats en selecteer vervolgens Starter-pijplijn.
Verwijder de standaard yaml-pijplijn en gebruik het volgende codefragment:
trigger: - main variables: dockerRegistryServiceConnection: '<SERVICE_CONNECTION_NAME>' imageRepository: '<IMAGE_NAME>' dockerfilePath: '$(Build.SourcesDirectory)/app/Dockerfile' tag: '$(Build.BuildId)' stages: - stage: Build displayName: Build and publish stage jobs: - job: Build displayName: Build job pool: name: '<YOUR_AGENT_POOL_NAME>' steps: - task: DockerInstaller@0 inputs: dockerVersion: '17.09.0-ce' - task: Docker@2 displayName: Build and publish image to Azure Container Registry inputs: command: buildAndPush containerRegistry: $(dockerRegistryServiceConnection) repository: $(imageRepository) dockerfile: $(dockerfilePath) tags: | $(tag)
Zodra de pijplijnuitvoering is voltooid, kunt u uw installatiekopieën controleren in Azure. Navigeer naar uw Azure Container Registry in Azure Portal en selecteer opslagplaatsen.
Resources opschonen
Als u niet van plan bent om deze toepassing te blijven gebruiken, verwijdert u de resourcegroep om lopende kosten te voorkomen.
az group delete --name myapp-rg