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. Hala bir hesabınız yoksa, dev.azure.comadresinden ücretsiz olarak oluşturabilirsiniz.
- dev.azure.comoturum aç.
- + Yeni projeöğesini seçin.
- Proje adıiçin eShop dağıtımgirin.
- Görünürlük seçeneğini Özel olarak bırakın ve Oluştur'u seçin.
- Sol tarafta İşlem Hatları'nı ve ardından İşlem Hattı Oluştur'u seçin.
- için Bağlan sayfasında kodunuz nerede?GitHub seçin.
- İstenirse GitHub'da oturum açın ve Azure Pipelines'a GitHub hesabınıza erişme yetkisi verin.
- Bir depo seçmek için, çatallamış 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ümesiiçin, önceki ünitede oluşturduğunuz AKS kümesi aks-eshop'ü seçin.
- Ad Alanı için Var olanı seçili bırakın ve ardından varsayılan'ı seçin.
- Container registry için acseshop186748394 gibi önceki ünitede oluşturduğunuz Azure Container Registry'yi seçin.
- Resim adıiçin ürün/hizmetgirin.
- Hizmet Bağlantı Noktasıiçin 8080girin.
- 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:
- Bu işlem içinyeni bir dal oluştur'u seçin.
- Diğer tüm seçenekleri varsayılan olarak bırakın.
- 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.
Ö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."
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.
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, DockerfileProductsadlı ürün hizmeti için farklı bir docker dosyası kullanır. Satır 17'yi şu şekilde düzenleyin:
dockerfilePath: '**/DockerfileProducts.acr'Kaydetöğesini seçin.
Kaydet bölmesinde Kaydetseçeneğini seçin.
Ç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.
İşlem hattı başarıyla tamamlanır. Adımları görüntülemek için Dağıt aşamasını seçin.