使用 SAP BTP Cloud Foundry 运行时实施蓝绿部署以进行零停机时间更新

学习目标

  • 使用 SAP BTP Cloud Foundry 运行时实施蓝绿部署,以进行零停机时间更新。

业务场景

我们首先考虑以下场景:您负责维护使用 SAP CAP(云应用程序编程)构建的 Book Shop 应用程序。您的任务是实施蓝绿部署策略,以确保引入中断更改时停机时间最短,例如向实体添加新必填字段。本练习将指导您完成使用 SAP BTP Cloud Foundry 运行时蓝绿部署策略安全有效地部署更改的步骤。

行使选项

您可以通过两种方式执行此练习:

  1. 实时环境通过使用下面提供的说明,您可以在 SAP BTP 免费层级账户中执行步骤。

  2. 平台模拟 – 单击下面的"开始练习"按钮,按照模拟中的逐步说明进行操作。

注意

强烈建议首先在实时环境中执行这些步骤。

任务流

在本练习中,您将执行以下任务:

  1. 设置前提条件和环境。

  2. 执行 BLUE(实时)环境的初始蓝绿部署。

  3. 执行绿色(空闲)环境的蓝绿部署。

  4. 测试应用程序。

  5. 将绿色环境设置为生产环境。

  6. 清理资源。

前提条件

  • 您具备 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: 设置前提条件和环境

步骤

  1. 确保已安装并配置所有前提条件。

  2. 执行所需步骤。

  3. 克隆 SAP CAP 书店应用程序。

  4. 输入以下代码:

git clone https://github.tools.sap/SAP-BTP-Courses/cf400_sample_app bookshop
cd bookshop
  1. 安装相关性。

  2. 输入以下代码: npm install

  3. 登录到 Cloud Foundry。

  4. 输入以下代码:

cf api <API-ENDPOINT>
cf login
cf target -o <ORG> -s <SPACE>

您可以在 SAP BTP 主控室中子账户的概览部分找到 API 端点。

任务 2: 执行实时环境的初始蓝绿部署

步骤

  1. 构建生产应用程序。

  2. 输入以下代码: cds build --production --production 参数可确保与云部署相关的部件由 cds build 创建。

  3. 为应用程序生成初始 MTA 归档。

  4. 输入以下代码:

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 文件部署初始环境(蓝色)。

  1. 输入以下代码:

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. 检查应用是否正在运行。

  1. 输入以下代码: cf apps 显示正在运行的应用的屏幕截图。

  2. 输入浏览器中为 hello-cloud-foundry-srv 显示的路由以查看 CAP 开始页面。 屏幕截图,显示查找 $metadata 的位置

  3. 选择 $metadata 以浏览工作簿实体的字段。 系统中的屏幕截图,显示书的实体字段。

任务 3: 执行空闲环境的蓝绿部署

步骤

  1. 修改实体定义。

  2. 打开定义工作簿实体的 db/data-model.cds 文件。可能如下所示:

namespace my.bookshop;
entity Books {
key ID : Integer;
title  : String;
stock  : Integer;
}
  1. 将新的 publishedDate 字段添加到 Books 实体:

namespace my.bookshop;
entity Books {
key ID : Integer;
title  : String;
stock  : Integer;
publishedDate : Date; // New required field
}
  1. 构建并部署绿色环境(新版本)。

  2. 构建多目标应用程序归档。 mbt build -t gen --mtar hello-cloud-foundry-green.mta

  3. 部署绿色环境(新版本)。

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: 测试绿色应用程序(空闲)

步骤

  1. 测试绿色应用程序(空闲)。

  2. 检查应用是否正在运行: cf apps 显示正在运行的应用的屏幕截图。

  3. 通过新的*"publishedDate"*字段确保应用程序 hello-cloud-foundry-srv-idle 正常运行。 显示运行环境的屏幕截图。

任务 5: 将绿色环境设置为生产环境

在该任务中,您将通过切换路由并验证部署将"绿色"环境转换为新的生产环境。

步骤

  1. 将绿色环境设置为生产环境。

  2. 获取操作标识。 cf mta-ops 显示正在运行的应用的屏幕截图。

  3. 将绿色环境设置为活动的生产环境。使用以下代码:

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.
  1. 检查结果。

  2. 验证旧 BLUE 应用程序是否已删除,以及新的"绿色"应用程序是否已分配到生产路由。 cf apps 显示正在运行的应用的屏幕截图。

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

任务 6: 清理资源

建议在不再需要您的 MTA 时停止或取消部署 MTA。为此,请运行以下命令。

步骤

  1. 清理资源

  2. 使用以下代码: cf undeploy hello-cloud-foundry --delete-services --delete-service-keys -f

结果

在本练习中,您已使用 Cloud Foundry 成功实施蓝绿部署策略,以确保书店应用程序的零停机时间更新。首先设置环境、部署初始蓝色环境并验证其功能。接下来,在空闲(绿色)环境中更新实体定义,部署新版本并对其进行测试以确保正确应用更改。最后,您将绿色环境设置为新的生产环境,确保在不中断服务的情况下顺利过渡。最后清理资源以维护整洁的工作区。

进一步阅读/参考链接

  • SAP 帮助 – 蓝绿部署策略

  • Github – 蓝绿部署策略