使用 SAP BTP Cloud Foundry 运行时实施蓝绿部署以进行零停机时间更新
学习目标
使用 SAP BTP Cloud Foundry 运行时实施蓝绿部署,以进行零停机时间更新。
业务场景
我们首先考虑以下场景:您负责维护使用 SAP CAP(云应用程序编程)构建的 Book Shop 应用程序。您的任务是实施蓝绿部署策略,以确保引入中断更改时停机时间最短,例如向实体添加新必填字段。本练习将指导您完成使用 SAP BTP Cloud Foundry 运行时蓝绿部署策略安全有效地部署更改的步骤。
行使选项
您可以通过两种方式执行此练习:
实时环境通过使用下面提供的说明,您可以在 SAP BTP 免费层级账户中执行步骤。
平台模拟 – 单击下面的"开始练习"按钮,按照模拟中的逐步说明进行操作。
注意
强烈建议首先在实时环境中执行这些步骤。
任务流
在本练习中,您将执行以下任务:
设置前提条件和环境。
执行 BLUE(实时)环境的初始蓝绿部署。
执行绿色(空闲)环境的蓝绿部署。
测试应用程序。
将绿色环境设置为生产环境。
清理资源。
前提条件
您具备 SAP Cloud Application Programming (CAP) Model 的基础知识。
您具有具有 SAP BTP Cloud Foundry 运行时权利(免费层或付费)的 SAP BTP 子账户。如果没有,请遵循本 教程 。
已安装以下工具:
Cloud Foundry CLI 。
多应用 CF CLI 插件 。
Cloud MTA 构建工具 。
如何获得支持
要在练习期间获得支持,请在我们的 SAP BTP 学习组中添加您的问题。
平台模拟
此练习使用名为"bookshop"的示例多目标应用程序 (MTA),其中包含一个具有 REST 接口的应用程序。
练习:开始练习(SAP 官方交互式练习)
练习:开始练习(SAP 官方交互式练习)
任务 1: 设置前提条件和环境
步骤
确保已安装并配置所有前提条件。
执行所需步骤。
克隆 SAP CAP 书店应用程序。
输入以下代码:
git clone https://github.tools.sap/SAP-BTP-Courses/cf400_sample_app bookshop
cd bookshop
安装相关性。
输入以下代码: npm install
登录到 Cloud Foundry。
输入以下代码:
cf api <API-ENDPOINT>
cf login
cf target -o <ORG> -s <SPACE>
您可以在 SAP BTP 主控室中子账户的概览部分找到 API 端点。
任务 2: 执行实时环境的初始蓝绿部署
步骤
构建生产应用程序。
输入以下代码: cds build --production
--production参数可确保与云部署相关的部件由cds build创建。为应用程序生成初始 MTA 归档。
输入以下代码:
mbt build -t gen --mtar hello-cloud-foundry-blue.mta
INFO generating the MTA archive...
INFO the MTA archive generated at: gen\hello-cloud-foundry-blue.mta
您可以在 SAP BTP 主控室中子账户的概览部分找到 API 端点。 3. 使用现有 .mta 文件部署初始环境(蓝色)。
输入以下代码:
cf deploy .\gen\hello-cloud-foundry-blue.mta -f --strategy blue-green
...
Operation ID: 1b313fd2-7a96-11ef-910c-eeee0a9ee328
...
No deployed MTA detected - this is initial deployment
...
Starting application "hello-cloud-foundry-srv-idle"...
Application "hello-cloud-foundry-srv-idle" started and available at "<org>-<space>-hello-cloud-foundry-srv-idle.<domain>"
...
Renaming application "hello-cloud-foundry-srv-idle" to "hello-cloud-foundry-srv"...
...
对于 Mac 用户,请注意:提供的命令使用 Windows 特定的文件路径格式(例如 。\mta_archives\hello-cloud-foundry-blue.mtar)。在 Mac 上,您需要通过将反斜线 () 替换为正斜线 ('/') 将路径格式修改为 Unix 样式。例如,使用 。/mta_archives/hello-cloud-foundry-blue.mtar。 4. 检查应用是否正在运行。
输入以下代码: cf apps

输入浏览器中为 hello-cloud-foundry-srv 显示的路由以查看 CAP 开始页面。

选择 $metadata 以浏览工作簿实体的字段。

任务 3: 执行空闲环境的蓝绿部署
步骤
修改实体定义。
打开定义工作簿实体的 db/data-model.cds 文件。可能如下所示:
namespace my.bookshop;
entity Books {
key ID : Integer;
title : String;
stock : Integer;
}
将新的 publishedDate 字段添加到 Books 实体:
namespace my.bookshop;
entity Books {
key ID : Integer;
title : String;
stock : Integer;
publishedDate : Date; // New required field
}
构建并部署绿色环境(新版本)。
构建多目标应用程序归档。 mbt build -t gen --mtar hello-cloud-foundry-green.mta
部署绿色环境(新版本)。
cf deploy .\gen\hello-cloud-foundry-green.mta -f --strategy blue-green
...
Operation ID: 34099f67-7a9b-11ef-90ea-eeee0a9a9d78
...
Renaming application "hello-cloud-foundry-srv" to "hello-cloud-foundry-srv-live"...
...
Starting application "hello-cloud-foundry-srv-idle"...
Application "hello-cloud-foundry-srv-idle" started and available at "<org>-<space>-hello-cloud-foundry-srv-idle.<domain>"
...
Process has entered testing phase. After testing your new deployment you can resume or abort the process.
Use "cf deploy -i 34099f67-7a9b-11ef-90ea-eeee0a9a9d78 -a abort" to abort the process.
Use "cf deploy -i 34099f67-7a9b-11ef-90ea-eeee0a9a9d78 -a resume" to resume the process.
Hint: Use the "--skip-testing-phase" option of the deploy command to skip this phase. Hint: Use the '--skip-testing-phase' option of the deploy command to skip this phase.
...
任务 4: 测试绿色应用程序(空闲)
步骤
测试绿色应用程序(空闲)。
检查应用是否正在运行: cf apps

通过新的*"publishedDate"*字段确保应用程序 hello-cloud-foundry-srv-idle 正常运行。

任务 5: 将绿色环境设置为生产环境
在该任务中,您将通过切换路由并验证部署将"绿色"环境转换为新的生产环境。
步骤
将绿色环境设置为生产环境。
获取操作标识。 cf mta-ops

将绿色环境设置为活动的生产环境。使用以下代码:
cf deploy -i 34099f67-7a9b-11ef-90ea-eeee0a9a9d78 -a resume
Executing action "resume" on operation 34099f67-7a9b-11ef-90ea-eeee0a9a9d78...
...
Updating application "hello-cloud-foundry-srv-idle"...
Stopping application "hello-cloud-foundry-srv-idle"...
Starting application "hello-cloud-foundry-srv-idle"...
Application "hello-cloud-foundry-srv-idle" started and available at "<org>-<space>-hello-cl2bbcd228.<domain>"
Renaming application "hello-cloud-foundry-srv-idle" to "hello-cloud-foundry-srv"...
Deleting routes for application "hello-cloud-foundry-srv-live"...
Stopping application "hello-cloud-foundry-srv-live"...
Deleting application "hello-cloud-foundry-srv-live"...
Process finished.
检查结果。
验证旧 BLUE 应用程序是否已删除,以及新的"绿色"应用程序是否已分配到生产路由。 cf apps

验证"绿色"环境是否为生产环境并在生产路由上提供服务,输入浏览器中为 hello-cloud-foundry-srv 显示的路由,并检查工作簿实体的字段。

任务 6: 清理资源
建议在不再需要您的 MTA 时停止或取消部署 MTA。为此,请运行以下命令。
步骤
清理资源
使用以下代码: cf undeploy hello-cloud-foundry --delete-services --delete-service-keys -f
结果
在本练习中,您已使用 Cloud Foundry 成功实施蓝绿部署策略,以确保书店应用程序的零停机时间更新。首先设置环境、部署初始蓝色环境并验证其功能。接下来,在空闲(绿色)环境中更新实体定义,部署新版本并对其进行测试以确保正确应用更改。最后,您将绿色环境设置为新的生产环境,确保在不中断服务的情况下顺利过渡。最后清理资源以维护整洁的工作区。
进一步阅读/参考链接
SAP 帮助 – 蓝绿部署策略
Github – 蓝绿部署策略