Sestavení a nasazení do služby Azure Kubernetes Service s využitím Azure Pipelines
Služby Azure DevOps
Azure Pipelines můžete použít k automatickému nasazení do služby Azure Kubernetes Service (AKS). Azure Pipelines umožňuje sestavovat, testovat a nasazovat s využitím kontinuální integrace (CI) a průběžného doručování (CD) pomocí Azure DevOps.
V tomto článku se dozvíte, jak vytvořit kanál, který průběžně sestavuje a nasazuje vaši aplikaci. Při každé změně kódu v úložišti, které obsahuje soubor Dockerfile, se image nasdílí do služby Azure Container Registry a manifesty se pak nasadí do clusteru AKS.
Požadavky
- Účet Azure s aktivním předplatným. Vytvoření účtu zdarma
- Připojení služby Azure Resource Manager. Vytvořte připojení služby Azure Resource Manager.
- Účet GitHub. Pokud ho ještě nemáte, vytvořte si bezplatný účet GitHubu.
Získání kódu
Vytvořte fork následujícího úložiště obsahující ukázkovou aplikaci a soubor Dockerfile:
https://github.com/MicrosoftDocs/pipelines-javascript-docker
Vytvoření prostředků Azure
Přihlaste se k webu Azure Portal a pak vyberte tlačítko Cloud Shell v pravém horním rohu. K vytvoření clusteru AKS použijte Azure CLI nebo PowerShell.
Vytvoření registru kontejneru
# Create a resource group
az group create --name myapp-rg --location eastus
# Create a container registry
az acr create --resource-group myapp-rg --name mycontainerregistry --sku Basic
# Create a Kubernetes cluster
az aks create \
--resource-group myapp-rg \
--name myapp \
--node-count 1 \
--enable-addons monitoring \
--generate-ssh-keys
Přihlášení ke službě Azure Pipelines
Přihlaste se ke službě Azure Pipelines. Po přihlášení přejde váš prohlížeč na https://dev.azure.com/my-organization-name
řídicí panel Azure DevOps a zobrazí ho.
Ve vybrané organizaci vytvořte projekt. Pokud ve vaší organizaci nemáte žádné projekty, zobrazí se obrazovka Vytvořit projekt, který vám umožní začít . V opačném případě vyberte tlačítko Vytvořit projekt v pravém horním rohu řídicího panelu.
Vytvoření kanálu
Připojení a výběr úložiště
Přihlaste se ke své organizaci Azure DevOps a přejděte do svého projektu.
Přejděte na Kanály a pak vyberte Nový kanál.
Kroky průvodce proveďte tak, že nejprve vyberete GitHub jako umístění zdrojového kódu.
Můžete být přesměrováni na GitHub kvůli přihlášení. Pokud ano, zadejte svoje přihlašovací údaje GitHubu.
Až se zobrazí seznam úložišť, vyberte úložiště.
K instalaci aplikace Azure Pipelines můžete být přesměrováni na GitHub. Pokud ano, vyberte Schválit a nainstalovat.
Vyberte Nasadit do služby Azure Kubernetes Service.
Pokud se zobrazí výzva, vyberte předplatné, ve kterém jste vytvořili registr a cluster.
myapp
Vyberte cluster.Jako obor názvů vyberte Existující a pak vyberte výchozí.
Vyberte název registru kontejneru.
Název image můžete nechat nastavený na výchozí.
Nastavte port služby na 8080.
Nastavte zaškrtávací políčko Povolit kontrolu aplikace pro žádosti o přijetí změn pro kontrolu konfigurace související s aplikací, která se má zahrnout do kanálu YAML automaticky vygenerovaného v dalších krocích.
Vyberte Ověřit a nakonfigurovat.
Jakmile Azure Pipelines vytvoří váš kanál, proces bude:
Vytvořte připojení služby registru Dockeru, které vašemu kanálu umožní nasdílení imagí do registru kontejneru.
Vytvořte prostředí a prostředek Kubernetes v rámci prostředí. V případě clusteru s podporou RBAC vytvořený prostředek Kubernetes implicitně vytvoří objekty ServiceAccount a RoleBinding v clusteru, aby vytvořený serviceAccount nemohl provádět operace mimo zvolený obor názvů.
Vygenerujte azure-pipelines.yml soubor, který definuje váš kanál.
Generování souborů manifestu Kubernetes Tyto soubory jsou generovány hydratací deployment.yml a service.yml šablon na základě vámi provedených výběrů. Až budete připraveni, vyberte Uložit a spustit.
Zvolte Uložit a Spustit.
Zprávu Potvrzení můžete změnit na něco jako přidat kanál do našeho úložiště. Až budete připraveni, vyberte Uložit a spusťte potvrzení nového kanálu do úložiště a pak začněte první spuštění nového kanálu.
Zobrazení nasazení aplikace
Při spuštění kanálu sledujte, jak je vaše fáze sestavení a pak fáze nasazení, přejděte od modrého (spuštěného) po zelenou (dokončenou). Můžete vybrat fáze a úlohy a sledovat kanál v akci.
Poznámka:
Pokud používáte agenta hostovaného Microsoftem, musíte do brány firewall přidat rozsah IP adres agenta hostovaného Microsoftem. Získejte týdenní seznam rozsahů IP adres z týdenního souboru JSON, který je publikován každou středu. Nové rozsahy IP adres platí vždy o následujícího pondělí. Další informace viz Agenti hostovaní Microsoftem. Pokud chcete zjistit rozsahy IP adres vyžadované pro vaši organizaci Azure DevOps, podívejte se, jak můžete identifikovat možné rozsahy IP adres pro agenty hostované Microsoftem.
Po dokončení spuštění kanálu prozkoumejte, co se stalo, a pak se podívejte na nasazenou aplikaci. Ze souhrnu kanálu:
Vyberte kartu Prostředí.
Vyberte Zobrazit prostředí.
Vyberte instanci aplikace pro obor názvů, do který jste nasadili. Pokud jste použili výchozí hodnoty, pak se jedná o aplikaci myapp ve výchozím oboru názvů.
Vyberte kartu Služby.
Vyberte a zkopírujte externí IP adresu do schránky.
Otevřete novou kartu nebo okno prohlížeče a zadejte <IP adresu>:8080.
Pokud vytváříte naši ukázkovou aplikaci, zobrazí se v prohlížeči Hello World .
Jak se buildy kanálu
Po dokončení výběru možností a následným pokračováním ověřte a nakonfigurujte kanál Azure Pipelines, který pro vás vytvořil kanál, pomocí šablony Nasazení do služby Azure Kubernetes Service .
Fáze sestavení používá úlohu Dockeru k sestavení a nasdílení image do služby Azure Container Registry.
- stage: Build
displayName: Build stage
jobs:
- job: Build
displayName: Build job
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)
- task: PublishPipelineArtifact@1
inputs:
artifactName: 'manifests'
path: 'manifests'
Úloha nasazení používá úlohu manifestu Kubernetes k vytvoření imagePullSecret
požadovaných uzlů clusteru Kubernetes k načtení z prostředku služby Azure Container Registry. Soubory manifestu pak úloha manifestu Kubernetes používá k nasazení do clusteru Kubernetes. Soubory manifestu service.yml
a deployment.yml
při použití šablony Deploy to Azure Kubernetes Service se vygenerovaly.
- stage: Deploy
displayName: Deploy stage
dependsOn: Build
jobs:
- deployment: Deploy
displayName: Deploy job
pool:
vmImage: $(vmImageName)
environment: 'myenv.aksnamespace' #customize with your environment
strategy:
runOnce:
deploy:
steps:
- task: DownloadPipelineArtifact@2
inputs:
artifactName: 'manifests'
downloadPath: '$(System.ArtifactsDirectory)/manifests'
- task: KubernetesManifest@1
displayName: Create imagePullSecret
inputs:
action: 'createSecret'
connectionType: 'kubernetesServiceConnection'
kubernetesServiceConnection: 'myapp-default' #customize for your Kubernetes service connection
secretType: 'dockerRegistry'
secretName: '$(imagePullSecret)'
dockerRegistryEndpoint: '$(dockerRegistryServiceConnection)'
- task: KubernetesManifest@1
displayName: Deploy to Kubernetes cluster
inputs:
action: 'deploy'
connectionType: 'kubernetesServiceConnection'
kubernetesServiceConnection: 'myapp-default' #customize for your Kubernetes service connection
manifests: |
$(Pipeline.Workspace)/manifests/deployment.yml
$(Pipeline.Workspace)/manifests/service.yml
containers: '$(containerRegistry)/$(imageRepository):$(tag)'
imagePullSecrets: '$(imagePullSecret)'
Vyčištění prostředků
Kdykoli budete hotovi s prostředky, které jste vytvořili, můžete je odstranit pomocí následujícího příkazu:
az group delete --name myapp-rg
Po zobrazení výzvy zadejte y
.
Azure Kubernetes Service