使用 Azure Spring Apps (ASA) 进行蓝绿部署
使用Azure Spring Apps (ASA) 在蓝绿部署 (bluē lǜ 中进行。
为了什么
在Windows 11上,使用Linux进行云开发。
您可以从这里查看文章列表。
实现
我們將在Microsoft Azure Spring Apps (ASA)平台上實踐JAR文件格式應用程序的藍綠部署。
技术话题
蓝绿部署是什么意思?
蓝绿部署是在将应用程序的新版本部署到生产环境时,与传统的运维方式不同,它是在生产环境中建立新版本并在那里测试应用程序,然后切换到传统的生产环境的方法。
内容。
通常,我们会准备一个蓝色的生产环境和一个绿色的新生产环境。一开始,蓝色是作为活动的生产环境运行,绿色是非活动的。
将新版本的应用程序部署到绿色环境进行测试,如果没有问题,将流量切换到绿色环境。
通过这样做,可以将停机时间最小化,并提高系统的可靠性。
软件开发环境
- Windows 11 Home 22H2 を使用しています。
> wsl –version
WSL版本:1.0.3.0
内核版本:5.15.79.1
WSLg版本:1.0.47Ubuntu ※您可以在此相关文章中确认安装方法
$ lsb_release -a
没有可用的LSB模块
发行商ID:Ubuntu
描述:Ubuntu 22.04.1 LTS
发布:22.04
Java JDK ※您可以在此相关文章中确认安装方法
$ java -version
openjdk版本”11.0.18″ 2023-01-17
OpenJDK运行环境(build 11.0.18+10-post-Ubuntu-0ubuntu122.04)
OpenJDK 64位服务器VM(build 11.0.18+10-post-Ubuntu-0ubuntu122.04,混合模式,共享)
Maven ※您可以在此相关文章中确认安装方法
$ mvn -version
Apache Maven 3.6.3
Maven主目录:/usr/share/maven
Java版本:11.0.18,供应商:Ubuntu,运行时:/usr/lib/jvm/java-11-openjdk-amd64
蓝绿部署的规格说明
※ 本文所述为规范设定。
以 JAR 文件形式的应用程序
进行蓝绿部署的步骤
创建应用的 JAR 文件。
您可以在以下相关文章中查看步骤。
https://qiita.com/fsdg-adachi_h/items/37ac0082a3228e4de570
进入项目文件夹。
※将~/tmp/hello-spring-boot视为项目文件夹。
$ cd ~/tmp/hello-spring-boot
创建v1应用程序的源代码。
$ vim src/main/java/com/example/springboot/controller/HelloController.java
文件内容
HelloController.java
package com.example.springboot.controller;
import java.util.Map;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping(“/api”)
public class HelloController {
@GetMapping(“/data”)
public Map<String, String> getData() {
Map<String, String> map = Map.of(“message”, “Hello Blue!”);
return map;
}
}
构建v1应用程序。
$ mvn clean package
将应用程序部署到 Azure Spring Apps。
登录
使用 Azure CLI 登录到 Azure。
$ az login
您可以在此相关文章中查看具体步骤。
资源组
创建资源组。
$ az group create \
--name rg-hello \
--location japaneast
春季应用程序服务实例
您可以在这篇相关文章中查看具体步骤。
创建Spring Apps服务实例。
※由于基于Kubernetes平台环境,所以可能需要一些时间。
$ az spring create \
--resource-group rg-hello \
--name aps-hello \
--location japaneast \
--sku Standard
春季应用程序
我将创建一个Spring Apps应用程序。
$ az spring app create \
--resource-group rg-hello \
--service aps-hello \
--name sap-hello-spring-boot \
--deployment-name sap-hello-spring-boot--v1 \
--runtime-version Java_11 \
--assign-endpoint true
命令
内容
az spring app create
用于创建Spring Apps应用程序的命令。
选项
值
内容
–resource-group
rg-hello
指定创建Spring Apps应用程序所需的资源组名称。
–service
aps-hello
指定创建Spring Apps应用程序的Spring Apps服务实例名称。
–name
sap-hello-spring-boot
指定Spring Apps应用程序的名称。
–deployment-name
sap-hello-spring-boot–v1
指定Spring Apps应用程序部署的名称。
–runtime-version
Java_11
设置Spring Apps应用程序在Java 11运行时中运行。
–assign-endpoint
true
如果为true,则分配直接访问用的端点URL。
部署 v1 Spring 应用程序的应用程序。
$ az spring app deploy \
--resource-group rg-hello \
--service aps-hello \
--name sap-hello-spring-boot \
--deployment sap-hello-spring-boot--v1 \
--artifact-path target/app.jar
命令
内容
az spring app deploy
用于部署Spring Apps应用的命令。
选项
值
内容
–resource-group
rg-hello
指定要创建Spring Apps应用的资源组名称。
–service
aps-hello
指定要创建Spring Apps应用的Spring Apps服务实例名称。
–name
sap-hello-spring-boot
指定Spring Apps应用的名称。
–deployment
sap-hello-spring-boot–v1
指定Spring Apps应用部署的名称。
–artifact-path
target/app.jar
指定要部署到Spring Apps应用的代码位置。
成功部署之后,可以通过以下URL进行访问。
https://<service-name>-<app-name>.azuremicroservices.io
从另一个终端使用curl命令来确认URL。
$ curl https://aps-hello-sap-hello-spring-boot.awesomemicroservices.io/api/data
{"message":"Hello Blue!"}
确认 Azure 门户
制作v2应用程序的JAR文件
创建 v2 应用程序的源代码。
$ vim src/main/java/com/example/springboot/controller/HelloController.java
文件内容
HelloController.java
package com.example.springboot.controller;
import java.util.Map;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping(“/api”)
public class HelloController {
@GetMapping(“/data”)
public Map<String, String> getData() {
Map<String, String> map = Map.of(“message”, “Hello Green!”);
return map;
}
}
构建 v2 应用程序。
$ mvn clean package
将v2应用程序部署到Azure Spring Apps中。
春天应用程序
我要创建v2 Spring Apps应用的分段环境部署。
$ az spring app deployment create \
--resource-group rg-hello \
--service aps-hello \
--app sap-hello-spring-boot \
--name sap-hello-spring-boot--v2 \
--runtime-version Java_11 \
--artifact-path target/app.jar
命令
内容
az spring app deployment create
用于创建Spring Apps应用的分段环境部署的命令。
选项
值
内容
–resource-group
rg-hello
指定用于创建Spring Apps应用的资源组名称。
–service
aps-hello
指定用于创建Spring Apps应用的Spring Apps服务实例名称。
–app
sap-hello-spring-boot
指定Spring Apps应用的名称。
–name
sap-hello-spring-boot–v1
指定Spring Apps应用部署的名称。
–runtime-version
Java_11
设置Spring Apps应用在Java 11运行时中执行。
–artifact-path
target/app.jar
指定部署到Spring Apps应用的代码位置。
在终端上使用curl命令来检查URL。
$ curl https://aps-hello-sap-hello-spring-boot.awesomemicroservices.io/api/data
{"message":"Hello Blue!"}
确认 Azure 门户
通过在另一个终端中使用curl命令来检查测试端点。
$ curl https://primary:4Fk5UKl9Bch3GbFFzXoLtzSRPpURANQ5Z2oylLldyp9OQZ4FplVxcLPqRpOxnJ6L@aps-hello.test.awesomemicroservices.io/sap-hello-spring-boot/sap-hello-spring-boot--v2/api/data
{"message":"Hello Green!"}
切换至新的部署
将预备环境切换到生产环境。
$ az spring app set-deployment \
--resource-group rg-hello \
--service aps-hello \
--name sap-hello-spring-boot \
--deployment sap-hello-spring-boot--v2
命令
内容
az spring app set-deployment
用于配置Spring Apps应用程序的生产环境部署的命令。
选项
值
内容
–resource-group
rg-hello
指定用于创建Spring Apps应用程序的资源组名称。
–service
aps-hello
指定用于创建Spring Apps应用程序的Spring Apps服务实例的名称。
–name
sap-hello-spring-boot
指定Spring Apps应用程序的名称。
–deployment
sap-hello-spring-boot–v2
指定Spring Apps应用程序的部署名称。
部署已经切换完成。
我們可以從另一個終端窗口使用curl命令來確認URL。
$ curl https://aps-hello-sap-hello-spring-boot.awesomemicroservices.io/api/data
{"message":"Hello Green!"}
确认 Azure 门户
故障发生时的回退
从v2应用切回到v1应用。
※ 切换部署。
$ az spring app set-deployment \
--resource-group rg-hello \
--service aps-hello \
--name sap-hello-spring-boot \
--deployment sap-hello-spring-boot--v1
从另一个终端使用curl命令来检查URL。
$ curl https://aps-hello-sap-hello-spring-boot.awesomemicroservices.io/api/data
{"message":"Hello Blue!"}
请求应用的URL,显示了更新前v1应用的输出。
确认Azure Portal
部署之后的注意事项
App sap-hello-spring-boot 最多可以有2个部署,目前有2个。
删除旧的Spring Apps应用程序部署。
$ az spring app deployment delete \
--resource-group rg-hello \
--service aps-hello \
--app sap-hello-spring-boot \
--name sap-hello-spring-boot--v1
命令
内容
az spring app deployment delete
这是一个用于删除Spring Apps应用部署的命令。
选项
值
内容
–resource-group
rg-hello
指定要创建Spring Apps应用的资源组名称。
–service
aps-hello
指定要创建Spring Apps应用的Spring Apps服务实例名称。
–app
sap-hello-spring-boot
指定Spring Apps应用的名称。
–name
sap-hello-spring-boot–v1
指定Spring Apps应用部署的名称。
确认 Azure 门户
总结
我們能夠在 Azure Spring Apps 環境中實施藍綠部署。
在 Azure Spring Apps 环境中,您可以轻松体验JAR文件格式应用程序的蓝绿部署,请务必尝试一下。未来,我们还会介绍更多关于 Azure 开发环境的内容,请敬请期待。
推荐内容