Alıştırma - Bulutta yerel uygulamanızı dağıtmak için Azure DevOps işlem hattı oluşturma

Tamamlandı

Yöneticiniz, şirket eShop uygulamasının Azure Pipelines'ı kullanması için CI/CD'yi değiştirmenizi istiyor. Şimdi ürün hizmetinizi derlemek ve dağıtmak için bir Azure DevOps İşlem Hattı oluşturacaksınız.

Azure DevOps İşlem Hattı oluşturma

Önemli

Başlamadan önce bir Azure DevOps hesabınız olması gerekir. Hala bir hesabınız yoksa, dev.azure.comadresinden ücretsiz olarak oluşturabilirsiniz.

  1. dev.azure.comoturum aç.
  2. + Yeni projeöğesini seçin.
  3. Proje adıiçin eShop dağıtımgirin.
  4. Görünürlük seçeneğini Özel olarak bırakın ve Oluştur'u seçin.
  5. Sol tarafta İşlem Hatları'nı ve ardından İşlem Hattı Oluştur'u seçin.
  6. için Bağlan sayfasında kodunuz nerede?GitHub seçin.
  7. İstenirse GitHub'da oturum açın ve Azure Pipelines'a GitHub hesabınıza erişme yetkisi verin.
  8. Bir depo seçmek için, çatallamış deponuzu seçin.
  9. Yapılandır sayfasında, Azure Kubernetes Service'e Dağıt seçeneğini belirleyin.
  10. Azure Kubernetes Service'e Dağıt bölmesinde Azure aboneliğinizi ve ardından Devam'ı seçin.
  11. İstenirse Azure aboneliğinizde oturum açın.
  12. Kümesiiçin, önceki ünitede oluşturduğunuz AKS kümesi aks-eshop'ü seçin.
  13. Ad Alanı için Var olanı seçili bırakın ve ardından varsayılan'ı seçin.
  14. Container registry için acseshop186748394 gibi önceki ünitede oluşturduğunuz Azure Container Registry'yi seçin.
  15. Resim adıiçin ürün/hizmetgirin.
  16. Hizmet Bağlantı Noktasıiçin 8080girin.
  17. Doğrula'yı seçin veyapılandırın.

İşlem hattı YAML dosyasını gözden geçirin

Azure Pipelines, uygulamanızı derleme ve dağıtma adımlarını tanımlamak için YAML dosyalarını kullanır. YAML dosyası GitHub deponuzda depolanır ve sağladığınız bilgilere göre sizin için otomatik olarak oluşturulur.

ŞIMDI YAML dosyasını gözden geçirelim:

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)

tetikleyicisi ve kaynakları bölümleri, işlem hattının ne zaman çalıştırılacağını tanımlar. Bu durumda, deponuzun ana dalında bir değişiklik işlendiğinde işlem hattı çalışır.

değişkenleri bölümü, işlem hattında kullanılan değişkenleri tanımlar. Değişkenler, kullanılacak Azure Container Registry'yi ve Dockerfile'ı tanımlamak için kullanılır.

YAML daha sonra ubuntu-latest aracısını kullanan bir Derleme işini tanımlar. İş, görüntüyü derlemek ve Azure Container Registry'ye göndermek için Docker görevini kullanır.

Son aşama, güncelleştirilmiş ürün hizmetini AKS'ye dağıtma işlemidir. İş, görüntüyü AKS'ye dağıtmak için KubernetesManifest görevini kullanır.

İşlem hattını çalıştırma

İşlem hattıNıZı gözden geçirin YAML sayfasının sağ üst kısmında Kaydet'i seçin veçalıştırın. Kaydet ve çalıştır bölmesinde:

  1. Bu işlem içinyeni bir dal oluştur'u seçin.
  2. Diğer tüm seçenekleri varsayılan olarak bırakın.
  3. Kaydet'i seçin veçalıştırın.

İşlem hattını izleme ve sorun giderme

Azure Pipelines, Azure DevOps portalından izlenir ve yönetilir. Şimdi oluşturduğunuz işlem hattını çalıştırmanın çıktısına bakalım.

Azure Pipeline'ın durumunu gösteren ekran görüntüsü.

Özet sayfasında, çalışmakta olan işlem hattınızın tüm aşamaları gösterilir. Adımları daha ayrıntılı görüntülemek için bir aşama seçebilirsiniz. Biraz sonra işlem hattının başarısız olduğunu göreceksiniz. "Derleme aşamasını seçin."

Başarısız olan bir işlem hattındaki derleme aşamasının ekran görüntüsü.

Derleme aşamasında derlemenin başarısız olduğunu görebilirsiniz. Oluşturma ve Azure Container Registry'ye görüntü gönderme adımını seçin. Günlük dosyasındaki hata şunları gösterir:

##[error]Unhandled: No Dockerfile matching  /home/vsts/work/1/s/**/Dockerfile  was found.

Hatayı düzeltme

DevOps'ta işlem hattı özet sayfasına geri dönün. Hatayı düzeltmek için oluşturulan işlem hattını düzenleyeceksiniz.

  1. Sağ üst kısımda Diğer eylemler menüsünü ve ardından İşlem hattını düzenle'yi seçin.

  2. YAML dosyasının 17. satırı, kullanılacak Dockerfile dosyasını tanımlar ve işlem hattı varsayılan olarak deponun kökünde Dockerfile adlı bir dosya olmasını bekler.

    eShop, DockerfileProductsadlı ürün hizmeti için farklı bir docker dosyası kullanır. Satır 17'yi şu şekilde düzenleyin:

      dockerfilePath: '**/DockerfileProducts.acr'
    
  3. Kaydetöğesini seçin.

  4. Kaydet bölmesinde Kaydetseçeneğini seçin.

  5. Çalıştır seçin ve ardından İşlem Hattı Çalıştır bölmesinde Çalıştır'ı seçin.

    Derleme aşaması tamamlanmasını izleyin. Dağıtım aşaması sizin seçmeniz ve çalışmasına izin vermeniz için duraklatılır.

    Tamamlanan işlem hattını gösteren ekran görüntüsü.

    İşlem hattı başarıyla tamamlanır. Adımları görüntülemek için Dağıt aşamasını seçin.

    Dağıtım aşamasını ve başarıyla tamamlanan adımları gösteren ekran görüntüsü.