Skapa och distribuera till Azure Kubernetes Service med Azure Pipelines
Azure DevOps Services
Använd Azure Pipelines för att automatiskt distribuera till Azure Kubernetes Service (AKS). Med Azure Pipelines kan du skapa, testa och distribuera med kontinuerlig integrering (CI) och kontinuerlig leverans (CD) med Hjälp av Azure DevOps.
I den här artikeln får du lära dig hur du skapar en pipeline som kontinuerligt skapar och distribuerar din app. Varje gång du ändrar koden på en lagringsplats som innehåller en Dockerfile skickas avbildningarna till Azure Container Registry och manifesten distribueras sedan till aks-klustret.
Förutsättningar
- Ett Azure-konto med en aktiv prenumeration. Skapa ett konto utan kostnad.
- En Azure Resource Manager-tjänstanslutning. Skapa en Azure Resource Manager-tjänstanslutning.
- Ett GitHub-konto. Skapa ett kostnadsfritt GitHub-konto om du inte redan har ett.
Hämta koden
Förgrena följande lagringsplats som innehåller ett exempelprogram och en Dockerfile:
https://github.com/MicrosoftDocs/pipelines-javascript-docker
Skapa Azure-resurserna
Logga in på Azure Portal och välj sedan knappen Cloud Shell i det övre högra hörnet. Använd Azure CLI eller PowerShell för att skapa ett AKS-kluster.
Skapa ett containerregister
# 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
Logga in på Azure Pipelines
Logga in på Azure Pipelines. När du har loggat in går webbläsaren till https://dev.azure.com/my-organization-name
och visar din Azure DevOps-instrumentpanel.
Skapa ett projekt i den valda organisationen. Om du inte har några projekt i din organisation visas skärmen Skapa ett projekt för att komma igång . Annars väljer du knappen Skapa projekt i det övre högra hörnet på instrumentpanelen.
Skapa pipelinen
Anslut och välj din lagringsplats
Logga in på din Azure DevOps-organisation och gå till projektet.
Gå till Pipelines och välj sedan Ny pipeline.
Utför stegen i guiden genom att först välja GitHub som plats för källkoden.
Du kan omdirigeras till GitHub för att logga in. I så fall anger du dina GitHub-autentiseringsuppgifter.
När du ser listan över lagringsplatser väljer du din lagringsplats.
Du kan omdirigeras till GitHub för att installera Azure Pipelines-appen. I så fall väljer du Godkänn och installera.
Välj Distribuera till Azure Kubernetes Service.
Om du uppmanas att göra det väljer du den prenumeration där du skapade registret och klustret.
Välj klustret
myapp
.För Namnområde väljer du Befintlig och sedan standard.
Välj namnet på containerregistret.
Du kan lämna avbildningsnamnet inställt på standardvärdet.
Ange tjänstporten till 8080.
Ange kryssrutan Aktivera granskningsapp för pull-begäranden för granskning av apprelaterad konfiguration som ska ingå i yaml-pipelinen som genereras automatiskt i efterföljande steg.
Välj Verifiera och konfigurera.
När Azure Pipelines skapar din pipeline kommer processen att:
Skapa en Docker-registertjänstanslutning för att aktivera pipelinen för att skicka avbildningar till containerregistret.
Skapa en miljö och en Kubernetes-resurs i miljön. För ett RBAC-aktiverat kluster skapar den skapade Kubernetes-resursen implicit ServiceAccount- och RoleBinding-objekt i klustret så att det skapade ServiceAccount inte kan utföra åtgärder utanför det valda namnområdet.
Generera en azure-pipelines.yml fil som definierar din pipeline.
Generera Kubernetes-manifestfiler. Dessa filer genereras genom att de deployment.yml och service.yml mallar som baseras på de val du har gjort. När du är klar väljer du Spara och kör.
Välj Spara och kör.
Du kan ändra incheckningsmeddelandet till något som liknar Lägg till pipeline till vår lagringsplats. När du är klar väljer du Spara och kör för att checka in den nya pipelinen på lagringsplatsen och påbörjar sedan den första körningen av den nya pipelinen!
Se din appdistribution
När pipelinen körs kan du titta som byggfas och sedan gå från blått (körs) till grönt (slutfört). Du kan välja faser och jobb för att se hur din pipeline fungerar.
Kommentar
Om du använder en Microsoft-värdbaserad agent måste du lägga till IP-intervallet för Microsoft-agenten i brandväggen. Hämta veckolistan med IP-intervall från den veckovisa JSON-filen som publiceras varje onsdag. De nya IP-intervallen börjar gälla följande måndag. Mer information finns i Agenter med Microsoft som värd. Om du vill hitta de IP-intervall som behövs för din Azure DevOps-organisation kan du lära dig hur du identifierar möjliga IP-intervall för agenter med Microsoft som värd.
När pipelinekörningen är klar kan du utforska vad som hände och sedan gå och se din app distribuerad. Från pipelinesammanfattningen:
Välj fliken miljöer.
Välj Visa miljö.
Välj instansen av din app för det namnområde som du distribuerade till. Om du använde standardvärdena är det myapp-appen i standardnamnområdet .
Välj fliken Tjänster .
Välj och kopiera den externa IP-adressen till Urklipp.
Öppna en ny webbläsarflik eller ett nytt fönster och ange <IP-adress>:8080.
Om du skapar vår exempelapp visas Hello World i webbläsaren.
Så här bygger pipelinen
När du var klar med att välja alternativ och sedan fortsatte med att verifiera och konfigurera pipelinen skapade Azure Pipelines en pipeline åt dig med hjälp av mallen Distribuera till Azure Kubernetes Service .
Byggfasen använder Docker-uppgiften för att skapa och skicka avbildningen till 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'
Distributionsjobbet använder Kubernetes-manifestaktiviteten för att skapa de imagePullSecret
kubernetes-klusternoder som krävs för att hämta från Azure Container Registry-resursen. Manifestfiler används sedan av Kubernetes-manifestuppgiften för att distribuera till Kubernetes-klustret. Manifestfilerna service.yml
och deployment.yml
, genererades när du använde mallen Distribuera till Azure Kubernetes Service .
- 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)'
Rensa resurser
När du är klar med de resurser du skapade kan du använda följande kommando för att ta bort dem:
az group delete --name myapp-rg
Ange y
när du uppmanas att göra det.
Azure Kubernetes Service