Сборка и развертывание в Службе Azure Kubernetes с помощью Azure Pipelines | Документация Майкрософт.
Azure DevOps Services
Конвейеры Azure Pipelines предназначены для автоматизации развертывания в Службе Azure Kubernetes (AKS). Azure Pipelines позволяет создавать, тестировать и развертывать ресурсы с использованием технологий непрерывной интеграции (CI) и непрерывной поставки (CD) в Azure DevOps.
В этой статье вы узнаете, как создать конвейер, который непрерывно собирает и развертывает ваши приложения. Каждый раз при изменении кода в репозитории, содержащем Dockerfile, образы отправляются в Реестр контейнеров Azure, а манифесты развертываются в кластере AKS.
Необходимые компоненты
- Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
- Подключение к службе Azure Resource Manager. Создайте подключение к службе Azure Resource Manager.
- Учетная запись GitHub. Создайте бесплатную учетную запись GitHub, если еще не сделали этого.
Получение кода
Создайте вилку следующего репозитория, содержащего пример приложения и Dockerfile:
https://github.com/MicrosoftDocs/pipelines-javascript-docker
Создание ресурсов Azure
Войдите на портал Azure, а затем нажмите кнопку Cloud Shell в правом верхнем углу. Используйте Azure CLI или PowerShell для создания кластера AKS.
Создание реестра контейнеров
# Create a resource group
az group create --name myapp-rg --location eastus
# Create a container registry
az acr create --resource-group myapp-rg --name mycontainerregistry --sku Basic
# Create a Kubernetes cluster
az aks create \
--resource-group myapp-rg \
--name myapp \
--node-count 1 \
--enable-addons monitoring \
--generate-ssh-keys
Вход в Azure Pipelines
Войдите в Azure Pipelines. После входа в браузере откроется https://dev.azure.com/my-organization-name
и отобразится панель мониторинга Azure DevOps.
Создайте проект в выбранной организации. Если у вас нет проектов в организации, отобразится экран Создайте проект, чтобы приступить к работе. В противном случае нажмите кнопку Создать проект в правом верхнем углу панели мониторинга.
Создание конвейера
Подключение и выбор репозитория
Войдите в свою организацию Azure DevOps и откройте нужный проект.
Выберите Конвейеры, а затем — Новый конвейер.
Выполните все шаги мастера, выбрав GitHub в качестве расположения исходного кода.
Возможно, вам придется выполнить вход в GitHub. Для этого введите учетные данные GitHub.
Когда появится список репозиториев, выберите свой.
Вы можете перенаправиться на GitHub, чтобы установить приложение Azure Pipelines. В этом случае выберите " Утвердить" и "Установить".
Выберите Развернуть в Службе Azure Kubernetes.
При появлении запроса выберите подписку, в которой были созданы реестр и кластер.
Выберите кластер
myapp
.В качестве пространства имен выберите существующее, а затем — По умолчанию.
Выберите имя своего реестра контейнеров.
Можно оставить имя образа по умолчанию.
Задайте для порта службы значение 8080.
Установите флажок "Включить приложение проверки для запросов на вытягивание" для проверки конфигурации приложения, связанной с конвейером YAML, автоматически сформированного в последующих шагах.
Выберите " Проверить и настроить".
Процесс создания конвейера в Azure Pipelines будет следующим:
Создайте подключение к службе реестра Docker, чтобы позволить конвейеру отправлять образы в реестр контейнеров.
Создайте среду и ресурс Kubernetes в этой среде. Для кластера с поддержкой RBAC созданный ресурс Kubernetes неявно создает в кластере объекты ServiceAccount и RoleBinding, чтобы созданные учетная запись ServiceAccount не могла выполнять операции вне выбранного пространства имен.
Создайте файл azure-pipelines.yml, который определяет ваш конвейер.
Создайте файлы манифеста Kubernetes. Эти файлы создаются путем заполнения шаблонов deployment.yml и service.yml на основе выбранных параметров. Когда будете готовы, выберите Сохранить и запустить.
Выберите Сохранить и выполнить.
Вы можете изменить сообщение о фиксации на что-то наподобие Добавление конвейера в наш репозиторий. Когда будете готовы, выберите Сохранить и запустить, чтобы зафиксировать новый конвейер в репозитории, после чего можно будет запустить новый конвейер в первый раз.
Отслеживание развертывания приложения
По мере выполнения конвейера наблюдайте за тем, как этап сборки, а затем этап развертывания переходят от синего цвета (выполняется) к зеленому (завершено). Вы можете выбирать этапы и задания для отслеживания конвейера в действии.
Примечание.
Если вы используете размещенный агент Microsoft, необходимо добавить диапазон IP-адресов этого агента в брандмауэр. Еженедельный список диапазонов IP-адресов доступен в файле JSON, который публикуется каждую среду. Новые диапазоны IP-адресов вступают в силу со следующего понедельника. Дополнительные сведения см. в разделе Агенты, размещенные на сервере Microsoft. Чтобы найти диапазоны IP-адресов, которые необходимы вашей организации Azure DevOps, узнайте, как определить возможные диапазоны IP-адресов для агентов, размещенных на сервере Microsoft.
После выполнения конвейера проанализируйте результаты, а затем посмотрите, как было развернуто ваше приложение. Из сводки по конвейеру:
Перейдите на вкладку Среды.
Выберите Просмотр среды.
Выберите экземпляр своего приложения для пространства имен, в которое вы его развернули. Если вы использовали значения по умолчанию, это приложение myapp в пространстве имен по умолчанию .
Откройте вкладку Службы.
Выберите общедоступный IP-адрес и скопируйте его в буфер обмена.
Откройте новую вкладку или окно браузера и введите <IP-адрес>:8080.
Если вы создаете пример приложения, в браузере появится сообщение Hello world.
Как выполняется построение конвейера
После выбора параметров и перехода к проверке и настройке служба Azure Pipelines создает для вас конвейер на основе шаблона развертывания в Службе Azure Kubernetes.
На этапе сборки для сборки и отправки образа в Реестр контейнеров Azure используется задача Docker.
- stage: Build
displayName: Build stage
jobs:
- job: Build
displayName: Build job
pool:
vmImage: $(vmImageName)
steps:
- task: Docker@2
displayName: Build and push an image to container registry
inputs:
command: buildAndPush
repository: $(imageRepository)
dockerfile: $(dockerfilePath)
containerRegistry: $(dockerRegistryServiceConnection)
tags: |
$(tag)
- task: PublishPipelineArtifact@1
inputs:
artifactName: 'manifests'
path: 'manifests'
Задание развертывания использует задачу манифеста Kubernetes, чтобы создать объект imagePullSecret
, необходимый узлам кластера Kubernetes для извлечения данных из ресурса Реестра контейнеров Azure. Файлы манифеста затем используются задачей манифеста Kubernetes для развертывания в кластере Kubernetes. Файлы service.yml
манифеста и deployment.yml
были созданы при использовании шаблона Deploy для Служба Azure Kubernetes.
- stage: Deploy
displayName: Deploy stage
dependsOn: Build
jobs:
- deployment: Deploy
displayName: Deploy job
pool:
vmImage: $(vmImageName)
environment: 'myenv.aksnamespace' #customize with your environment
strategy:
runOnce:
deploy:
steps:
- task: DownloadPipelineArtifact@2
inputs:
artifactName: 'manifests'
downloadPath: '$(System.ArtifactsDirectory)/manifests'
- task: KubernetesManifest@1
displayName: Create imagePullSecret
inputs:
action: 'createSecret'
connectionType: 'kubernetesServiceConnection'
kubernetesServiceConnection: 'myapp-default' #customize for your Kubernetes service connection
secretType: 'dockerRegistry'
secretName: '$(imagePullSecret)'
dockerRegistryEndpoint: '$(dockerRegistryServiceConnection)'
- task: KubernetesManifest@1
displayName: Deploy to Kubernetes cluster
inputs:
action: 'deploy'
connectionType: 'kubernetesServiceConnection'
kubernetesServiceConnection: 'myapp-default' #customize for your Kubernetes service connection
manifests: |
$(Pipeline.Workspace)/manifests/deployment.yml
$(Pipeline.Workspace)/manifests/service.yml
containers: '$(containerRegistry)/$(imageRepository):$(tag)'
imagePullSecrets: '$(imagePullSecret)'
Очистка ресурсов
Завершив работу с созданными ресурсами, вы можете удалить их с помощью следующей команды:
az group delete --name myapp-rg
Введите y
при появлении запроса.
Azure Kubernetes Service