在 Azure Spring Apps (ASA) 环境中以 jar 文件格式启动 Spring Boot WEB 服务
使用ASA(Azure Spring Apps)环境启动Spring Boot WEB服务(jar文件格式)。
目标
在Azure Spring Apps环境中启动Spring Boot WEB服务,以加深理解。
实现
使用 Microsoft Azure Spring Apps 将 Spring Boot 的 jar 文件形式的 WEB 应用程序部署并启动。
技术背景
微软Azure春季应用程序(ASA)是什么?
这是一项用于在Azure上运行基于Spring Framework构建的应用程序的服务。
它的特点包括:
支持Spring Boot、Spring Cloud、Spring Cloud Data Flow等Spring框架,且是开源的。
自动化应用程序的部署、扩展、监控和日志收集等管理任务。
将应用程序打包成Docker容器,并可以在Kubernetes上运行。
支持与Azure服务集成,如Azure Active Directory和Azure Key Vault。
其优势包括:
由于服务的自动化管理,应用程序开发者无需花费时间管理基础架构。
在Azure上运行应用程序可以实现高可用性和可扩展性。
与Azure服务的集成简单,易于管理安全性和身份。
容器化的应用程序可以在开发和生产环境中使用相同的环境进行运行,可以提高开发和运维速度。
开发环境
-
- Windows 11 Home 22H2 を使用しています。
WSL の Ubuntu を操作していきますので macOS の方も参考にして頂けます。
> 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 JDK和Hello World!
$ java -version
openjdk版本”11.0.17″ 2022-10-18
OpenJDK运行环境(构建11.0.17+8-post-Ubuntu-1ubuntu222.04)
OpenJDK 64位服务器VM(构建11.0.17+8-post-Ubuntu-1ubuntu222.04,混合模式,共享)
Maven ※ 安装Maven和Hello World!
$ mvn -version
Apache Maven 3.6.3
Maven主目录:/usr/share/maven
Java版本:11.0.17,厂商:Ubuntu,运行时:/usr/lib/jvm/java-11-openjdk-amd64
※ 本文中主要使用 Ubuntu 终端进行操作。
展示“你好,世界”的步骤
创建Spring Boot WEB服务
请参考Spring Boot WEB服务的Hello World!
移动到项目文件夹
※假设~/tmp/hello-spring-boot为项目文件夹。
$ cd ~/tmp/hello-spring-boot
构建Java应用程序
*将创建target/app.jar。
$ mvn clean install
获取Azure账户
使用Azure免费帐户在云端进行构建。
用Azure CLI登录
请参考以下步骤来安装 Azure CLI。
$ az login
請提供預留字句來幫助進行改寫。
资源组
创建资源组
$ az group create \
--name rg-hello \
--location japaneast
展示资源组列表
$ az group list
如果要删除资源组
$ az group delete -n <group>
春天应用程序服务实例
在Azure Spring Apps中部署Spring Boot jar文件格式的WEB应用有多种方法,但本次将介绍使用Azure CLI部署jar文件的方法。
安装Spring Apps拓展功能 ※仅需第一次安装
$ az extension add --name spring
※ 如果要显示扩展功能的列表
$ az extension list
建立 Spring Apps 服务实例
※ 由于可能是基于 Kubernetes 基础的环境,所以需要一些时间(※ 首次尤其如此)。
※ 不能使用 –sku Free 来创建。
$ az spring create \
--resource-group rg-hello \
--name aps-hello \
--location japaneast \
--sku Basic
展示Spring Apps服务实例列表
$ az spring list
如果要删除Spring应用程序服务实例(※不需要y/n:立即执行)。
$ az spring delete -n <service> -g <group>
春日应用程序
制作春季应用程序
$ az spring app create \
--resource-group rg-hello \
--service aps-hello \
--name sap-hello-spring-boot \
--runtime-version Java_11 \
--assign-endpoint true
春季应用程序 显示列表
$ az spring app list -s <service> -g <group>
如果要删除Spring Apps应用程序(※没有y/n选项:即时)
$ az spring app delete -n <name> -s <service> -g <group>
部署
$ az spring app deploy \
--resource-group rg-hello \
--service aps-hello \
--name sap-hello-spring-boot \
--artifact-path target/app.jar
部署成功后,可通过以下URL访问。
https://<service-name>-<app-name>.azuremicroservices.io
请使用网络浏览器进行确认
※ 请根据环境更改URL。
https://aps-hello-sap-hello-spring-boot.azuremicroservices.io/api/data
在网页浏览器上成功显示{“message”:”你好,世界!”}并成功获取JSON数据。
用另外一个终端命令进行确认。
$ curl -v https://aps-hello-sap-hello-spring-boot.azuremicroservices.io/api/data
* Trying 20.43.70.0:443...
* Connected to aps-hello-sap-hello-spring-boot.azuremicroservices.io (20.43.70.0) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* CAfile: /etc/ssl/certs/ca-certificates.crt
* CApath: /etc/ssl/certs
* TLSv1.0 (OUT), TLS header, Certificate Status (22):
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS header, Certificate Status (22):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS header, Certificate Status (22):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS header, Certificate Status (22):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS header, Certificate Status (22):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS header, Finished (20):
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS header, Finished (20):
* TLSv1.2 (IN), TLS header, Certificate Status (22):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
* ALPN, server accepted to use h2
* Server certificate:
* subject: C=US; ST=WA; L=Redmond; O=Microsoft Corporation; CN=*.azuremicroservices.io
* start date: Sep 29 06:09:42 2022 GMT
* expire date: Sep 24 06:09:42 2023 GMT
* subjectAltName: host "aps-hello-sap-hello-spring-boot.azuremicroservices.io" matched cert's "*.azuremicroservices.io"
* issuer: C=US; O=Microsoft Corporation; CN=Microsoft Azure TLS Issuing CA 02
* SSL certificate verify ok.
* Using HTTP2, server supports multiplexing
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* TLSv1.2 (OUT), TLS header, Supplemental data (23):
* TLSv1.2 (OUT), TLS header, Supplemental data (23):
* TLSv1.2 (OUT), TLS header, Supplemental data (23):
* Using Stream ID: 1 (easy handle 0x556c0195fe80)
* TLSv1.2 (OUT), TLS header, Supplemental data (23):
> GET /api/data HTTP/2
> Host: aps-hello-sap-hello-spring-boot.azuremicroservices.io
> user-agent: curl/7.81.0
> accept: */*
>
* TLSv1.2 (IN), TLS header, Supplemental data (23):
* Connection state changed (MAX_CONCURRENT_STREAMS == 128)!
* TLSv1.2 (OUT), TLS header, Supplemental data (23):
* TLSv1.2 (IN), TLS header, Supplemental data (23):
* TLSv1.2 (IN), TLS header, Supplemental data (23):
< HTTP/2 200
< date: Sat, 25 Feb 2023 02:02:15 GMT
< content-type: application/json
< strict-transport-security: max-age=15724800; includeSubDomains
<
* TLSv1.2 (IN), TLS header, Supplemental data (23):
* Connection #0 to host aps-hello-sap-hello-spring-boot.azuremicroservices.io left intact
{"message":"Hello World!"}
在终端中显示{“message”: “Hello World!”},并成功获取了JSON数据。
※Azure 会自动支持SSL/TLS和HTTP/2协议。
总结
- Ubuntu のシンプルな構成の Java 開発環境で Spring Boot WEBサービスを Azure Spring Apps 環境で起動させることが出来ました。
请根据以下内容进行本地化的中文释义,仅需提供一种选择:
借鉴
Azure Spring Apps 命令参考文档