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
A kezdés előtt rendelkeznie kell egy Azure DevOps-fiókkal. Ha nincs, ingyenesen létrehozhat egyet a dev.azure.com.
- Jelentkezzen be a dev.azure.com.
- Válassza az + Új projekt lehetőséget.
- A Projekt neve mezőben adja meg az 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, majd a Folyamat létrehozása lehetőséget.
- A Csatlakozás lapon válassza a GitHubot a Hol van a kód?
- 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.
- Az adattár kiválasztásához válassza ki az elágazott adattárat.
- A Konfigurálás lapon válassza az Ü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ürt esetében válassza ki az előző aks-eshop egységben létrehozott AKS-fürtöt.
- A névtérnél hagyja bejelölve a Meglévőt, majd válassza az alapértelmezett értéket.
- 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 neveként adja meg a productservice nevet.
- A szolgáltatásporthoz írja be a 8080 értéket.
- Válassza az Ellenőrzés és konfigurálás lehetőséget.
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)
Az eseményindító és az erőforrások szakaszai határozzák meg, hogy mikor kell futtatni a folyamatot. Ebben az esetben a folyamat akkor fog futni, ha az adattár fő ágában módosítás van lekötve.
A változók szakasz a folyamatban használt változókat határozza meg. 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 meghatároz egy buildelési feladatot, amely az ubuntu legújabb ü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ése az AKS-ben. A feladat a KubernetesManifest-feladattal telepíti a rendszerképet az AKS-ben.
A folyamat futtatása
A folyamat YAML-lapjának jobb felső sarkában válassza a Mentés és futtatás lehetőséget. A Mentés és futtatás panelen:
- Válassza az Új ág létrehozása ehhez a véglegesítéshez lehetőséget.
- Hagyja meg az összes többi beállítást az alapértelmezett értékre.
- Válassza a Mentés és futtatá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 folyamat meghiúsult. Válassza ki a Build szakaszt.
A buildelési szakaszban láthatja, hogy a build meghiúsult. Válassza ki a Build elemet, és küldjön le egy lemezképet az Azure Container Registry-lépésbe . 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 javí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 Docker-fájlt, és a folyamat alapértelmezés szerint egy Dockerfile nevű fájlt vár az adattár gyökerében.
Az eShop egy másik Docker-fájlt használ a DockerfileProducts nevű termékszolgáltatáshoz. A 17. sor szerkesztése a következőhöz:
dockerfilePath: '**/DockerfileProducts'
Válassza a Mentés parancsot.
A Mentés panelen válassza a Mentés lehetőséget.
Válassza a Futtatás lehetőséget, majd a Folyamat futtatása panelen válassza a Futtatás lehetőséget.
Tekintse meg a buildelési szakasz befejezését. Az üzembe helyezési szakasz addig szünetel, amíg ki nem választja, és engedélyezi annak futtatását.
A folyamat sikeresen befejeződött. A lépések megtekintéséhez válassza az Üzembe helyezés szakaszt.