Azure Spring Apps 中的应用和部署

注意

基本计划和标准计划于 2025 年 3 月 17 日进入退休期。 有关详细信息,请参阅 Azure Spring Apps 停用公告

AppDeployment 是Azure Spring Apps资源模型中的两个关键概念。 在Azure Spring Apps中,应用是一个业务应用的抽象。 在“部署”中运行的是被部署为应用的一个版本的代码或二进制文件。 应用在 Azure Spring Apps 服务实例中运行,或者只运行 service instance,如下所示。

显示应用和部署之间的关系的示意图。

单个Azure订阅中可以有多个服务实例,但当构成业务应用的所有应用都驻留在单个服务实例中时,Azure Spring Apps服务最容易使用。 其中一个原因是应用可能会相互通信。 它们可以使用服务实例中的 Eureka 服务注册表来轻松执行此操作。

Azure Spring Apps标准计划允许一个应用具有一个生产部署和一个过渡部署,以便可以轻松对其进行蓝/绿部署。

应用

以下特性/属性是在应用级别定义的。

功能 说明
公共
终结点
用于访问应用的 URL。
自定义
保护自定义域的 CNAME 记录。
服务
绑定
开箱即用的与其他Azure服务的连接。
托管身份
通过Microsoft Entra ID托管标识,应用可以轻松访问其他Microsoft Entra受保护的资源,例如Azure 密钥保管库。
永久性
存储
使数据能够在应用重启后保持不变的设置。

部署

以下特性/属性是在部署级别定义的,会在切换生产部署和过渡部署时进行交换。

功能 说明
CPU 每个应用实例的 vCore(虚拟核心)数。
内存 每个应用实例的内存容量 (GB)
实例
计数
手动或自动设置的应用实例数。
自动缩放 根据预定义的规则和计划,实例数量会自动调整。
JVM
选项
要设置的 JVM 选项。
环境
变量
要设置的环境变量。
运行时
版本
Java 8Java 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类。 以下代码片段演示如何创建表示Azure上下文的 @Configuration 类:

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 将阻止创建两个以上的部署。 将新的二进制文件部署到现有的生产部署或过渡部署。
  • 部署管理在基本计划中不可用。 请使用蓝绿部署能力标准。

后续步骤

  • 在 Azure Spring Apps