Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Azure DevOps Services | Azure DevOps Server 2022
Använd Azure Pipelines för att distribuera till Azure Kubernetes Service - och Kubernetes-kluster som erbjuds av andra molnleverantörer. Azure Pipelines har två uppgifter för att arbeta med Kubernetes:
- KubernetesManifest-uppgift: baka och distribuera manifest till Kubernetes-kluster med Helm, Kompose eller Kustomize
- Kubectl-uppgift: distribuera, konfigurera och uppdatera ett Kubernetes-kluster i Azure Container Service genom att köra kubectl-kommandon
Om du använder Azure Kubernetes Service med någon av aktiviteterna är Anslutningstypen för Azure Resource Manager-tjänsten det bästa sättet att ansluta till ett privat kluster eller ett kluster med lokala konton inaktiverade.
Om du vill lägga till distributionsspårning kan du använda en Kubernetes-resurs i miljöer tillsammans med en Kubernetes-uppgift.
Information om hur du kommer igång med Azure Pipelines och Azure Kubernetes Service finns i Skapa och distribuera till Azure Kubernetes Service med Azure Pipelines. Information om hur du kommer igång med Azure Pipelines, Kubernetes och distributionsstrategin för kanariefågel finns i Använda en kanariedistributionsstrategi för Kubernetes-distributioner med Azure Pipelines.
KubernetesManifest-uppgift
KubernetesManifest-aktiviteten söker efter objektstabilitet innan en aktivitet markeras som lyckad eller misslyckad. Uppgiften kan också utföra artefaktersättning, lägga till pipelinespårningsrelaterade anteckningar, förenkla skapandet och referensen av imagePullSecrets, bygga manifester och hjälpa till med utrullningar av distributionsstrategi.
Kommentar
Stöd för YAML-baserade pipelines utlöses från ett enda Git-repository. Om du behöver en utlösare för en manifestfil som lagras på en annan Git-lagringsplats, eller om utlösare behövs för Azure Container Registry eller Docker Hub, använder du en klassisk pipeline i stället för en YAML-baserad pipeline.
Du kan använda åtgärden bake i Kubernetes-manifestuppgiften för att baka mallar till Kubernetes-manifestfiler. Med åtgärden kan du använda verktyg som Helm, Kustomize och Kompose. Åtgärden bake för Kubernetes-manifestuppgiften visar omvandlingen mellan indatamallar och de slutliga manifestfilerna som används i distributioner. Du kan använda bakade manifestfiler som indata i efterföljande steg (i uppgifter) för distributionsåtgärden i Kubernetes-manifestuppgiften.
Rikta in dig på Kubernetes-resurser som ingår i miljöer med distributionsjobb. Genom att använda miljöer och resurstilldelningar förbättras spårbarheten i pipeline, vilket hjälper dig att diagnostisera problem med distributionen. Du kan också distribuera till Kubernetes-kluster med vanliga jobb utan samma hälsoövervakningsfunktioner.
Följande YAML-kod visar hur du bakar manifestfiler från Helm-diagram
steps:
- task: KubernetesManifest@1
name: bake
displayName: Bake K8s manifests from Helm chart
inputs:
action: bake
helmChart: charts/sample
overrides: 'image.repository:nginx'
- task: KubernetesManifest@1
displayName: Deploy K8s manifests
inputs:
kubernetesServiceConnection: someK8sSC
namespace: default
manifests: $(bake.manifestsBundle)
containers: |
nginx: 1.24.0
Kubectl-uppgift
Som ett alternativ till KubernetesManifest KubernetesManifest-uppgiften använder du Kubectl-uppgiften för att distribuera, konfigurera och uppdatera ett Kubernetes-kluster i Azure Container Service genom att köra kubectl-kommandon.
Det här exemplet visar hur en tjänstanslutning refererar till Kubernetes-klustret.
- task: Kubernetes@1
displayName: kubectl apply
inputs:
connectionType: Kubernetes Service Connection
kubernetesServiceConnection: Contoso #alias: kubernetesServiceEndpoint
Skriptaktivitet
Använd kubectl
med en skriptuppgift.
I det här exemplet används ett skript för att köra kubectl
.
- script: |
kubectl apply -f manifest.yml
Strategier för Kubernetes-distribution
Kubernetes-manifestuppgiften stöder distributionsstrategin för kanariefågel. Använd strategin för kanariedistribution för att delvis distribuera nya ändringar så att de nya ändringarna samexisterar med aktuella distributioner före en fullständig distribution.
Mer information om kanariedistributioner med pipelines finns i Använda en kanariedistributionsstrategi för Kubernetes-distributioner med Azure Pipelines.
Kubernetes-distributioner med flera moln
Kubernetes fungerar på samma sätt på alla molnleverantörer. Använd Azure Pipelines för att distribuera till Azure Kubernetes Service (AKS), Google Kubernetes Engine (GKE), Amazon Elastic Kubernetes Service (EKS) eller kluster från andra molnleverantörer.
Om du vill konfigurera distribution med flera moln skapar du en miljö och lägger till Kubernetes-resurser som är associerade med namnrymder i Kubernetes-kluster.
Den allmänna providermetoden, som baseras på ett befintligt tjänstkonto, fungerar med kluster från alla molnleverantörer, inklusive Azure. Med alternativet Azure Kubernetes Service skapas nya ServiceAccount - och RoleBinding-objekt . Detta säkerställer att RoleBinding-objektet begränsar ServiceAccounts åtgärder till det valda namnområdet.
När du använder den allmänna providermetoden kontrollerar du att det finns ett RoleBinding som ger behörigheter till edit
ClusterRole
önskat tjänstkonto. Bevilja behörigheter till rätt tjänstkonto så att Azure Pipelines kan använda det för att skapa objekt i det valda namnområdet.
Parallella distributioner till flera moln
I följande exempel visas hur du utför parallella distributioner till kluster i flera moln. I det här exemplet finns det distributioner till AKS-, GKE-, EKS- och OpenShift-kluster. Dessa fyra namnområden är associerade med Kubernetes-resurser under contoso
miljön.
trigger:
- main
jobs:
- deployment:
displayName: Deploy to AKS
pool:
vmImage: ubuntu-latest
environment: contoso.aksnamespace
strategy:
runOnce:
deploy:
steps:
- checkout: self
- task: KubernetesManifest@1
displayName: Deploy to Kubernetes cluster
inputs:
action: deploy
kubernetesServiceConnection: serviceConnection #replace with your service connection
namespace: aksnamespace
manifests: manifests/*
- deployment:
displayName: Deploy to GKE
pool:
vmImage: ubuntu-latest
environment: contoso.gkenamespace
strategy:
runOnce:
deploy:
steps:
- checkout: self
- task: KubernetesManifest@1
displayName: Deploy to Kubernetes cluster
inputs:
action: deploy
kubernetesServiceConnection: serviceConnection #replace with your service connection
namespace: gkenamespace
manifests: manifests/*
- deployment:
displayName: Deploy to EKS
pool:
vmImage: ubuntu-latest
environment: contoso.eksnamespace
strategy:
runOnce:
deploy:
steps:
- checkout: self
- task: KubernetesManifest@1
displayName: Deploy to Kubernetes cluster
inputs:
action: deploy
kubernetesServiceConnection: serviceConnection #replace with your service connection
namespace: eksnamespace
manifests: manifests/*
- deployment:
displayName: Deploy to OpenShift
pool:
vmImage: ubuntu-latest
environment: contoso.openshiftnamespace
strategy:
runOnce:
deploy:
steps:
- checkout: self
- task: KubernetesManifest@1
displayName: Deploy to Kubernetes cluster
inputs:
action: deploy
kubernetesServiceConnection: serviceConnection #replace with your service connection
namespace: openshiftnamespace
manifests: manifests/*
- deployment:
displayName: Deploy to DigitalOcean
pool:
vmImage: ubuntu-latest
environment: contoso.digitaloceannamespace
strategy:
runOnce:
deploy:
steps:
- checkout: self
- task: KubernetesManifest@1
displayName: Deploy to Kubernetes cluster
inputs:
action: deploy
kubernetesServiceConnection: serviceConnection #replace with your service connection
namespace: digitaloceannamespace
manifests: manifests/*