Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Azure DevOps Services | Azure DevOps Server 2022
Используйте Azure Pipelines для развертывания в кластерах Службы Azure Kubernetes и Kubernetes , предлагаемых другими поставщиками облачных служб. Azure Pipelines имеет две задачи для работы с Kubernetes:
- Задача KubernetesManifest: создание и развертывание манифестов в кластерах Kubernetes с помощью Helm, Kompose или Kustomize
- Задача Kubectl: развертывание, настройка и обновление кластера Kubernetes в службе контейнеров Azure путем выполнения команд kubectl
Если вы используете службу Azure Kubernetes с любой задачей, тип подключения службы Azure Resource Manager является лучшим способом подключения к частному кластеру или кластеру с отключенными локальными учетными записями.
Для повышения трассируемости развертывания используйте ресурс Kubernetes в средах совместно с задачей Kubernetes.
Сведения о начале работы с Azure Pipelines и службой Azure Kubernetes см. в статье "Сборка и развертывание в службе Azure Kubernetes с помощью Azure Pipelines". Сведения о начале работы с Azure Pipelines, Kubernetes и канареечной стратегией развертывания см. в статье "Использование канареечной стратегии развертывания для развертываний Kubernetes с помощью Azure Pipelines".
Задача KubernetesManifest
Задача KubernetesManifest проверяет стабильность объектов перед маркировкой задачи как успешной или неудачной. Задача также может выполнять подстановку артефактов, добавлять аннотации, связанные с трассируемостью конвейера, упрощать создание и ссылку на imagePullSecrets, подготавливать манифесты и содействовать развёртыванию стратегий развертывания.
Примечание.
Поддержка триггеров для конвейеров на основе YAML осуществляется в одном репозитории Git. Если вам нужен триггер для файла манифеста, хранящегося в другом репозитории Git, или если триггеры необходимы для реестра контейнеров Azure или Docker Hub, используйте классический конвейер вместо конвейера на основе YAML.
Вы можете использовать действие компоновки в задаче манифеста Kubernetes для интеграции шаблонов в файлы манифеста Kubernetes. Это действие позволяет использовать такие инструменты, как Helm, Kustomize и Kompose. Действие по созданию манифестов в задаче Kubernetes отображает преобразование входных шаблонов в итоговые файлы манифестов, используемые при развертывании. В качестве входных данных для действия развертывания задачи манифеста Kubernetes можно использовать подготовленные файлы манифестов (в последующих задачах).
Целевые ресурсы Kubernetes , которые являются частью сред с заданиями развертывания. Использование сред и развертываний ресурсов улучшает трассируемость конвейера, помогая диагностировать проблемы с развертыванием. Кроме того, вы можете развернуть в кластерах Kubernetes с обычными заданиями без функций мониторинга состояния.
В следующем коде YAML показано, как создавать файлы манифеста из диаграмм 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
Задача команды kubectl
В качестве альтернативы задаче KubernetesManifest KubernetesManifest используйте задачу Kubectl для развертывания, настройки и обновления кластера Kubernetes в службе контейнеров Azure, выполнив команды kubectl.
В этом примере показано, как подключение к службе относится к кластеру Kubernetes.
- task: Kubernetes@1
displayName: kubectl apply
inputs:
connectionType: Kubernetes Service Connection
kubernetesServiceConnection: Contoso #alias: kubernetesServiceEndpoint
задача скрипта
Используйте kubectl
с задачей скрипта.
В этом примере для выполнения kubectl
используется скрипт.
- script: |
kubectl apply -f manifest.yml
Стратегии развертывания Kubernetes
Задача манифеста Kubernetes поддерживает стратегию развертывания канарной версии. Используйте стратегию развертывания canary для частичного развертывания новых изменений, чтобы новые изменения сосуществовали с текущими развертываниями до полного развертывания.
Дополнительные сведения о канарных развертываниях с конвейерами см. в статье "Использование стратегии канаречного развертывания для развертываний Kubernetes с помощью Azure Pipelines".
Развертывания Kubernetes в мультиоблачной среде
Kubernetes работает одинаково для всех поставщиков облачных служб. Используйте Azure Pipelines для развертывания в Службе Azure Kubernetes (AKS), Google Kubernetes Engine (GKE), Amazon Elastic Kubernetes Service (EKS) или кластерах других поставщиков облачных служб.
Чтобы настроить развертывание с несколькими облаками, создайте среду и добавьте ресурсы Kubernetes, связанные с пространствами имен кластеров Kubernetes.
- Служба Azure Kubernetes
- Универсальный поставщик с использованием существующей учетной записи сервиса
Универсальный подход поставщика, основанный на существующей учетной записи службы, работает с кластерами от любого поставщика облачных служб, включая Azure. С помощью параметра службы Azure Kubernetes создаются новые объекты ServiceAccount и RoleBinding . Это гарантирует, что объект RoleBinding ограничивает операции ServiceAccount выбранным пространством имен.
Используя общий подход провайдера, убедитесь, что существует RoleBinding, который предоставляет нужной учетной записи службы разрешения в edit
ClusterRole
. Предоставьте разрешения правильной учетной записи службы, чтобы Azure Pipelines могли использовать ее для создания объектов в выбранном пространстве имен.
Параллельные развёртывания на нескольких облаках
В следующем примере показано, как выполнять параллельные развертывания в кластерах в нескольких облаках. В этом примере существуют развертывания в кластерах AKS, GKE, EKS и OpenShift. Эти четыре пространства имен связаны с ресурсами Kubernetes в 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/*