你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Spring Apps 中的应用和部署

注意

基本、标准和企业计划将从 2025 年 3 月中旬开始弃用,停用期为 3 年。 建议转换到 Azure 容器应用。 有关详细信息,请参阅 Azure Spring Apps 停用公告

标准消耗和专用计划将于 2024 年 9 月 30 日开始弃用,并在六个月后完全关闭。 建议转换到 Azure 容器应用。 有关详细信息,请参阅将 Azure Spring Apps 标准消耗和专用计划迁移到 Azure 容器应用

本文适用于:✔️ Java ✔️ C#

本文适用于:✔️ 基本版/标准版 ✔️ 企业版

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

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

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

Azure Spring Apps 标准计划允许一个应用有一个生产部署和一个过渡部署,这样就可以轻松地在其上进行蓝/绿部署。

应用

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

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

部署

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

功能 说明
CPU 每个应用实例的 vCore 数。
内存 每个应用实例的内存容量 (GB)
实例
计数
手动或自动设置的应用实例数。
自动缩放 根据预定义的规则和计划自动缩放实例计数。
JVM
选项
要设置的 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 类。 以下代码片段演示如何创建表示 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 将阻止创建两个以上的部署。 将新的二进制文件部署到现有的生产部署或过渡部署。
  • 部署管理在基本计划中不可用。 请使用标准或企业计划获取蓝绿部署功能。

后续步骤