Автоматизация развертываний приложений в Azure Spring Apps

Примечание.

Azure Spring Apps — это новое название службы Azure Spring Cloud. Старое название будет еще некоторое время встречаться в наших материалах, пока мы не обновим ресурсы, такие как снимки экрана, видео и схемы.

Эта статья относится к: ✔️ Basic/Standard ✔️ Enterprise

В этой статье показано, как использовать задачу Azure Spring Apps для Azure Pipelines, чтобы развернуть приложения.

Средства непрерывной интеграции и непрерывной поставки позволяют быстро развертывать обновления для существующих приложений с минимальными усилиями и рисками. Azure DevOps помогает организовывать и контролировать эти ключевые задания.

В приведенном ниже видеоролике рассказывается о комплексной автоматизации с использованием выбранных вами средств, в том числе Azure Pipelines.


Создание подключения к службе Azure Resource Manager

Сначала создайте подключение службы Azure Resource Manager к проекту Azure DevOps. Инструкции см. в разделе Подключение к Microsoft Azure. Не забудьте выбрать ту же подписку, которую вы используете для экземпляра службы Azure Spring Apps.

Сборка и развертывание приложений

Теперь вы можете создавать и развертывать проекты с помощью последовательности задач. В следующем шаблоне Azure Pipelines определяются переменные, задача .NET Core для сборки приложения и задача Azure Spring Apps для развертывания приложения.

variables:
  workingDirectory: './steeltoe-sample'
  planetMainEntry: 'Microsoft.Azure.SpringCloud.Sample.PlanetWeatherProvider.dll'
  solarMainEntry: 'Microsoft.Azure.SpringCloud.Sample.SolarSystemWeather.dll'
  planetAppName: 'planet-weather-provider'
  solarAppName: 'solar-system-weather'
  serviceName: '<your service name>'

steps:
# Restore, build, publish and package the zipped planet app
- task: DotNetCoreCLI@2
  inputs:
    command: 'publish'
    publishWebProjects: false
    arguments: '--configuration Release'
    zipAfterPublish: false
    modifyOutputPath: false
    workingDirectory: $(workingDirectory)

# Deploy the planet app
- task: AzureSpringCloud@0
  inputs:
    azureSubscription: '<Service Connection Name>'
    Action: 'Deploy'
    AzureSpringCloud: $(serviceName)
    AppName: 'testapp'
    DeploymentType: 'Artifacts'
    UseStagingDeployment: false
    DeploymentName: 'default'
    Package: $(workingDirectory)/src/$(planetAppName)/publish-deploy-planet.zip
    RuntimeVersion: 'NetCore_31'
    DotNetCoreMainEntryPath: $(planetMainEntry)

# Deploy the solar app
- task: AzureSpringCloud@0
  inputs:
    azureSubscription: '<Service Connection Name>'
    Action: 'Deploy'
    AzureSpringCloud: $(serviceName)
    AppName: 'testapp'
    DeploymentType: 'Artifacts'
    UseStagingDeployment: false
    DeploymentName: 'default'
    Package: $(workingDirectory)/src/$(solarAppName)/publish-deploy-solar.zip
    RuntimeVersion: 'NetCore_31'
    DotNetCoreMainEntryPath: $(solarMainEntry)

Настройка экземпляра Azure Spring Apps и проекта Azure DevOps

Сначала выполните следующие действия, чтобы настроить существующий экземпляр Azure Spring Apps, который будет использоваться с Azure DevOps.

  1. Перейдите к экземпляру Azure Spring Apps, а затем создайте новое приложение.
  2. Перейдите на портал Azure DevOps, а затем создайте новый проект в выбранной организации. Если у вас нет организации Azure DevOps, можете создать ее бесплатно.
  3. Выберите Репозитории, а затем импортируйте демонстрационный код Spring Boot в репозиторий.

Создание подключения к службе Azure Resource Manager

Затем создайте подключение службы Azure Resource Manager к проекту Azure DevOps. Инструкции см. в разделе Подключение к Microsoft Azure. Не забудьте выбрать ту же подписку, которую вы используете для экземпляра службы Azure Spring Apps.

Сборка и развертывание приложений

Теперь вы можете создавать и развертывать проекты с помощью последовательности задач. В следующих разделах показаны различные варианты развертывания приложения с помощью Azure DevOps.

Развертывание с помощью конвейера

Чтобы выполнить развертывание с помощью конвейера, сделайте следующее:

  1. Выберите Конвейеры, а затем создайте новый конвейер с использованием шаблона Maven.

  2. Откройте файл azure-pipelines.yml и задайте для поля mavenPomFile значение 'complete/pom.xml'.

  3. Выберите Показать помощника справа, а затем выберите шаблон Azure Spring Apps.

  4. Выберите подключение службы, созданное для подписки Azure, а затем выберите экземпляр Azure Spring Apps и экземпляр приложения.

  5. Отключите параметр Использовать промежуточное развертывание.

  6. Задайте для параметра Пакет или папка значение complete/target/spring-boot-complete-0.0.1-SNAPSHOT.jar.

  7. Нажмите кнопку Добавить, чтобы добавить эту задачу в конвейер.

    Параметры конвейера должны соответствовать показанным на следующем рисунке.

    Снимок экрана: Azure DevOps, на котором показаны параметры нового конвейера.

    Вы также можете создавать и развертывать проекты с использованием следующего шаблона конвейера. В этом примере определяются задача Maven для сборки приложения и вторая задача, которая развертывает JAR-файл с использованием задачи Azure Spring Apps для Azure Pipelines.

    steps:
    - task: Maven@3
      inputs:
        mavenPomFile: 'complete/pom.xml'
    - task: AzureSpringCloud@0
      inputs:
        azureSubscription: '<your service connection name>'
        Action: 'Deploy'
        AzureSpringCloud: <your Azure Spring Apps service>
        AppName: <app-name>
        DeploymentType: 'Artifacts'
        UseStagingDeployment: false
        DeploymentName: 'default'
        Package: ./target/your-result-jar.jar
    
  8. Нажмите кнопку Сохранить и запустить и дождитесь завершения задания.

Сине-зеленые развертывания

Развертывание, показанное в предыдущем разделе, получает трафик приложения сразу же после развертывания. Это позволяет протестировать приложение в рабочей среде, прежде чем оно получит трафик клиента.

Изменение файла конвейера

Чтобы создать приложение так же, как было описано выше, и развернуть его в промежуточном развертывании, используйте следующий шаблон. В этом примере промежуточное развертывание уже должно существовать. Альтернативный подход см. в разделе Стратегии сине-зеленого развертывания.

steps:
- task: Maven@3
  inputs:
    mavenPomFile: 'pom.xml'
- task: AzureSpringCloud@0
  inputs:
    azureSubscription: '<your service connection name>'
    Action: 'Deploy'
    AzureSpringCloud: <your Azure Spring Apps service>
    AppName: <app-name>
    DeploymentType: 'Artifacts'
    UseStagingDeployment: true
    Package: ./target/your-result-jar.jar
- task: AzureSpringCloud@0
  inputs:
    azureSubscription: '<your service connection name>'
    Action: 'Set Production'
    AzureSpringCloud: <your Azure Spring Apps service>
    AppName: <app-name>
    UseStagingDeployment: true

Использование раздела "Выпуски"

Ниже показано, как включить сине-зеленое развертывание из раздела Выпуски.

  1. Выберите Конвейеры и создайте новый конвейер для артефакта сборки и публикации Maven.

    1. Выберите Azure Repos Git в качестве расположения кода.
    2. Выберите репозиторий, в котором находится код.
    3. Выберите шаблон Maven и измените файл, задав для поля mavenPomFile значение complete/pom.xml.
    4. Выберите Показать помощника справа и выберите шаблон Опубликовать артефакты сборки.
    5. Задайте для параметра Путь для публикации значение complete/target/spring-boot-complete-0.0.1-SNAPSHOT.jar.
    6. Выберите Сохранить и выполнить.
  2. Выберите Выпуски, а затем Создать выпуск.

  3. Добавьте новый конвейер и выберите Пустое задание, чтобы создать задание.

  4. В разделе Этапы выберите строку 1 задание, 0 задач.

    Снимок экрана: Azure DevOps, на котором показана вкладка

    1. Выберите +, чтобы добавить задачу в задание.
    2. Найдите шаблон Azure Spring Apps, а затем нажмите кнопку Добавить, чтобы добавить задачу в задание.
    3. Выберите Развертывание Azure Spring Apps:, чтобы изменить задачу.
    4. Укажите сведения о приложении в задаче, а затем отключите параметр Использовать промежуточное развертывание.
    5. Включите параметр Создать промежуточное развертывание, если его не существует, а затем укажите имя в разделе Развертывание.
    6. Нажмите кнопку Сохранить, чтобы сохранить эту задачу.
    7. Нажмите ОК.
  5. Выберите Конвейер, а затем выберите Добавить артефакт.

    1. В разделе Источник (конвейер сборки) выберите созданный ранее конвейер.
    2. Нажмите кнопку "Добавить", а затем "Сохранить".
  6. Выберите 1 задание, 1 задача в разделе Этапы.

  7. Перейдите к задаче Развертывание Azure Spring Apps на Этапе 1, а затем щелкните многоточие рядом с полем Пакет или папка.

  8. В диалоговом окне выберите файл spring-boot-complete-0.0.1-SNAPSHOT.jar и нажмите кнопку OK.

    Снимок экрана: Azure DevOps, в котором показано диалоговое окно

  9. Выберите +, чтобы добавить другую задачу Azure Spring Apps в задание.

  10. Измените действие на Задать развертывание в рабочей среде.

  11. Нажмите кнопку Сохранить, а затем выберите Создать выпуск, чтобы автоматически запустить развертывание.

Чтобы проверить текущее состояние выпуска приложения, выберите Просмотреть выпуск. После завершения этой задачи перейдите на портал Azure, чтобы проверить состояние приложения.

Развертывание из источника

Чтобы выполнить развертывание непосредственно в Azure без отдельного шага сборки, используйте следующий шаблон конвейера.

- task: AzureSpringCloud@0
  inputs:
    azureSubscription: '<your service connection name>'
    Action: 'Deploy'
    AzureSpringCloud: <your Azure Spring Apps service>
    AppName: <app-name>
    DeploymentType: 'Artifacts'
    UseStagingDeployment: false
    DeploymentName: 'default'
    Package: $(Build.SourcesDirectory)

Развертывание из пользовательского образа

Чтобы развернуть непосредственно из существующего образа контейнера, используйте следующий шаблон конвейера.

- task: AzureSpringCloud@0
  inputs:
    azureSubscription: '<your service connection name>'
    Action: 'Deploy'
    AzureSpringCloud: '<your Azure Spring Apps service>'
    AppName: '<app-name>'
    DeploymentType: 'CustomContainer'
    UseStagingDeployment: false
    DeploymentName: 'default'
    ContainerRegistry: 'docker.io'  # or your Azure Container Registry, e.g: 'contoso.azurecr.io'
    RegistryUsername: '$(username)'
    RegistryPassword: '$(password)'
    ContainerImage: '<your image tag>'

Развертывание и указание построителя (только для корпоративного плана)

Если вы используете план Azure Spring Apps Enterprise, можно также указать, какой построитель будет использоваться для развертывания действий с помощью builder параметра, как показано в следующем примере. Дополнительные сведения см. в разделе "Использование службы сборки Tanzu".

- task: AzureSpringCloud@0
  inputs:
    azureSubscription: '<your-service-connection-name>'
    Action: 'Deploy'
    AzureSpringCloud: '<your-Azure-Spring-Apps-service-instance-name>'
    AppName: '<app-name>'
    UseStagingDeployment: false
    DeploymentName: 'default'
    Package: './target/your-result-jar.jar'
    Builder: '<your-Tanzu-Build-Service-Builder-resource>'

Следующие шаги