Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Azure DevOps Services | Azure DevOps Server 2022
Gebruik Azure Pipelines om te implementeren in Azure Kubernetes Service - en Kubernetes-clusters die worden aangeboden door andere cloudproviders. Azure Pipelines heeft twee taken voor het werken met Kubernetes:
- KubernetesManifest-taak: manifesten bakken en implementeren in Kubernetes-clusters met Helm, Kompose of Kustomize
- Kubectl-taak: een Kubernetes-cluster implementeren, configureren en bijwerken in Azure Container Service door kubectl-opdrachten uit te voeren
Als u Azure Kubernetes Service gebruikt met een van beide taken, is het verbindingstype van de Azure Resource Manager-service de beste manier om verbinding te maken met een privécluster of een cluster met lokale accounts uitgeschakeld.
Gebruik een Kubernetes-resource in omgevingen en een Kubernetes-taak voor extra tracering van implementaties .
Zie Bouwen en implementeren in Azure Kubernetes Service met Azure Pipelines om aan de slag te gaan met Azure Pipelines en Azure Kubernetes Service. Om aan de slag te gaan met Azure Pipelines, Kubernetes en de canary-implementatiestrategie, zie Een canary-implementatiestrategie gebruiken voor Kubernetes-implementaties met Azure Pipelines.
KubernetesManifest-taak
De KubernetesManifest-taak controleert op objectstabiliteit voordat een taak als geslaagd of mislukt wordt gemarkeerd. De taak kan ook artefactvervanging uitvoeren, pijplijn-traceringsgerelateerde aantekeningen toevoegen, de creatie en verwijzing naar imagePullSecrets vereenvoudigen, manifests bouwen en helpen bij het uitrollen van implementatiestrategieën.
Notitie
Op YAML gebaseerde pijplijnondersteuningstriggers in één Git-opslagplaats. Als u een trigger nodig hebt voor een manifestbestand dat is opgeslagen in een andere Git-opslagplaats of als triggers nodig zijn voor Azure Container Registry of Docker Hub, gebruikt u een klassieke pijplijn in plaats van een OP YAML gebaseerde pijplijn.
U kunt de bake-actie in de Kubernetes-manifesttaak gebruiken om sjablonen in Kubernetes-manifestbestanden te bakenen. Met de actie kunt u hulpprogramma's zoals Helm, Kustomize en Kompose gebruiken. De bake-actie van de Kubernetes-manifesttaak toont de transformatie tussen invoersjablonen en de uiteindelijke manifestbestanden die in implementaties worden gebruikt. U kunt voorbewerkte manifestbestanden downstream, binnen taken, gebruiken als invoer voor de implementatieactie van de Kubernetes manifesttaak.
Doel-Kubernetes-resources die deel uitmaken van omgevingen met implementatietaken. Het gebruik van omgevingen en resource-implementaties verbetert de tracering van pijplijnen, waardoor u implementatieproblemen kunt vaststellen. U kunt ook implementeren in Kubernetes-clusters met reguliere taken zonder dezelfde statusfuncties.
De volgende YAML-code laat zien hoe u manifestbestanden uit Helm-grafieken kunt bakken
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-taak
Als alternatief voor de KubernetesManifest KubernetesManifest-taak gebruikt u de Kubectl-taak om een Kubernetes-cluster in Azure Container Service te implementeren, configureren en bij te werken door kubectl-opdrachten uit te voeren.
In dit voorbeeld ziet u hoe een serviceverbinding verwijst naar het Kubernetes-cluster.
- task: Kubernetes@1
displayName: kubectl apply
inputs:
connectionType: Kubernetes Service Connection
kubernetesServiceConnection: Contoso #alias: kubernetesServiceEndpoint
Scriptopdracht
Gebruik kubectl
met een scripttaak.
In dit voorbeeld wordt een script gebruikt om uit te voeren kubectl
.
- script: |
kubectl apply -f manifest.yml
Implementatiestrategieën van Kubernetes
De Kubernetes-manifest-taak ondersteunt de canary-implementatiestrategie, een methode om nieuwe versies stapsgewijs te introduceren. Gebruik de canary-implementatiestrategie om gedeeltelijk nieuwe wijzigingen te implementeren, zodat de nieuwe wijzigingen naast de huidige implementaties bestaan vóór een volledige implementatie.
Kubernetes-implementaties met meerdere clouds
Kubernetes werkt op dezelfde manier voor alle cloudproviders. Gebruik Azure Pipelines om te implementeren in Azure Kubernetes Service (AKS), Google Kubernetes Engine (GKE), Amazon Elastic Kubernetes Service (EKS) of clusters van andere cloudproviders.
Als u multicloudimplementatie wilt instellen, maakt u een omgeving en voegt u Kubernetes-resources toe die zijn gekoppeld aan naamruimten van Kubernetes-clusters.
De algemene providerbenadering werkt op basis van een bestaand serviceaccount met clusters van elke cloudprovider, waaronder Azure. Met de optie Azure Kubernetes Service maakt u nieuwe ServiceAccount - en RoleBinding-objecten . Dit zorgt ervoor dat het RoleBinding-object de bewerkingen van het ServiceAccount beperkt tot de gekozen naamruimte.
Wanneer u de algemene providerbenadering gebruikt, moet u ervoor zorgen dat er een RoleBinding bestaat die machtigingen in het edit
ClusterRole
gewenste serviceaccount verleent. Verken machtigingen aan het juiste serviceaccount, zodat Azure Pipelines dit kan gebruiken om objecten te maken in de gekozen naamruimte.
Parallelle implementaties naar meerdere clouds
In het volgende voorbeeld ziet u hoe u parallelle implementaties uitvoert voor clusters in meerdere clouds. In dit voorbeeld zijn er implementaties voor de AKS-, GKE-, EKS- en OpenShift-clusters. Deze vier naamruimten zijn gekoppeld aan Kubernetes-resources onder de contoso
omgeving.
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/*