注释
Azure Spring Apps 是 Azure Spring Cloud 服务的新名称。 尽管该服务具有新名称,但在一些位置可以看到旧名称,因为我们的工作是更新资产,如屏幕截图、视频和图表。
Azure Spring Apps 是一种完全托管的微服务开发,具有内置服务发现和配置管理。 借助该服务,可以轻松地将基于 Spring Boot 的微服务应用程序部署到 Azure。 本教程演示如何在 Jenkins 中使用 Azure CLI 自动实现 Azure Spring Apps 的持续集成和交付(CI/CD)。
在本教程中,你将完成以下任务:
- 预配服务实例并启动 Java Spring 应用程序
- 准备 Jenkins 服务器
- 在 Jenkins 管道中使用 Azure CLI 生成和部署微服务应用程序
先决条件
- Azure 订阅:如果没有 Azure 订阅,请在开始之前创建 一个免费帐户 。
- Jenkins: 在 Linux VM 上安装 Jenkins
- GitHub 帐户:如果没有 GitHub 帐户,请在开始之前创建 一个免费帐户 。
预配服务实例并启动 Java Spring 应用程序
我们使用 Piggy Metrics 作为示例Microsoft服务应用程序,并遵循快速入门中的相同步骤 :使用 Azure CLI 启动 Java Spring 应用程序 来预配服务实例并设置应用程序。 如果已完成相同的过程,可以跳到下一部分。 否则,将包含以下 Azure CLI 命令。 请参阅 快速入门:使用 Azure CLI 启动 Java Spring 应用程序 以获取详细信息。
本地计算机需要满足与 Jenkins 生成服务器相同的先决条件。 请确保安装以下内容以生成和部署微服务应用程序:
- Git
- JDK 8
- Maven 3.0 或更高版本
- 已安装 Azure CLI 版本 2.0.67 或更高版本
安装 Azure Spring Apps 扩展:
az extension add --name spring创建资源组以包含 Azure Spring Apps 服务:
az group create --location eastus --name <resource group name>预配 Azure Spring Apps 的实例:
az spring create -n <service name> -g <resource group name>将 Piggy 指标 存储库分叉到你自己的 GitHub 帐户。 在本地,将你的存储库克隆到名为
source-code的目录中:mkdir source-code git clone https://github.com/<your GitHub id>/piggymetrics请设置您的配置服务器。 请确保将 GitHub ID< 替换为>正确的值。
az spring config-server git set -n <your-service-name> --uri https://github.com/<your GitHub id>/piggymetrics --label config生成项目:
cd piggymetrics mvn clean package -D skipTests创建三个微服务:网关、身份验证服务和帐户服务:
az spring app create --n gateway -s <service name> -g <resource group name> az spring app create --n auth-service -s <service name> -g <resource group name> az spring app create --n account-service -s <service name> -g <resource group name>部署应用程序:
az spring app deploy -n gateway -s <service name> -g <resource group name> --jar-path ./gateway/target/gateway.jar az spring app deploy -n account-service -s <service name> -g <resource group name> --jar-path ./account-service/target/account-service.jar az spring app deploy -n auth-service -s <service name> -g <resource group name> --jar-path ./auth-service/target/auth-service.jar为网关分配公共端点:
az spring app update -n gateway -s <service name> -g <resource group name> --is-public true查询网关应用程序以获取 URL,以便可以验证应用程序是否正在运行。
az spring app show --name gateway | grep url导航到上一命令提供的 URL 以运行 PiggyMetrics 应用程序。
准备 Jenkins 服务器
在本部分中,你将准备 Jenkins 服务器以运行构建,这适合用于测试。 但是,出于安全影响,应使用 Azure VM 代理 或 Azure 容器代理 来启动 Azure 中的代理来运行生成。
安装插件
登录到 Jenkins 服务器。
选择“ 管理 Jenkins”。
选择“ 管理插件”。
在 “可用 ”选项卡上,选择以下插件:
如果这些插件未显示在列表中,请检查 “已安装 ”选项卡以查看它们是否已安装。
若要安装插件,请选择“ 立即下载”,并在重启后安装。
重启 Jenkins 服务器以完成安装。
在 Jenkins 凭据存储中添加 Azure 服务主体凭据
需要一个 Azure 服务主体才能部署到 Azure。 有关详细信息,请参阅“部署到 Azure 应用服务”教程中的 “创建服务主体 ”部分。 输出
az ad sp create-for-rbac如下所示:{ "appId": "xxxxxx-xxx-xxxx-xxx-xxxxxxxxxxxx", "displayName": "xxxxxxxjenkinssp", "name": "http://xxxxxxxjenkinssp", "password": "xxxxxx-xxx-xxxx-xxx-xxxxxxxxxxxx", "tenant": "xxxxxx--xxx-xxxx-xxx-xxxxxxxxxxxx" }在 Jenkins 仪表盘上,选择“凭据”>“系统”。 然后选择“全局凭据”(不受限制)。
选择“添加凭据”。
选择 Microsoft Azure 服务主体 作为类型。
提供以下字段的值:
- 订阅 ID:Azure 订阅 ID
- 客户端 ID:服务主体 appid
- 客户端密码:服务主体密码
- 租户 ID:Microsoft 账户租户 ID
- Azure 环境:为环境选择适当的值。 例如,将 Azure 用于 Azure Global
-
ID:设置为
azure_service_principal. 本文后面将使用此 ID - 说明:此值是可选的,但建议从文档/维护的角度来看。
安装 Maven 和 Azure CLI Spring 扩展
示例管道使用 Maven 构建,并使用 Azure CLI 部署到服务实例。 安装 Jenkins 后,它会创建名为 jenkins 的管理员帐户。 确保用户 jenkins 有权运行 spring 扩展。
通过 SSH 连接到 Jenkins 控制器。
安装 Maven。
sudo apt-get install maven输入
az version验证是否已安装 Azure CLI。 如果未安装 Azure CLI,请参阅 安装 Azure CLI。切换至
jenkins用户:sudo su jenkins安装 Spring 扩展:
az extension add --name spring
创建 Jenkinsfile
在自己的存储库 -
https://github.com/your_github_id/piggymetrics- 在根目录中创建 Jenkinsfile 。按如下所示更新文件。 请确保替换资源组名称和<服务名称><的值。> 如果在 Jenkins 中添加凭据时使用不同的值,请将 azure_service_principal 替换为正确的 ID。
node { stage('init') { checkout scm } stage('build') { sh 'mvn clean package' } stage('deploy') { withCredentials([azureServicePrincipal('azure_service_principal')]) { // Log in to Azure sh ''' az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET -t $AZURE_TENANT_ID az account set -s $AZURE_SUBSCRIPTION_ID ''' // Set default resource group name and service name. Replace <resource group name> and <service name> with the right values sh 'az config set defaults.group=<resource group name>' sh 'az config set defaults.spring=<service name>' // Deploy applications sh 'az spring app deploy -n gateway --jar-path ./gateway/target/gateway.jar' sh 'az spring app deploy -n account-service --jar-path ./account-service/target/account-service.jar' sh 'az spring app deploy -n auth-service --jar-path ./auth-service/target/auth-service.jar' sh 'az logout' } } }保存并提交更改。
创建任务
在 Jenkins 仪表板上,选择“ 新建项”。
提供名称 Deploy-PiggyMetrics 给作业,并选择 Pipeline。 单击“确定”。
选择 “管道 ”选项卡。
对于 定义, 请从 SCM 中选择管道脚本。
对于 SCM,请选择 “Git”。
输入分叉存储库的 GitHub URL:
https://github.com/<your GitHub id>/piggymetrics.git。对于分支说明符(黑色表示“any”),请选择/Azure。
对于 脚本路径,请选择 Jenkinsfile。
选择“保存”
验证并运行作业
在运行作业之前,请编辑登录输入框中的文本以 输入登录 ID。
在您的存储库中,打开
index.html中的/gateway/src/main/resources/static/。搜索
enter your login并将其更新为enter login ID。<input class="frontforms" id="frontloginform" name="username" placeholder="enter login ID" type="text" autocomplete="off"/>保存并提交更改。
在 Jenkins 中手动运行作业。 在 Jenkins 仪表板上,选择作业
Deploy-PiggyMetrics,然后选择“ 立即生成”。
作业完成后,导航到应用程序的公共 IP gateway ,并验证应用程序是否已更新。
清理资源
如果不再需要资源,请删除本文中创建的资源:
az group delete -y --no-wait -n <resource group name>