Приложение и развертывание в Azure Spring Apps

Примечание

Планы "Базовый", "Стандартный" и "Корпоративный" вступили в пенсионный период 17 марта 2025 года. Дополнительные сведения см. в объявлении о выходе на пенсию в Azure Spring Apps.

Эта статья относится к:✅ Java ✅ C#

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

Приложение и развертывание являются двумя ключевыми понятиями в модели ресурсов Azure Spring Apps. В Azure Spring Apps приложение — это абстракция одного бизнес-приложения. Одна версия кода или двоичного файла, развернутая во время работы приложения в развертывании. Приложения выполняются в экземпляре службы Azure Spring Apps или просто в экземпляре службы, как показано далее.

Схема, показывающая связь между приложениями и развертываниями.

В одной подписке Azure можно использовать несколько экземпляров служб, но служба Azure Spring Apps проще всего использовать, когда все приложения, составляющие бизнес-приложение, находятся в одном экземпляре службы. Одна из причин заключается в том, что приложения, скорее всего, будут взаимодействовать друг с другом. Это можно легко сделать с помощью реестра сервисов Eureka в экземпляре сервиса.

План Azure Spring Apps уровня "Стандартный" позволяет одному приложению иметь одно рабочее развертывание и одно промежуточное развертывание, чтобы можно было легко выполнить сине-зеленое развертывание.

Приложение

Следующие функции и свойства определяются на уровне приложения.

Особенности Описание
Общедоступная
конечная точка
URL-адрес для доступа к приложению.
Личный
домен
CNAME Запись, которая защищает личный домен.
Привязка службы
Интеграция с другими готовыми решениями Azure.
Управляемое
удостоверение
Управляемое удостоверение с помощью идентификатора Microsoft Entra позволяет приложению легко получить доступ к другим защищенным ресурсам Microsoft Entra, таким как Azure Key Vault.
Постоянное
хранилище
Параметр, позволяющий сохранять данные за пределами перезапуска приложения.

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

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

Функции Описание
ЦП Количество виртуальных ядер на экземпляр приложения.
Память ГБ памяти на экземпляр приложения.
Число экземпляров
Количество экземпляров приложения, задается вручную или автоматически.
Автомасштабирование Число экземпляров автоматически масштабируется на основе предопределенных правил и расписаний.
Параметры JVM
Параметры JVM, которые нужно задать.
Переменные среды
Заданные переменные среды.
Версия среды выполнения
Java 8 или Java 11.

Environment

Azure Spring Apps монтирует некоторые файлы YAML с разрешением только для чтения в ваши развернутые приложения. Эти файлы содержат контекст Azure развертывания. В следующем списке показаны пути и содержимое этих файлов YAML:

  • /etc/azure-spring-cloud/context/azure-spring-apps.yml

    AZURE_SPRING_APPS:
        SUBSCRIPTION_ID:  <your-azure-subscription-id>
        RESOURCE_GROUP: <your-resource-group-name>
        NAME: <your-azure-spring-apps-name>
    
  • /etc/azure-spring-cloud/context/azure-spring-apps-deployment.yml

    AZURE_SPRING_APPS:
         APP:
            NAME: <your-app-name>
         DEPLOYMENT:
            NAME: <your-deployment-name>
            ACTIVE: true # true if the deployment is in production, false if in staging
    

Если приложение является приложением Spring Boot, эти два пути к файлам добавляются в SPRING_CONFIG_ADDITIONAL_LOCATION переменную среды. Таким образом, приложение может загружать эти свойства в качестве конфигураций и использовать их в коде. Например, с помощью @ConfigurationProperties заметки можно привязать свойства YAML к классу Java. В следующем фрагменте кода показано, как создать @Configuration класс, представляющий контекст Azure:

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

@Configuration
@ConfigurationProperties(prefix = "azure-spring-apps")
@Data
public class AzureSpringAppsContext {

    private String subscriptionId;
    private String resourceGroup;
    private String name;

    private AppContext app;
    private DeploymentContext deployment;

    @Data
    public static class AppContext {
        private String name;
    }

    @Data
    public static class DeploymentContext {
        private String name;
        private boolean active;
    }
}

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

Ограничения

  • Приложение должно иметь одно рабочее развертывание. API блокирует удаление рабочего развертывания. Перед удалением необходимо переключить развертывание на промежуточное.
  • Приложение может иметь не более двух развертываний. API блокирует создание более двух развертываний. Разверните новый бинарный файл в существующем продуктивном или тестовом развертывании.
  • Управление развертыванием недоступно в плане "Базовый". Используйте план "Стандартный" или "Корпоративный" для возможности сине-зеленого развертывания.

Дальнейшие шаги