Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Внимание
Эта статья ссылается на CentOS, дистрибутив Linux, который находится в статусе снятого с поддержки (EOL). Пожалуйста, рассмотрите свое использование и планируйте соответствующим образом. Дополнительные сведения см. в руководстве centOS End Of Life.
Примечание.
Планы Basic, Standardи Enterprise вступили в период вывода из обращения 17 марта 2025 года. Дополнительные сведения см. в объявлении о выходе на пенсию в Azure Spring Apps.
План стандартного потребления и выделенный план вошли в период вывода из эксплуатации 30 сентября 2024 года, с полным завершением работы к концу марта 2025 года. Дополнительные сведения см. в статье «Миграция стандартного потребления и выделенного плана Azure Spring Apps на приложения контейнеров Azure».
Эта статья относится к:✅ Standard ✅ Enterprise
В этой статье объясняется, как развернуть приложения Spring Boot в Azure Spring Apps с помощью пользовательского образа контейнера. Развертывание приложения с пользовательским контейнером поддерживает большинство функций, доступных при развертывании JAR-приложения. Другие приложения на Java и других языках также можно развернуть с помощью образа контейнера.
Предварительные условия
- Образ контейнера, содержащий приложение.
- Образ отправляется в реестр образов. Дополнительные сведения см в статье о Реестре контейнеров Azure.
Примечание.
Веб-приложение должно прослушивать порт 1025
для стандартного плана и порта 8080
для плана Enterprise. Способ изменения порта зависит от платформы приложения. Например, укажите SERVER_PORT=1025
для приложений Spring Boot или ASPNETCORE_URLS=http://+:1025/
для приложений ASP.NET Core. Вы можете отключить пробу для приложений, которые не прослушивают ни один порт. Дополнительные сведения см. в статье "Настройка проб работоспособности и льготных периодов завершения для приложений, размещенных в Azure Spring Apps".
Развертывание приложения
Чтобы развернуть приложение в пользовательском образе контейнера, выполните следующие действия:
Чтобы развернуть образ контейнера, используйте одну из следующих команд:
Чтобы развернуть образ контейнера в общедоступном Docker Hub в приложении, используйте следующую команду:
az spring app deploy \ --resource-group <your-resource-group> \ --name <your-app-name> \ --container-image <your-container-image> \ --service <your-service-name>
Чтобы развернуть образ контейнера из ACR в приложении или из другого частного реестра в приложении, используйте следующую команду:
az spring app deploy \ --resource-group <your-resource-group> \ --name <your-app-name> \ --container-image <your-container-image> \ --service <your-service-name> --container-registry <your-container-registry> \ --registry-password <your-password> | --registry-username <your-username>
Чтобы перезаписать точку входа изображения, добавьте следующие два аргумента в любую из приведенных выше команд:
--container-command "java" \
--container-args "-jar /app.jar -Dkey=value"
Чтобы отключить прослушивание порта для образов, которые не являются веб-приложениями, добавьте следующий аргумент к указанным выше командам:
--disable-probe true
Таблица поддержки функций
В следующей матрице показано, какие функции поддерживаются в каждом типе приложения.
Функция | Приложения Spring Boot — развертывание контейнера | Приложения Polyglot — развертывание контейнеров | Примечания. |
---|---|---|---|
Управление жизненным циклом приложений | ✅ | ✅ | |
Поддержка реестров контейнеров | ✅ | ✅ | |
Назначение конечной точки | ✅ | ✅ | |
Azure Monitor | ✅ | ✅ | |
Интеграция APM | ✅ | ✅ | Поддерживается ручной установкой. |
Развертывание по сине-зеленому принципу | ✅ | ✅ | |
Личный домен | ✅ | ✅ | |
Масштабирование — автоматическое масштабирование | ✅ | ✅ | |
Масштабирование — масштабирование вручную (вертикальное увеличение/уменьшение, горизонтальное увеличение/уменьшение) | ✅ | ✅ | |
Управляемый идентификатор | ✅ | ✅ | |
Spring Cloud Eureka & Config Server | ✅ | ❎ | |
Портал API для VMware Tanzu | ✅ | ✅ | Только корпоративный план. |
Spring Cloud Gateway для VMware Tanzu | ✅ | ✅ | Только корпоративный план. |
Служба конфигурации приложений для VMware Tanzu | ✅ | ❎ | Только корпоративный план. |
Динамическое представление приложения для VMware Tanzu | ✅ | ❎ | Только корпоративный план. |
Реестр служб VMware Tanzu | ✅ | ❎ | Только корпоративный план. |
VNET | ✅ | ✅ | Добавьте реестр в список разрешений в NSG или Брандмауэр Azure. |
Исходящий IP-адрес | ✅ | ✅ | |
Сквозной протокол TLS | ✅ | ✅ | Доверяйте самоподписанному УЦ. |
Настройки работоспособности и готовности | ✅ | ✅ | |
Расширенное устранение неполадок — дамп потока, кучи или JFR | ✅ | ❎ | Изображение должно содержать Bash и JDK с указанным PATH . |
Принесите своё собственное хранилище | ✅ | ✅ | |
Интеграция связывания службы с коннектором ресурсов | ✅ | ❎ | |
Зона доступности | ✅ | ✅ | |
События жизненного цикла приложения | ✅ | ✅ | |
Уменьшенный размер приложения — 0,5 виртуальных ЦП и 512 МБ | ✅ | ✅ | |
Автоматизация развертываний приложений с помощью Terraform | ✅ | ✅ | |
Мягкое удаление | ✅ | ✅ | |
Интерактивный процесс диагностики (на основе AppLens) | ✅ | ✅ | |
соглашение об уровне обслуживания (SLA) | ✅ | ✅ |
Примечание.
К приложениям Polyglot относятся приложения Java, NodeJS, AngularJS, Python и .NET, отличные от Spring Boot.
Важные аспекты, которые следует учитывать при развертывании с помощью пользовательского контейнера
Следующие рекомендации помогут вам в типичных ситуациях при развертывании с помощью пользовательского образа.
Доверие к центру сертификации
Существует два варианта доверия к центру сертификации:
Вариант 1. Отправка с помощью Azure Spring Apps
Сведения о загрузке сертификатов ЦС в приложения см. в статье "Использование TLS/SSL-сертификатов в приложении в Azure Spring Apps". Затем сертификаты будут подключены в расположение /etc/azure-spring-cloud/certs/public/.
Вариант 2. Установка вручную в образе
Чтобы доверять центру сертификации в образе, установите следующие переменные в зависимости от вашей среды:
Вам необходимо импортировать приложения Java в хранилище доверия, добавив следующие строки в Dockerfile:
ADD EnterpriseRootCA.crt /opt/ RUN keytool -keystore /etc/ssl/certs/java/cacerts -storepass changeit -noprompt -trustcacerts -importcert -alias EnterpriseRootCA -file /opt/EnterpriseRootCA.crt
Для приложений Node.js задайте переменную среды
NODE_EXTRA_CA_CERTS
:ADD EnterpriseRootCA.crt /opt/ ENV NODE_EXTRA_CA_CERTS="/opt/EnterpriseRootCA.crt"
Для Python или других языков, зависящих от хранилища сертификатов CA, в образах Debian или Ubuntu установите следующие переменные среды:
ADD EnterpriseRootCA.crt /usr/local/share/ca-certificates/ RUN /usr/sbin/update-ca-certificates
Для Python или других языков, зависящих от хранилища системного УЦ, в образах, основанных на CentOS или Fedora, добавьте следующие переменные среды:
ADD EnterpriseRootCA.crt /etc/pki/ca-trust/source/anchors/ RUN /usr/bin/update-ca-trust
Как избежать непредвиденного поведения при изменении образов
При перезапуске или масштабировании приложения всегда извлекается последний образ. Если образ был изменен, вновь запущенные экземпляры приложения будут использовать новый образ, а старые экземпляры будут продолжать использовать старый образ.
Примечание.
Не используйте тег latest
или не перезаписывайте образ без изменения тега, чтобы избежать непредвиденного поведения приложения.
Как избежать невозможности подключения к реестру контейнеров в виртуальной сети
Если вы развернули экземпляр в виртуальной сети, убедитесь, что вы предоставили доступ сетевому трафику в реестр контейнеров в сетевом экране или в Azure Firewall (если он используется). Дополнительные сведения см. в статье Обязательства клиента в отношении запуска в виртуальной сети, где описано добавление необходимых правил безопасности.
Установка APM в образ вручную
Этапы установки зависят от различных мониторов производительности приложений (APM) и языков. Ниже приведены шаги для New Relic с приложениями Java. Измените файл Dockerfile, выполнив следующие действия:
Скачайте и установите файл агента в образ, добавив следующий код в Dockerfile:
ADD newrelic-agent.jar /opt/agents/newrelic/java/newrelic-agent.jar
Добавьте переменные среды, необходимые для APM:
ENV NEW_RELIC_APP_NAME=appName ENV NEW_RELIC_LICENSE_KEY=newRelicLicenseKey
Измените точку входа образа, добавив:
java -javaagent:/opt/agents/newrelic/java/newrelic-agent.jar
Чтобы установить агенты для других языков, обратитесь к официальной документации этих агентов.
New Relic:
- Python: установка агента Python
- Node.js: установка агента Node.js
Dynatrace:
- Python: инструментирование приложений Python с помощью OpenTelemetry
- Node.js: инструментирование приложений Node.js с помощью OpenTelemetry
AppDynamics:
- Python: установка агента Python
- Node.js: установка агента Node.js
Просмотр журналов контейнера
Чтобы просмотреть журналы консоли приложения-контейнера, можно использовать следующую команду CLI:
az spring app logs \
--resource-group <your-resource-group> \
--name <your-app-name> \
--service <your-service-name> \
--instance <your-instance-name>
Чтобы просмотреть журналы событий контейнера из Azure Monitor, введите запрос:
AppPlatformContainerEventLogs
| where App == "hw-20220317-1b"
Сканируйте ваше изображение на наличие уязвимостей
Мы рекомендуем использовать Microsoft Defender для облака с ACR, чтобы предотвратить уязвимость изображений. Дополнительные сведения см. в Microsoft Defender для облака
Переключение между развертыванием JAR и развертыванием контейнера
Вы можете переключить тип развертывания из JAR-развертывания в развертывание контейнера напрямую, повторно разверните его с помощью следующей команды:
az spring app deploy \
--resource-group <your-resource-group> \
--name <your-app-name> \
--container-image <your-container-image> \
--service <your-service-name>
Или наоборот:
az spring app deploy \
--resource-group <your-resource-group> \
--name <your-app-name> \
--artifact-path <your-jar-file> \
--service <your-service-name>
Создайте новое развертывание с использованием существующего развертывания JAR.
Вы можете создать другое развертывание с помощью существующего развертывания JAR с помощью следующей команды:
az spring app deployment create \
--resource-group <your-resource-group> \
--name <your-deployment-name> \
--app <your-app-name> \
--container-image <your-container-image> \
--service <your-service-name>
CI/CD
Теперь поддерживаются автоматизация развертываний с помощью задач Azure Pipelines или GitHub Actions. Дополнительные сведения см. в статье "Автоматизация развертываний приложений в Azure Spring Apps" и использование CI/CD Azure Spring Apps с помощью GitHub Actions