Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure DevOps Services | Azure DevOps Server 2022
Verwenden Sie Azure-Pipelines zum Bereitstellen in Azure Kubernetes Service - und Kubernetes-Clustern, die von anderen Cloudanbietern angeboten werden. Azure Pipelines verfügt über zwei Aufgaben für die Arbeit mit Kubernetes:
- Aufgabe KubernetesManifest: Baking von Manifesten und mit Helm, Kompose oder Kustomize in Kubernetes-Clustern bereitstellen
- Kubectl-Aufgabe: Bereitstellen, Konfigurieren und Aktualisieren eines Kubernetes-Clusters in Azure Container Service durch Ausführen von kubectl-Befehlen.
Wenn Sie Azure Kubernetes Service mit beiden Vorgängen verwenden, ist der Azure Resource Manager-Dienstverbindungstyp die beste Methode, um eine Verbindung mit einem privaten Cluster oder einem Cluster mit deaktivierten lokalen Konten herzustellen.
Verwenden Sie für die hinzugefügte Bereitstellungsablaufverfolgung eine Kubernetes-Ressource in Umgebungen zusammen mit einer Kubernetes-Aufgabe.
Informationen zu den ersten Schritten mit Azure Pipelines und Azure Kubernetes Service finden Sie unter Build and deploy to Azure Kubernetes Service with Azure Pipelines. Informationen zu den ersten Schritten mit Azure Pipelines, Kubernetes und der Canary-Bereitstellungsstrategie finden Sie unter Verwenden einer Canary-Bereitstellungsstrategie für Kubernetes-Bereitstellungen mit Azure Pipelines.
KubernetesManifest-Aufgabe
Der KubernetesManifest-Vorgang überprüft die Objektstabilität, bevor ein Vorgang als erfolgreich markiert oder fehlgeschlagen markiert wird. Die Aufgabe ermöglicht es auch, Artefaktersetzungen durchzuführen, Anmerkungen im Zusammenhang mit der Nachverfolgbarkeit der Pipeline hinzuzufügen, das Erstellen und Verweisen auf imagePullSecrets zu vereinfachen, Baking von Manifesten auszuführen und Rollouts von Bereitstellungsstrategien zu unterstützen.
Hinweis
YAML-basierte Pipelineunterstützungstrigger für ein einzelnes Git-Repository. Wenn Sie einen Trigger für eine Manifestdatei benötigen, die in einem anderen Git-Repository gespeichert ist, oder wenn Trigger für azure Container Registry oder Docker Hub erforderlich sind, verwenden Sie eine klassische Pipeline anstelle einer YAML-basierten Pipeline.
Sie können die Baking-Aktion in der Kubernetes-Manifestaufgabe verwenden, um ein Baking von Vorlagen in Kubernetes-Manifestdateien auszuführen. Mit der Aktion können Sie Tools wie Helm, Kustomize und Kompose verwenden. Die Backaktion der Kubernetes-Manifestaufgabe zeigt die Transformation zwischen Eingabevorlagen und den endgültigen Manifestdateien, die in Bereitstellungen verwendet werden. Sie können nachgeschaltete Manifestdateien (in Aufgaben) als Eingaben für die Bereitstellungsaktion der Kubernetes-Manifestaufgabe verwenden.
Festlegen von Kubernetes-Ressourcen , die Teil von Umgebungen mit Bereitstellungsaufträgen sind. Die Verwendung von Umgebungen und Ressourcenbereitstellungen verbessert die Nachverfolgbarkeit von Pipelines und hilft Ihnen dabei, Bereitstellungsprobleme zu diagnostizieren. Sie können Bereitstellungen auch in Kubernetes-Clustern mit regulären Aufträgen ohne dieselben Integritätsfeatures durchführen.
Der folgende YAML-Code zeigt, wie Manifestdateien aus Helm-Diagrammen gebacken werden.
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-Aufgabe
Als Alternative zur KubernetesManifest KubernetesManifest-Aufgabe verwenden Sie die Kubectl-Aufgabe zum Bereitstellen, Konfigurieren und Aktualisieren eines Kubernetes-Clusters in Azure Container Service durch Ausführen von Kubectl-Befehlen.
Dieses Beispiel zeigt, wie eine Dienstverbindung auf den Kubernetes-Cluster verweist.
- task: Kubernetes@1
displayName: kubectl apply
inputs:
connectionType: Kubernetes Service Connection
kubernetesServiceConnection: Contoso #alias: kubernetesServiceEndpoint
Skriptaufgabe
Verwenden Sie kubectl
mit einer Skriptaufgabe.
In diesem Beispiel wird ein Skript zum Ausführen von kubectl
verwendet.
- script: |
kubectl apply -f manifest.yml
Kubernetes-Bereitstellungsstrategien
Die Kubernetes-Manifestaufgabe unterstützt die Canary-Bereitstellungsstrategie. Verwenden Sie die Canary-Bereitstellungsstrategie, um teilweise neue Änderungen bereitzustellen, sodass die neuen Änderungen mit den aktuellen Bereitstellungen vor einem vollständigen Rollout koexistieren.
Weitere Informationen zu Canary-Deployments mit Pipelines finden Sie unter Verwenden einer Canary-Bereitstellungsstrategie für Kubernetes-Bereitstellungen mit Azure Pipelines.
Kubernetes-Bereitstellungen in mehreren Clouds
Kubernetes funktioniert auf die gleiche Weise bei allen Cloudanbietern. Verwenden Sie Azure Pipelines, um in Azure Kubernetes Service (AKS), Google Kubernetes Engine (GKE), Amazon Elastic Kubernetes Service (EKS) oder in Clustern anderer Cloudanbieter bereitzustellen.
Um die Bereitstellung mit mehreren Clouds einzurichten, erstellen Sie eine Umgebung , und fügen Sie Kubernetes-Ressourcen hinzu, die Namespaces von Kubernetes-Clustern zugeordnet sind.
Der allgemeine Anbieteransatz, der auf einem vorhandenen Dienstkonto basiert, funktioniert mit Clustern von jedem Cloudanbieter, einschließlich Azure. Mithilfe der Azure Kubernetes-Dienstoption werden neue ServiceAccount - und RoleBinding-Objekte erstellt. Dadurch wird sichergestellt, dass das RoleBinding-Objekt die Vorgänge des ServiceAccounts auf den ausgewählten Namespace beschränkt.
Stellen Sie bei Verwendung des generischen Anbieteransatzes sicher, dass eine RoleBinding existiert, die Berechtigungen für das gewünschte Dienstkonto im edit
ClusterRole
gewährt. Erteilen Sie Berechtigungen für das richtige Dienstkonto, damit Azure Pipelines es verwenden können, um Objekte im ausgewählten Namespace zu erstellen.
Parallele Bereitstellungen in mehreren Clouds
Das folgende Beispiel zeigt, wie Sie parallele Bereitstellungen in Clustern in mehreren Clouds durchführen. In diesem Beispiel gibt es Bereitstellungen für die AKS-, GKE-, EKS- und OpenShift-Cluster. Diese vier Namespaces sind Kubernetes-Ressourcen in der contoso
-Umgebung zugeordnet.
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/*