Cvičení – Vytvořte pipeline Azure DevOps pro nasazení cloudově nativní aplikace
Váš nadřízený chce změnit CI/CD pro aplikace eShop společnosti tak, aby používal Azure Pipelines. Teď vytvoříte Azure DevOps Pipeline, který sestaví a nasadí službu vašich produktů.
Vytvoření potrubí Azure DevOps
Důležitý
Než začnete, budete muset mít účet Azure DevOps. Pokud ho nemáte, můžete si ho zdarma vytvořit v dev.azure.com.
- Přihlaste se k dev.azure.com.
- Vyberte + Nový projekt.
- Pro název projektu zadejte nasazení eShopu .
- Ponechte viditelnost nastavenou na soukromou, zvolte Vytvořit.
- Na levé straně vyberte Pipelines, pak vyberte Create Pipeline.
- Na stránce Connect, pro Kde je váš kód?vyberte GitHub .
- Pokud se zobrazí výzva, přihlaste se k GitHubu a povolte Azure Pipelines pro přístup k vašemu účtu GitHub.
- Pro Vyberte úložištěvyberte vaše odvozené úložiště.
- Na stránce Konfigurovat vyberte možnost Nasadit do služby Azure Kubernetes Service.
- V podokně Nasazení do služby Azure Kubernetes Service vyberte předplatné Azure a pak vyberte Pokračovat.
- Pokud se zobrazí výzva, přihlaste se ke svému předplatnému Azure.
- Pro clustervyberte AKS cluster, který jste vytvořili v předchozí jednotce aks-eshop.
- U oboru názvůponechte vybranou možnost Existující a pak vyberte výchozí.
- Ve registru kontejneruvyberte službu Azure Container Registry, kterou jste vytvořili v předchozí lekci; například acseshop186748394.
- Jako název image ,, zadejte productservice .
- Do portu službyzadejte 8080.
- Vyberte Ověřit a nakonfigurovat.
Zkontrolovat soubor YAML pipeline
Azure Pipelines používá soubory YAML k definování kroků pro sestavení a nasazení aplikace. Soubor YAML je uložený v úložišti GitHub a automaticky se pro vás vytvořil na základě informací, které jste zadali.
Pojďme se podívat na soubor YAML:
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)
Sekce triggeru a prostředků definují, kdy se má pipelina spustit. V takovém případě se pipeline spustí, když se změna potvrdí do hlavní větve vašeho úložiště.
Oddíl proměnných definuje proměnné použité v zpracovatelském řetězci. Proměnné se používají k definování služby Azure Container Registry a souboru Dockerfile, který se má použít.
YAML pak definuje úlohu sestavení, která používá ubuntu-latest agent. Úloha používá úlohu Dockeru k sestavení a nasdílení image do služby Azure Container Registry.
Poslední fází je nasadit aktualizovanou produktovou službu do AKS. Úloha k nasazení image do AKS používá úlohu KubernetesManifest.
Spustit datový tok
V pravém horním rohu Zkontrolujte stránku YAML kanálu, vyberte Uložit a spusťte. V podokně Uložit a spustit:
- Vyberte Vytvořit novou větev pro tento commit.
- Ponechte všechny ostatní možnosti nastavené na výchozí hodnoty.
- Vyberte Uložit a spusťte.
Monitorování a řešení potíží s kanálem
Azure Pipelines se monitorují a spravují na portálu Azure DevOps. Podívejme se na výstup běhu pipeline, který jste vytvořili.
Na souhrnové stránce se zobrazí všechny fáze vašeho běžícího datového kanálu. Pokud chcete zobrazit kroky podrobněji, můžete vybrat dílčí fázi. Za chvíli uvidíte, že kanál selhal. Vyberte fázi sestavení .
Ve fázi sestavení vidíte, že sestavení selhalo. Vyberte krok Vytvoření a odeslání image do Azure Container Registry. Chyba v souboru protokolu ukazuje:
##[error]Unhandled: No Dockerfile matching /home/vsts/work/1/s/**/Dockerfile was found.
Oprava chyby
V DevOps se vraťte na stránku souhrnu pipeline. Upravíte vytvořený kanál a opravíte chybu.
V pravém horním rohu vyberte nabídku Další akce a poté zvolte možnost Upravit kanál.
Řádek 17 souboru YAML definuje dockerfile, který se má použít, a ve výchozím nastavení kanál očekává, že bude soubor s názvem Dockerfile v kořenovém adresáři úložiště.
EShop používá jiný soubor Dockeru pro produktovou službu s názvem DockerfileProducts. Upravit řádek 17 tak, aby:
dockerfilePath: '**/DockerfileProducts.acr'
Vyberte Uložit.
V podokně Uložit vyberte Uložit.
Vyberte Spustit a pak v podokně kanálu spuštění vyberte Spustit.
Podívejte se na dokončení fáze sestavení . Fáze Deploy se pozastaví, dokud ji nevyberete a nedovolíte její spuštění.
Potrubí je úspěšně dokončeno. Výběrem fáze Nasadit zobrazíte kroky.