乐趣区

关于sap:一步步把-SAP-UI5-应用部署到-SAP-BTP-Kyma-运行环境中去

这是 Jerry 2021 年的第 40 篇文章,也是汪子熙公众号总共第 317 篇原创文章。

Jerry 2018 年已经写过两篇文章,介绍了如何在 Kubernetes 这个容器编排平台上运行一个蕴含 SAP UI5 利用的 Docker 镜像。

  • 在 Kubernetes 上运行 SAP UI5 利用 (上)
  • 在 Kubernetes 上运行 SAP UI5 利用 (下)

SAP Kyma,是一个由 SAP 推动的开源的企业软件扩大平台,底层基于 Kubernetes,能以 Serverless/ 微服务架构的形式,对 On-premise 和云利用进行扩大。

SAP Business Technology Platform (下文简称 BTP) 于 2020 年开始反对 Kyma 运行环境。本文介绍如何把本地开发的 SAP UI5 利用,打包成 Docker 镜像文件,而后部署并运行在 SAP BTP Kyma 运行环境里。

首先咱们在本地开发一个 SAP UI5 利用。这个利用的源代码,大家能够在 Github 下载。

这个 SAP UI5 利用的构建,采取 SAP UI5 Tool 提供的 Command Line Interface,即 @ui5/cli 实现。

应用命令行 npm run-script build, 调用 UI5 CLI 进行构建,失去生产版本的 SAP UI5 资源文件,存储在我的项目工程的 dist 文件夹内。稍后咱们制作 Docker 镜像文件时,会应用 dist 文件夹内的资源文件。


应用命令行 npm run-script start,本地运行这个 SAP UI5 利用,界面如下:

利用显示的这三条订单数据,保护在我的项目工程的 orders.json 文件内。


出于演示目标,我只实现了订单列表显示性能。而订单增加,批改和删除性能,大家能够自行实现。

上面咱们持续对该 SAP UI5 利用进行调整:将其订单列表的数据源,从本地 orders.json 文件, 调整成生产 SAP BTP Kyma 上运行的 Serverless Function.

登录 SAP BTP Cockpit,现在即使是 Trial 账号,也能收费启用 Kyma 运行环境。

点击 Go to Dashboard,就能进入 Kyma 控制台了:

在 dev 命名空间内,创立一个新的 Function:

Function 命名为 order-manager, 其实现技术栈抉择成 Node.js 12:

在函数实现源代码的 Source 区域,将之前 SAP UI5 工程里的 orders.json 文件里的内容,拷贝到下图函数编辑器里。保留之后,Function 状态变为 RUNNING,立刻可用。这体现了 Kyma Serveless 计算的劣势:开发人员只需专一于函数业务逻辑的编写,无需关怀函数的部署和运行环境问题。

切换到 Function Configuration 面板,点击 Expose Function,创立一个新的 API Rule,将该函数通过 HTTP 调用的形式,裸露给 Internet 上的其余消费者。

API Rule 依照下图所示进行保护,其中 Service 下拉列表里显示的,是创立 Function 时主动生成的同名 Service 资源。

API Rule 创立结束后,点击其 Host 字段,就能通过 HTTP 的形式,调用即执行对应的 Function 了。

在浏览器里拜访该超链接,能看到咱们在 Function 源代码里,硬编码的三条订单数据:

对 UI5 利用做简略的调整,让其生产部署在 SAP BTP Kyma 运行环境上刚刚创立的 Function. 至此咱们实现了 UI5 利用的开发,能够开始构建 Docker 镜像文件了。

新建 Dockerfile 文件,该 Docker 镜像构建具体分为两个步骤,即所谓的多阶段构建。首先,应用关键字 FROM,指定构建的根本镜像为 node:current-slim, 执行 npm install 下载 SAP UI5 利用 package.json 文件里定义的依赖,而后执行 npm run-script build, 生成蕴含该 UI5 我的项目生产环境版本资源文件的 dist 文件夹。思考到运行一个 SAP UI5 利用,只须要构建出的 dist 文件夹里的资源即可,而 node:current-slim 镜像内的所有内容,与 SAP UI5 利用的运行毫无关系。因而,第 10 行代码,咱们用 FROM 指定了一个新的镜像,即 nginx:alpine. 第 11 行用关键字 COPY,将前一镜像构建出的 dist 文件夹的内容,拷贝到 nginx 工作目录即 html 内,这样能大大减小最初构建出的 Docker 镜像的尺寸。

应用如下命令行构建 Docker 镜像文件:

docker build -t i042416/ui5-kyma -f docker/Dockerfile .

留神,命令行开端的 ”.”, 代表当前目录,而非命令行完结的标识符。

应用 docker push 命令,将该构建好的镜像,上传到 Docker Hub 去:

咱们在本地测试一下这个构建好的 Docker 镜像。

通过命令行本地启动 Docker 容器:

docker run -p 1081:80 -d i042416/ui5-kyma

将镜像内 nginx 对应的 80 端口,映射老本地宿主机的 1081 端口,而后浏览器关上 localhost:1081,确保 SAP UI5 利用可能失常工作,并且查看此时加载的资源,曾经是 dist 文件夹里构建好的生产零碎版本的文件,即 component-preload.js:

最初一步,将该 Docker 镜像,通过 Kubernetes 标准部署到 SAP Kyma 上。能够应用 Kubernetes 提供的命令行工具 kubectl,也可应用 SAP Kyma 控制台的图形界面。

创立一个名为 deployment.yaml 的文件,外面定义一个名为 jerry-ui5-kyma 的 Deployment 资源,这是 Kubernetes 原生反对的资源类型之一。指定应用之前构建好并且上传到 Docker Hub 的镜像文件:i042416/ui5-kyma:

回到 Kyma 控制台,菜单 Deployment new workload -> Upload YAML, 抉择前一步创立好的 deployment.yaml:

确保该 Deployment 处于 Running 状态:

最初基于 jerry-ui5-kyma 创立一个 API Rule,从而使其能够在 Internet 上被拜访。下图高亮区域,即是被构建在 Docker 镜像里的 SAP UI5 利用,在 SAP Kyma 运行环境里被拜访的 URL:

https://jerryui5kyma.c-46d70f…

至此,咱们曾经逐渐实现了本文结尾提出的工作:

(1) 本地开发一个 SAP UI5 利用
(2) 将该 SAP UI5 利用打包成 Docker 镜像
(3) 通过 Kubernetes Deployment,将蕴含前一步的 Docker 镜像,部署到 SAP Kyma 上并运行。


既然 SAP Kyma 底层基于 Kubernetes,所以当然也能够应用 Kubernetes 命令行工具 kubectl,间接操纵 SAP Kyma 资源。

在 SAP Kyma 控制台右上角,点击 Get kubeconfig 下载同名配置文件。

将下载到本地的 kubeconfig.yml 文件的门路,配置成环境变量 KUBECONFIG.

执行 kubectl version 命令行, 能看到 kubectl 打印出客户端和服务器端的 git 和 go 运行环境的版本号:

接下来就能应用 kubectl 命令行,查问方才下载好的 kubeconfig.yml 文件指向的 SAP Kyma 实例上运行的各种资源了。

比方应用如下命令行,查问到 SAP UI5 利用运行的 pod 名称为:jerry-ui5-kyma-785b458ff5-zm7xt


失去 pod 名称后,应用命令行进入该 pod 默认容器,即 jerry-ui5-kyma 外部:

kubectl exec -it jerry-ui5-kyma-785b458ff5-zm7xt -n dev — /bin/sh

进入容器外部之后,切换到目录 /usr/share/nginx/html, 这里能看到咱们之前本地开发的 SAP UI5 的资源文件。这些文件,正是由咱们之前制作 Docker 镜像时编写的 Dockerfile 里的最初一行,通过 COPY 操作,从前一个 node 基准镜像,执行 npm run-script build 命令后构建而成的 UI5 生产版本的资源文件,拷贝到 nginx 镜像的 /usr/share/nginx/html 目录而生成的。

心愿本文可能帮忙大家,对如何开发 SAP UI5 利用,并部署和运行于 SAP Kyma 上的残缺步骤,有一个直观的理解。本文提到的 SAP UI5 利用,后续还有很多能够持续加强的中央,比方实现订单增加和删除性能,并应用 Redis 进行长久化,同时将 Redis 服务也部署在 SAP Kyma 上,而后让该 UI5 利用,生产 SAP Kyma 上的 Redis 服务,而非本文介绍的 Serverless Function. 大家能够试着自行实现,或者期待本公众号后续的分享。感激浏览。

更多浏览

  • 站在伟人肩膀上的牛顿:Kubernetes 和 SAP Kyma
  • 在 Kubernetes 上运行 SAP UI5 利用 (上)
  • 在 Kubernetes 上运行 SAP UI5 利用 (下)
  • WordPress,SAP Kyma 和微信三者的集成
  • 从 ABAP Netweaver 的 SICF 到 SAP Kyma 的 Lambda Function
  • 周伯通的空明拳,米诺斯的星尘傀儡线,SAP Kyma 的 Serverless
  • 基于 SAP Kyma 的订单编排加强介绍
  • 第三方利用如何在 SAP Kyma 上进行服务注册

更多 Jerry 的原创文章,尽在:” 汪子熙 ”:

退出移动版