Gyakorlat – Azure DevOps-folyamat létrehozása a natív felhőbeli alkalmazás üzembe helyezéséhez

Befejeződött

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.

  1. Jelentkezz be dev.azure.com.
  2. Válassza a + Új projektlehetőséget.
  3. A(z) Projektnévmezőben adja meg a(z) eShop üzembe helyezését.
  4. Hagyja a láthatósági beállítást Privát értékre, és válassza a Létrehozás lehetőséget.
  5. A bal oldalon válassza a Folyamatok lehetőséget, majd a Folyamat létrehozása lehetőséget.
  6. A Csatlakozás laponHol található a kód?válassza GitHublehetőséget.
  7. 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.
  8. A Válasszon egy adattárat, válassza a saját elágazású adattárát.
  9. A konfigurálása lapon válassza a Üzembe helyezés az Azure Kubernetes Service-ben lehetőséget.
  10. 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.
  11. Ha a rendszer kéri, jelentkezzen be az Azure-előfizetésbe.
  12. A fürtesetében válassza ki az előző egységben létrehozott AKS-fürtöt, aks-eshop.
  13. A névtér esetében hagyja kiválasztva a Meglévőt, majd válassza a alapértelmezett lehetőséget.
  14. 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.
  15. ** A Kép nevemezőben adja meg a(z) productservice.
  16. A szolgáltatásportírja be a 8080.
  17. 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:

  1. Válassza a(z) lehetőséget egy új ág létrehozásához ehhez a commithez.
  2. Hagyja meg az összes többi beállítást az alapértelmezett értékre.
  3. 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.

Képernyőkép az Azure Pipeline állapotáról.

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.

Egy sikertelen folyamat buildelési szakaszának képernyőképe.

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.

  1. A jobb felső sarokban válassza a További műveletek menüt, majd a Folyamat szerkesztése lehetőséget.

  2. 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'
    
  3. Válassza Mentéslehetőséget.

  4. A Mentés panelen válassza a Mentéslehetőséget.

  5. 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.

    Képernyőkép a befejezett folyamatról.

    A folyamatvonal sikeresen befejeződött. A lépések megtekintéséhez válassza a Üzembe helyezés szakaszt.

    Képernyőkép az üzembe helyezési fázisról és a sikeres lépésekről.