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

Примечание.

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

Эта статья применима к: ✔️ Java ✔️ C#

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

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

Diagram showing the relationship between the apps and deployments.

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

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

Приложение

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

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

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

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

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

Среда

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;
    }
}

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

Ограничения

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

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