Управление жизненным циклом приложения в Контейнерах приложений Azure

Жизненный цикл приложения для Контейнеров приложений Azure основан на редакциях.

При развертывании приложения-контейнера первая редакция создается автоматически. Дополнительные изменения создаются при изменении контейнеров или изменениях в разделе конфигурации template.

Приложение контейнера проходит через четыре этапа: развертывание, обновление, деактивация и завершение работы.

Примечание.

Задания приложений контейнеров Azure не поддерживают редакции. Задания развертываются и обновляются напрямую.

Развертывание

При развертывании приложения-контейнера первая редакция создается автоматически.

Azure Container Apps: Deployment phase

Обновить

Новая редакция создается при обновлении приложения-контейнера с учетом изменений области редакции. Можно выбрать, следует ли автоматически деактивировать старые редакции (один режим редакции) или разрешить им оставаться доступными (несколько режимов редакции).

Azure Container Apps: Update phase

При использовании единого режима редакции контейнерные приложения обрабатывают автоматическое переключение между редакциями для поддержки развертывания без простоя.

Деактивировать

После того как редакция больше не нужна, вы можете отключить редакцию с возможностью повторно активировать ее позже. Во время деактивации контейнеры в редакции завершают работу.

Azure Container Apps: Deactivation phase

Завершение работы

Контейнеры завершают работу в следующих ситуациях:

  • при горизонтальном уменьшении масштаба приложения-контейнера;
  • при удалении приложения-контейнера;
  • при деактивации редакции.

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

Если приложение не отвечает в течение 30 секунд на SIGTERM сообщение, SIGKILL завершает контейнер.

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

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