Руководство. Развертывание приложений в Azure Spring Apps с помощью Jenkins и Azure CLI
Примечание.
Azure Spring Apps — это новое название службы Azure Spring Cloud. Старое название будет еще некоторое время встречаться в наших материалах, пока мы не обновим ресурсы, такие как снимки экрана, видео и схемы.
Azure Spring Apps — это полностью управляемая разработка микрослужб с встроенным обнаружением служб и управлением конфигурацией. Эта служба позволяет легко развертывать в Azure приложения для микрослужб на основе Spring Boot. В этом руководстве показано, как использовать Azure CLI в Jenkins для автоматизации непрерывной интеграции и доставки (CI/CD) для Azure Spring Apps.
При работе с этим руководством вы выполните следующие задачи:
- подготовка экземпляра службы и запуск приложения Java Spring;
- Подготовка сервера Jenkins
- создание и развертывание приложений микрослужб с использованием Azure CLI в конвейере Jenkins.
Необходимые компоненты
- Подписка Azure. Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу.
- Jenkins: установка Jenkins на виртуальной машине Linux
- Учетная запись GitHub: если у вас нет учетной записи GitHub, создайте бесплатную учетную запись перед началом работы.
подготовка экземпляра службы и запуск приложения Java Spring;
Мы используем метрики Piggy в качестве примера приложения службы Майкрософт и выполните те же действия, что и в кратком руководстве. Запуск приложения Java Spring с помощью Azure CLI для подготовки экземпляра службы и настройки приложений. Если вы уже прошли тот же процесс, перейдите к следующему разделу. Если нет, выполните команды Azure CLI, указанные далее. Дополнительные сведения см. в кратком руководстве. Запуск приложения Java Spring с помощью Azure CLI .
Локальный компьютер должен соответствовать тем же предварительным требованиям, что и сервер сборки Jenkins. Чтобы выполнять сборку и развертывание приложений микрослужб, убедитесь, что установлены следующие компоненты:
- Git
- JDK 8
- Maven 3.0 или более поздней версии;
- установленное средство Azure CLI версии 2.0.67 или выше.
Установите расширение Azure Spring Apps:
az extension add --name spring
Создайте группу ресурсов для хранения службы Azure Spring Apps:
az group create --location eastus --name <resource group name>
Подготовьте экземпляр Azure Spring Apps:
az spring create -n <service name> -g <resource group name>
Создайте вилку репозитория Piggy Metrics в своей учетной записи GitHub. На локальном компьютере клонируйте репозиторий в каталог с именем
source-code
.mkdir source-code git clone https://github.com/<your GitHub id>/piggymetrics
Настройте сервер конфигурации. Не забудьте заменить заполнитель <your GitHub id> реальным значением идентификатора GitHub.
az spring config-server git set -n <your-service-name> --uri https://github.com/<your GitHub id>/piggymetrics --label config
Скомпилируйте проект.
cd piggymetrics mvn clean package -D skipTests
Создайте три микрослужбы: gateway, auth-service и account-service.
az spring app create --n gateway -s <service name> -g <resource group name> az spring app create --n auth-service -s <service name> -g <resource group name> az spring app create --n account-service -s <service name> -g <resource group name>
Разверните приложение.
az spring app deploy -n gateway -s <service name> -g <resource group name> --jar-path ./gateway/target/gateway.jar az spring app deploy -n account-service -s <service name> -g <resource group name> --jar-path ./account-service/target/account-service.jar az spring app deploy -n auth-service -s <service name> -g <resource group name> --jar-path ./auth-service/target/auth-service.jar
Назначьте шлюзу общедоступную конечную точку.
az spring app update -n gateway -s <service name> -g <resource group name> --is-public true
Отправьте приложению шлюза запрос на получение URL-адреса и убедитесь, что приложение успешно работает.
az spring app show --name gateway | grep url
Перейдите по URL-адресу, указанному в предыдущей команде, чтобы запустить приложение PiggyMetrics.
Подготовка сервера Jenkins
В рамках этого раздела вы подготовите к сборке сервер Jenkins, что вполне пригодно для тестирования. Но для сборки реальных приложений по соображениям безопасности следует развернуть в Azure агент виртуальной машины Azure или агент контейнеров Azure.
Установка подключаемых модулей.
Войдите на сервер Jenkins.
Выберите Manage Jenkins (Управление Jenkins).
Выберите Manage Plugins (Управление подключаемыми модулями).
На вкладке Available (Доступные) выберите такие подключаемые модули:
Если этих подключаемых модулей нет в списке, перейдите на вкладку Installed (Установленные) и проверьте, установлены ли они.
Чтобы установить подключаемые модули, нажмите кнопку "Скачать сейчас" и установите после перезагрузки.
Чтобы завершить установку, перезагрузите сервер Jenkins.
Добавление учетных данных субъекта-службы Azure в хранилище учетных данных Jenkins
Для развертывания в Azure вам нужен субъект-служба Azure. Дополнительные сведения см. в разделе Создание субъекта-службы руководства по развертыванию в Службе приложений Azure. Результат
az ad sp create-for-rbac
должен выглядеть следующим образом:{ "appId": "xxxxxx-xxx-xxxx-xxx-xxxxxxxxxxxx", "displayName": "xxxxxxxjenkinssp", "name": "http://xxxxxxxjenkinssp", "password": "xxxxxx-xxx-xxxx-xxx-xxxxxxxxxxxx", "tenant": "xxxxxx--xxx-xxxx-xxx-xxxxxxxxxxxx" }
На панели мониторинга Jenkins выберите Credentials (Учетные данные)>System (Система). Затем выберите Global credentials (unrestricted) (Глобальные учетные данные (неограниченные)).
Щелкните Добавление учетных данных.
Выберите тип учетных данных Субъект-служба Microsoft Azure.
Введите значения в следующие поля:
- Идентификатор подписки: идентификатор подписки Azure
- Идентификатор клиента: идентификатор приложения субъекта-службы
- Секрет клиента: пароль субъекта-службы
- Идентификатор клиента: идентификатор клиента Майкрософт
- Среда Azure. Выберите соответствующее значение для вашей среды. Например, выберите Azure для Azure Global.
- Идентификатор: задать как
azure_service_principal
. Мы используем этот идентификатор позднее в этой статье. - Описание. Это значение является необязательным, но рекомендуется с точки зрения документации или обслуживания.
Установка расширения Maven и Azure CLI spring
Пример конвейера использует Maven для сборки и Azure CLI для развертывания в экземпляре службы. При установке Jenkins создается учетная запись администратора с именем jenkins. Убедитесь, что у пользователя jenkins есть разрешение на запуск расширения spring.
Установите SSH-подключение к контроллеру Jenkins.
Установите Maven.
sudo apt-get install maven
Убедитесь, что инструмент Azure CLI установлен, выполнив команду
az version
. Если Azure CLI не установлен, см. статью "Установка Azure CLI".Переключитесь на пользователя
jenkins
.sudo su jenkins
Установите расширение spring:
az extension add --name spring
Создание Jenkinsfile
В собственном репозитории —
https://github.com/your_github_id/piggymetrics
создайте Jenkinsfile в корневом каталоге.Измените файл указанным ниже образом. Замените значения <имени> группы ресурсов и< имени> службы. Замените заполнитель azure_service_principal (субъект-служба Azure) правильным идентификатором, если это значение отличается от того, которое вы указали при добавлении учетных данных в Jenkins.
node { stage('init') { checkout scm } stage('build') { sh 'mvn clean package' } stage('deploy') { withCredentials([azureServicePrincipal('azure_service_principal')]) { // Log in to Azure sh ''' az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET -t $AZURE_TENANT_ID az account set -s $AZURE_SUBSCRIPTION_ID ''' // Set default resource group name and service name. Replace <resource group name> and <service name> with the right values sh 'az config set defaults.group=<resource group name>' sh 'az config set defaults.spring=<service name>' // Deploy applications sh 'az spring app deploy -n gateway --jar-path ./gateway/target/gateway.jar' sh 'az spring app deploy -n account-service --jar-path ./account-service/target/account-service.jar' sh 'az spring app deploy -n auth-service --jar-path ./auth-service/target/auth-service.jar' sh 'az logout' } } }
Сохраните и зафиксируйте изменения.
Создание задания
На панели мониторинга Jenkins выберите новый элемент.
Укажите имя задания Deploy-PiggyMetrics и выберите Pipeline (Конвейер). Щелкните OK.
Перейдите на вкладку Конвейер.
Для параметра Definition (Определение) выберите значение Pipeline script from SCM (Сценарий конвейера из SCM).
Для параметра SCM выберите значение Git.
Введите URL-адрес GitHub для вилированного репозитория:
https://github.com/<your GitHub id>/piggymetrics.git
Для описатель ветви (черный для any)выберите /Azure.
Для пути к скрипту выберите Jenkinsfile.
Выберите Сохранить
Проверка и запуск задания
Перед выполнением задания измените текст в поле ввода входа, чтобы ввести идентификатор входа.
В репозитории откройте
index.html
файл/gateway/src/main/resources/static/
.enter your login
Найдите и обновите текстenter login ID
на .<input class="frontforms" id="frontloginform" name="username" placeholder="enter login ID" type="text" autocomplete="off"/>
Сохраните и зафиксируйте изменения.
Вручную запустите задание в Jenkins. На панели мониторинга Jenkins выберите задание
Deploy-PiggyMetrics
и нажмите кнопку "Создать сейчас".
После завершения задания перейдите к общедоступному gateway
IP-адресу приложения и убедитесь, что приложение обновлено.
Очистка ресурсов
Удалите ресурсы, созданные в рамках этой статьи, если они вам больше не нужны.
az group delete -y --no-wait -n <resource group name>