Azure Spring Apps 中的应用和部署
注意
Azure Spring Apps 是 Azure Spring Cloud 服务的新名称。 虽然该服务有新名称,但一些地方仍会使用旧名称,我们仍在更新屏幕截图、视频和图形等资产。
“应用”和“部署”是 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 将阻止创建两个以上的部署。 将新的二进制文件部署到现有的生产部署或过渡部署。
- 部署管理在基本计划中不可用。 请使用标准计划获取蓝绿部署功能。