Øvelse – Opret en Azure DevOps-pipeline for at udrulle din oprindelige app i cloudmiljøet
Din chef ønsker, at du ændrer CI/CD'en for firmaers eShop-app, så den bruger Azure Pipelines. Du skal nu oprette en Azure DevOps Pipeline for at bygge og udrulle din produkttjeneste.
Opret en Azure DevOps-pipeline
Important
Før du begynder, skal du have en Azure DevOps-konto. Hvis du ikke har en, kan du oprette en gratis på dev.azure.com.
- Log ind på dev.azure.com.
- Vælg + Nyt projekt.
- For Projektnavn skal du angive eShop-installation.
- Lad Synlighed være indstillet til Privat, og vælg Opret.
- Vælg Pipelines til venstre, og vælg derefter Opret pipeline.
- På siden Opret forbindelse skal du vælge GitHub for Hvor er din kode?.
- Hvis du bliver bedt om det, skal du logge på GitHub og give Azure Pipelines tilladelse til at få adgang til din GitHub-konto.
- For Vælg et lagerskal du vælge dit kopierede lager.
- På siden Konfigurer skal du vælge indstillingen Udrul til Azure Kubernetes Service .
- I ruden Udrul på Azure Kubernetes Service skal du vælge dit Azure-abonnement og derefter vælge Fortsæt.
- Hvis du bliver bedt om det, skal du logge på dit Azure-abonnement.
- For Klyngen skal du vælge den AKS-klynge, du oprettede i den forrige enhed aks-eshop.
- For navneområdet skal du lade Eksisterende være markeret og derefter vælge standard.
- For Container-registreringsdatabasen skal du vælge den Azure Container Registry, du oprettede i den forrige enhed, f.eks. acseshop186748394.
- For Billednavn skal du angive productservice.
- For serviceporten skal du indtaste 8080.
- Vælg Valider og konfigurer.
Gennemse YAML-pipelinefilen
Azure Pipelines bruger YAML-filer til at definere trinnene til oprettelse og installation af din app. YAML-filen gemmes i dit GitHub-lager og blev oprettet automatisk for dig på baggrund af de oplysninger, du har angivet.
Lad os gennemse YAML-filen:
trigger:
- main
resources:
- repo: self
variables:
# Container registry service connection established during pipeline creation
dockerRegistryServiceConnection: '3bcbb23c-6fca-4ff0-8719-bfbdb64a89b1'
imageRepository: 'productservice'
containerRegistry: 'acseshop186748394.azurecr.io'
dockerfilePath: '**/Dockerfile'
tag: '$(Build.BuildId)'
imagePullSecret: 'acseshop18674839414442d34-auth'
# Agent VM image name
vmImageName: 'ubuntu-latest'
stages:
- stage: Build
displayName: Build stage
jobs:
- job: Build
displayName: Build
pool:
vmImage: $(vmImageName)
steps:
- task: Docker@2
displayName: Build and push an image to container registry
inputs:
command: buildAndPush
repository: $(imageRepository)
dockerfile: $(dockerfilePath)
containerRegistry: $(dockerRegistryServiceConnection)
tags: |
$(tag)
- upload: manifests
artifact: manifests
- stage: Deploy
displayName: Deploy stage
dependsOn: Build
jobs:
- deployment: Deploy
displayName: Deploy
pool:
vmImage: $(vmImageName)
environment: 'PhilStollerymod9cloudnativeexercisecode-1959.default'
strategy:
runOnce:
deploy:
steps:
- task: KubernetesManifest@0
displayName: Create imagePullSecret
inputs:
action: createSecret
secretName: $(imagePullSecret)
dockerRegistryEndpoint: $(dockerRegistryServiceConnection)
- task: KubernetesManifest@0
displayName: Deploy to Kubernetes cluster
inputs:
action: deploy
manifests: |
$(Pipeline.Workspace)/manifests/deployment.yml
$(Pipeline.Workspace)/manifests/service.yml
imagePullSecrets: |
$(imagePullSecret)
containers: |
$(containerRegistry)/$(imageRepository):$(tag)
Afsnittene Udløser og Ressourcer definerer, hvornår pipelinen skal køre. I dette tilfælde kører pipelinen, når en ændring er bekræftet til hovedgrenen i dit lager.
Afsnittet Variabler definerer de variabler, der bruges i pipelinen. Variablerne bruges til at definere Azure Container Registry og den Dockerfile, der skal bruges.
YAML definerer derefter et build-job , der bruger ubuntu-latest agenten. Jobbet bruger Docker-opgaven til at oprette og pushe billedet til Azure Container Registry.
Den sidste fase er at installere den opdaterede produkttjeneste til AKS. Jobbet bruger KubernetesManifest-opgaven til at udrulle afbildningen til AKS.
Kør pipelinen
Øverst til højre på siden Gennemse yaml-pipelinen skal du vælge Gem og kør. I ruden Gem og kør:
- Vælg Opret en ny forgrening for denne bekræftelse.
- Lad alle de andre indstillinger være angivet til deres standarder.
- Vælg Gem og kør.
Overvåg og foretag fejlfinding af pipelinen
Azure Pipelines overvåges og administreres fra Azure DevOps-portalen. Lad os se på resultatet af at køre den pipeline, du har oprettet.
Oversigtssiden viser alle faserne i din løbende pipeline. Du kan vælge en fase for at få vist trinnene mere detaljeret. Om et øjeblik kan du se, at pipelinen mislykkedes. Vælg fasen Opbyg .
I buildfasen kan du se, at buildet mislykkedes. Vælg trinnet Opret, og send et billede til Azure Container Registry trin. Fejlen i logfilen viser:
##[error]Unhandled: No Dockerfile matching /home/vsts/work/1/s/**/Dockerfile was found.
Ret fejlen
I DevOps skal du gå tilbage til siden med pipelineoversigten. Du skal redigere den oprettede pipeline for at rette fejlen.
Vælg menuen Flere handlinger øverst til højre, og vælg derefter Rediger pipeline.
Linje 17 i YAML-filen definerer den Dockerfile, der skal bruges, og som standard forventer pipelinen, at der er en fil med navnet Dockerfile i roden af lageret.
eShop bruger en anden docker-fil til produkttjenesten med navnet DockerfileProducts. Rediger linje 17, så den er:
dockerfilePath: '**/DockerfileProducts.acr'Vælg Gem.
I ruden Gem skal du vælge Gem.
Vælg Kør, og vælg derefter Kør i ruden Kør pipeline.
Se Build-fasen færdig. Fasen Implementer afbrydes midlertidigt, indtil du vælger den og tillader den at køre.
Pipelinen er fuldført. Vælg fasen Installer for at få vist trinnene.