Alıştırma - Bulutta yerel uygulamanızı dağıtmak için Azure DevOps işlem hattı oluşturma
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. Yoksa, dev.azure.com'de ücretsiz olarak oluşturabilirsiniz.
- dev.azure.com oturum açın.
- + Yeni proje'yi seçin.
- Proje adı için eShop dağıtımı girin.
- Görünürlük seçeneğini Özel olarak bırakın, Oluştur'u seçin.
- Sol tarafta İşlem Hatları'nı ve ardından İşlem Hattı Oluştur'u seçin.
- Bağlan sayfasında Kodunuz nerede? için GitHub'ı seçin.
- İstenirse GitHub'da oturum açın ve Azure Pipelines'a GitHub hesabınıza erişme yetkisi verin.
- Depo seçin alanında çatallanmış deponuzu seçin.
- Yapılandır sayfasında Azure Kubernetes Service'e Dağıt seçeneğini belirleyin.
- Azure Kubernetes Service'e Dağıt bölmesinde Azure aboneliğinizi ve ardından Devam'ı seçin.
- İstenirse Azure aboneliğinizde oturum açın.
- Küme için önceki aks-eshop ünitesinde oluşturduğunuz AKS kümesini seçin.
- Ad Alanı için Var olanı seçili bırakın ve varsayılan'ı seçin.
- Container registry için, önceki ünitede oluşturduğunuz Azure Container Registry'yi seçin; örneğin, acseshop186748394.
- Görüntü adı için productservice girin.
- Hizmet Bağlantı Noktası için 8080 girin.
- Doğrula ve yapılandır'ı seçin.
İş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)
Tetikleyici 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şkenler bölümü, işlem hattında kullanılan değişkenleri tanımlar. Değişkenler, Azure Container Registry'yi ve kullanılacak Dockerfile'ı tanımlamak için kullanılır.
YAML daha sonra ubuntu-latest aracısını kullanan bir Derleme işi 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ğıtmaktır. İş, 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 ve çalıştır'ı seçin. Kaydet ve çalıştır bölmesinde:
- Bu işleme için yeni dal oluştur'u seçin.
- Diğer tüm seçenekleri varsayılan olarak bırakın.
- Kaydet ve çalıştır'ı seçin.
İş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.
Özet sayfasında, çalışan 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. Birazdan işlem hattının başarısız olduğunu göreceksiniz. Derleme aşamasını seçin.
Derleme aşamasında derlemenin başarısız olduğunu görebilirsiniz. Oluştur 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.
Sağ üst kısımda Diğer eylemler menüsünü ve ardından İşlem hattını düzenle'yi seçin.
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, DockerfileProducts adlı ürün hizmeti için farklı bir docker dosyası kullanır. Satır 17'yi şu şekilde düzenleyin:
dockerfilePath: '**/DockerfileProducts.acr'
Kaydet'i seçin.
Kaydet bölmesinde Kaydet'i seçin.
Çalıştır'ı ve ardından İşlem hattını çalıştır bölmesinde Çalıştır'ı seçin.
Derleme aşamasının tamamlanmasını izleyin. Dağıtım aşaması siz seçene ve çalışmasına izin verilene kadar duraklatılır.
İşlem hattı başarıyla tamamlar. Adımları görüntülemek için Dağıtım aşamasını seçin.