Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Usługa Azure Pipelines umożliwia wdrażanie w klastrach Azure Kubernetes Service i Kubernetes oferowanych przez innych dostawców chmury. Usługa Azure Pipelines ma dwa zadania do pracy z platformą Kubernetes:
- Zadanie KubernetesManifest: generowanie i wdrażanie manifestów do klastrów Kubernetes za pomocą Helm, Kompose lub Kustomize
- Zadanie Kubectl: wdrażanie, konfigurowanie i aktualizowanie klastra Kubernetes w usłudze Azure Container Service przez uruchomienie poleceń kubectl
Jeśli używasz usługi Azure Kubernetes Service z jednym z zadań, typ połączenia usługi Azure Resource Manager jest najlepszym sposobem nawiązywania połączenia z klastrem prywatnym lub klastrem z wyłączonymi kontami lokalnymi.
Aby uzyskać dodatkową możliwość śledzenia wdrożenia, użyj zasobu Kubernetes w środowiskach wraz z zadaniem Kubernetes.
Aby rozpocząć pracę z usługą Azure Pipelines i usługą Azure Kubernetes Service, zobacz Tworzenie i wdrażanie w usłudze Azure Kubernetes Service za pomocą usługi Azure Pipelines. Aby rozpocząć korzystanie z Azure Pipelines, Kubernetes i strategii wdrażania kanaryjnego, zobacz Użyj strategii wdrażania kanaryjnego dla wdrożeń Kubernetes z Azure Pipelines.
zadanie KubernetesManifest
Zadanie KubernetesManifest sprawdza stabilność obiektu przed oznaczeniem zadania jako zakończonego powodzeniem lub niepowodzeniem. Zadanie może również wykonywać podstawianie artefaktów, dodawać adnotacje związane ze śledzeniem potoku, upraszczać tworzenie i odwoływanie się do ImagePullSecrets, przygotowywać manifesty i pomagać w realizacji strategii wdrażania.
Uwaga
Obsługa potoków opartych na YAML uruchamia się w pojedynczym repozytorium Git. Jeśli potrzebujesz wyzwalacza dla pliku manifestu przechowywanego w innym repozytorium Git lub jeśli wyzwalacze są wymagane dla usługi Azure Container Registry lub Docker Hub, użyj potoku klasycznego zamiast potoku opartego na języku YAML.
Możesz użyć akcji bake w zadaniu manifestu Kubernetes do pieczenia szablonów w plikach manifestu Kubernetes. Akcja umożliwia korzystanie z narzędzi, takich jak Helm, Kustomize i Kompose. Akcja kompilowania zadania manifestu Kubernetes pokazuje transformację między szablonami wejściowymi a końcowymi plikami manifestu używanymi we wdrożeniach. Skompletowane pliki manifestu można wykorzystywać w zadaniach jako dane wejściowe do akcji wdrażania zadania manifestu Kubernetes.
Docelowe zasoby platformy Kubernetes , które są częścią środowisk z zadaniamiwdrażania. Korzystanie ze środowisk i wdrożeń zasobów zwiększa możliwość śledzenia ciągów przetwarzania, pomagając w diagnozowaniu problemów z wdrażaniem. Można również wdrażać w klastrach Kubernetes z regularnymi zadania bez takich samych funkcji kontroli kondycji.
Poniższy kod YAML pokazuje, jak wygenerować pliki manifestu z chartów Helm.
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
Zadanie Kubectl
Alternatywą dla zadania KubernetesManifest KubernetesManifest jest użycie zadania Kubectl w celu wdrożenia, skonfigurowania i zaktualizowania klastra Kubernetes w usłudze Azure Container Service, uruchamiając polecenia kubectl.
W tym przykładzie pokazano, jak połączenie usługi odnosi się do klastra Kubernetes.
- task: Kubernetes@1
displayName: kubectl apply
inputs:
connectionType: Kubernetes Service Connection
kubernetesServiceConnection: Contoso #alias: kubernetesServiceEndpoint
Zadanie skryptu
Użyj kubectl z zadaniem skryptu.
W tym przykładzie użyto skryptu do uruchomienia kubectl.
- script: |
kubectl apply -f manifest.yml
Strategie wdrażania na platformie Kubernetes
Zadanie manifestu Kubernetes obsługuje strategię wdrożenia kanarkowego. Użyj strategii canary, aby częściowo wdrożyć nowe zmiany, dzięki czemu mogą one współistnieć z bieżącymi wdrożeniami przed pełnym wprowadzeniem.
Aby uzyskać więcej informacji na temat wdrożeń kanarowych z potokami, zobacz Use a canary deployment strategy for Kubernetes deployments with Azure Pipelines (Używanie strategii wdrażania kanarowego dla wdrożeń platformy Kubernetes za pomocą usługi Azure Pipelines).
Wdrożenia platformy Kubernetes z wieloma chmurami
Platforma Kubernetes działa tak samo w przypadku wszystkich dostawców usług w chmurze. Usługa Azure Pipelines umożliwia wdrażanie w usłudze Azure Kubernetes Service (AKS), Google Kubernetes Engine (GKE), Amazon Elastic Kubernetes Service (EKS) lub klastrach innych dostawców chmury.
Aby skonfigurować wdrożenie wielochmurowe, utwórz środowisko i dodaj zasoby kubernetes skojarzone z przestrzeniami nazw klastrów Kubernetes.
Ogólne podejście dostawcy oparte na istniejącym koncie usługi współpracuje z klastrami od dowolnego dostawcy chmury, w tym z platformą Azure. Użycie opcji Azure Kubernetes Service powoduje utworzenie nowych obiektów ServiceAccount i RoleBinding . Gwarantuje to, że obiekt RoleBinding ogranicza operacje usługi ServiceAccount do wybranej przestrzeni nazw.
W przypadku korzystania z podejścia ogólnego dostawcy upewnij się, że istnieje powiązanie ról , które przyznaje uprawnienia do editClusterRole żądanego konta usługi. Udziel uprawnień dla właściwego konta usługi, aby usługa Azure Pipelines mogła używać go do tworzenia obiektów w wybranej przestrzeni nazw.
Wdrożenia równoległe w wielu chmurach
W poniższym przykładzie pokazano, jak wykonywać wdrożenia równoległe w klastrach w wielu chmurach. W tym przykładzie istnieją wdrożenia w klastrach AKS, GKE, EKS i OpenShift. Te cztery przestrzenie nazw są skojarzone z zasobami Kubernetes w środowisku contoso.
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/*