Gyakorlat – Azure DevOps-folyamat létrehozása a natív felhőbeli alkalmazás üzembe helyezéséhez
A felettese azt szeretné, hogy módosítsa a vállalati eShop alkalmazás CI/CD-jét az Azure Pipelines használatára. Most létrehoz egy Azure DevOps-folyamatot a termékszolgáltatás létrehozásához és üzembe helyezéséhez.
Azure DevOps-folyamat létrehozása
Fontos
Mielőtt hozzákezdene, rendelkeznie kell egy Azure DevOps-fiókkal. Ha nincs ilyenje, ingyenesen létrehozhat egyet a dev.azure.com.
- Jelentkezz be dev.azure.com.
- Válassza a + Új projektlehetőséget.
- A(z) Projektnévmezőben adja meg a(z) eShop üzembe helyezését.
- Hagyja a láthatósági beállítást Privát értékre, és válassza a Létrehozás lehetőséget.
- A bal oldalon válassza a Folyamatok lehetőséget, majd a Folyamat létrehozása lehetőséget.
- A Csatlakozás laponHol található a kód?válassza GitHublehetőséget.
- Ha a rendszer kéri, jelentkezzen be a GitHubra, és engedélyezze az Azure Pipelines számára a GitHub-fiók elérését.
- A Válasszon egy adattárat, válassza a saját elágazású adattárát.
- A konfigurálása lapon válassza a Üzembe helyezés az Azure Kubernetes Service-ben lehetőséget.
- Az Üzembe helyezés az Azure Kubernetes Service panelen válassza ki az Azure-előfizetését, majd válassza a Folytatás lehetőséget.
- Ha a rendszer kéri, jelentkezzen be az Azure-előfizetésbe.
- A fürtesetében válassza ki az előző egységben létrehozott AKS-fürtöt, aks-eshop.
- A névtér esetében hagyja kiválasztva a Meglévőt, majd válassza a alapértelmezett lehetőséget.
- A Tárolóregisztrációs adatbázishoz válassza ki az előző leckében létrehozott Azure Container Registryt, például acseshop186748394.
- ** A Kép nevemezőben adja meg a(z) productservice.
- A szolgáltatásportírja be a 8080.
- Válassza a Ellenőrzését és akonfigurálását.
A folyamat YAML-fájljának áttekintése
Az Azure Pipelines YAML-fájlokat használ az alkalmazás létrehozásához és üzembe helyezéséhez szükséges lépések meghatározásához. A YAML-fájl a GitHub-adattárban van tárolva, és a megadott információk alapján automatikusan létre lett hozva Önnek.
Tekintsük át a YAML-fájlt:
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)
A eseményindító és erőforrásokat szakaszok határozzák meg, hogy mikor kell futtatni a folyamatot. Ebben az esetben a folyamatfolyam akkor fog futni, ha az adattár fő ágára módosítás kerül elkötelezésre.
A változók szakasz határozza meg a folyamatban használt változókat. A változók az Azure Container Registry és a használni kívánt Dockerfile meghatározására szolgálnak.
A YAML ezután definiál egy Build feladatot, amely az ubuntu-latest ügynököt használja. A feladat a Docker-feladat használatával hozza létre és küldi le a rendszerképet az Azure Container Registrybe.
Az utolsó lépés a frissített termékszolgáltatás üzembe helyezésének az AKS-ben. A feladat az KubernetesManifest feladatot használja a kép AKS-be történő telepítéséhez.
A csővezeték futtatása
A A folyamat YAML- lapjának jobb felső részén válassza a Mentés és futtatáslehetőséget. A Mentés és futtatás panelen:
- Válassza a(z) lehetőséget egy új ág létrehozásához ehhez a commithez.
- Hagyja meg az összes többi beállítást az alapértelmezett értékre.
- Válassza a Mentés ésfuttatás lehetőséget.
A folyamat figyelése és hibaelhárítása
Az Azure Pipelines monitorozása és kezelése az Azure DevOps portálon történik. Nézzük meg a létrehozott folyamat futtatásának kimenetét.
Az összefoglaló oldal a futó folyamat összes szakaszát mutatja be. Kiválaszthat egy szakaszt a lépések részletesebb megtekintéséhez. Egy pillanat alatt látni fogja, hogy a csővezeték meghiúsult. Válassza ki a Build szakaszt.
A buildelési szakaszban láthatja, hogy a build meghiúsult. Válassza ki a építési és az Azure Container Registry-be történő képfeltöltési lépést. A naplófájlban a következő hibaüzenet jelenik meg:
##[error]Unhandled: No Dockerfile matching /home/vsts/work/1/s/**/Dockerfile was found.
A hiba kijavítása
A DevOpsban lépjen vissza a folyamat összegzési oldalára. A hiba kijavításához szerkessze a létrehozott folyamatot.
A jobb felső sarokban válassza a További műveletek menüt, majd a Folyamat szerkesztése lehetőséget.
A YAML-fájl 17. sora határozza meg a használni kívánt Dockerfile-t, és alapértelmezés szerint a folyamat egy Dockerfile nevű fájlt vár az adattár gyökerében.
Az eShop egy másik Docker-fájlt használ a DockerfileProductsnevű termékszolgáltatáshoz. A 17. sor szerkesztése a következőre:
dockerfilePath: '**/DockerfileProducts.acr'Válassza Mentéslehetőséget.
A Mentés panelen válassza a Mentéslehetőséget.
Válassza a Futtatás lehetőséget, majd a Futtatási folyamat ablakban válassza a Futtatáslehetőséget.
Tekintse meg a építési fázis befejezését. A Üzembe helyezési fázis szünetelteti, amíg ki nem választja, és engedélyezi a futtatását.
A folyamatvonal sikeresen befejeződött. A lépések megtekintéséhez válassza a Üzembe helyezés szakaszt.