高射炮打蚊子,杀鸡用绝世好剑:在SAP Kyma上运行UI5应用
国人在表述“大材小用”这个场景时,总喜欢用一些实物来类比,比如:高射炮打蚊子。
英国QF 3.7英寸(94mm)高射炮,战斗全重超过9.3吨,全长近5米,最大射程约18公里,最大射高超过9000米,炮弹重量12.7公斤,采用人工半自动装填,射速每分钟20发,炮班人数为7人。由英国维克斯公司研发,于上个世纪30年代第二次世界大战期间开始大量装备。
相传女娲补天后留下四颗奇石,千百年后其中之"黑寒"由拜剑山庄获得,其时。当时火麒麟四处为祸,于是拜剑山庄致力于研究研究如何将"黑寒"制成一把至寒宝剑,用来克制至热的火麒麟。
在完成铸剑的最后步骤,将三毒之血"贪"(剑贪之血), "瞋"(步惊云之血), "痴"(断浪之血)融入剑炉中,绝世好剑终于问世。在《风云》第一部中,步惊云掌持此剑同雄霸,绝无神等一流高手PK.
Jerry从小也是个《风云》迷,至今还会时不时把马荣成这部大作拿出来翻翻。某宝上卖的锌合金1:1仿制的绝世好剑标价太贵了,Jerry买不起,只买得起下面这个比例的:
图片里另一件,就是第一部里和绝世好剑齐名,人称“南山巅上火麟烈,北海浅深雪饮寒”的神兵:雪印狂刀。
Jerry还有一个真家伙:捕神用的小龙泉,在不夜坊阻止步惊云报仇一役中,誓死阻止步惊云,用此剑(准确地说应该是匕首),与其一拼高下,后被步惊云击杀。
小龙泉,全长48cm左右 , 柄长10cm , 刃长30cm ,刃宽3.3cm , 刃厚:0.8cm.
的确,同高射炮打蚊子,杀鸡用绝世好剑一样,虽然SAP Kyma也是基于Kubernetes,但如果仅仅把Kyma当成一个普通的Kubernetes集群使用,可能连Kyma 1%的功能都没有用上。
作为SAP C/4HANA产品线的扩展工具,Kyma之于C/4HANA的重要性,就如同SAP云平台之于SAP的重要性,再怎么强调也不过分。
既然SAP Kyma主要的用途是做C/4HANA的扩展,为什么这篇文章还是要介绍如何在上面跑SAP UI5应用呢?
像程序员学习任何新技术总是喜欢从最简单的Hello World开始,在SAP Kyma上运行UI5应用,就是我们一步步从舒适区迈向学习区,熟悉Kyma操作方法的最佳手段之一。
在开始之前,您也许需要温习一下Jerry之前介绍过的内容:
- 站在巨人肩膀上的牛顿:Kubernetes和SAP Kyma
- 在Kubernetes上运行SAP UI5应用-上
- 在Kubernetes上运行SAP UI5应用-下
- 基于SAP Kyma的订单编排增强介绍
- 什么?在SAP中国研究院里还需要会PHP开发?
下面跟着Jerry一起一步步在Kyma上运行一个UI5应用。
作为一个前提条件,您得有一个在本地正常运行的UI5应用,然后将其同某个Web服务器比如Nginx一起打成一个Docker镜像。
Jerry在之前的公众号文章 在Kubernetes上运行SAP UI5应用(上)已经介绍过制作Docker镜像的详细方法。
Jerry已经把包含了测试用的UI5应用的镜像上传到了Docker hub网站上,名称为i042416 / ui5-nginx:
https://hub.docker.com/
(1) 进入Kyma的控制台,下载config文件到本地。
这个文件拿来做什么的?回忆下Kyma的架构图,Jerry强调过,Kyma底层是基于Kubernetes的:
而作为Kubernetes的使用者,我们要么用Kubernetes的工作台cockpit,要么用命令行工具同Kubernetes集群的主节点交互,就好比我们用SAP云平台的cockpit或者cf命令行工具同SAP Cloud Platform的CloudFoundry环境交互一样。
我们用cf login登录SAP Cloud Platform CloudFoundry环境时,要指定一个API endpoint,那么使用命令行操作Kubernetes同样,需要告诉命令行远端的Kubernetes API server的连接信息,这个信息就维护在刚刚从Kyma控制台里下载的config文件里。
打开这个config文件,发现里面确实维护了Kubernetes API服务器的地址,以及下载config文件的用户名和OAuth 2.0的Bearer token. 有了这个token,每次我们用Kubernetes命令行工具执行命令操作Kubernetes主节点时,实际上是向这个config文件里维护的API server发起Restful的请求。通过这个OAuth 2.0的Bearer token进行认证,我们免去了每次敲命令都得输入用户名和密码的麻烦。
搜索引擎上搜索关键字“kubectl”,下载这个命令行工具到本地,在用户文件夹下新建一个.kube文件夹,把配置文件放进去。
执行命令行kubectl cluster-info, 如果看到下列打印信息,说明本地kubectl已经成功同API server建立通信连接了。
(2) 在Kyma上运行这个Docker镜像:
kubectl run jerry-kyma-ui5 --image=i042416/ui5-nginx:v2.0
在默认的namespace下面成功创建了一个pod,状态为Running:
同时创建了一个命令行指定的名为jerry-kyma-ui5的deployment:
这个pod和deployment也能在Kyma web控制台里看见:
把这个deploymen以service的方式暴露出来:
kubectl expose deployment jerry-kyma-ui5 --type=LoadBalancer --port=80 --target-port=80
通过kubectl get service拿到这个服务的External-IP,即外部可以访问的地址:
浏览器里输入IP地址,这个部署在SAP Kyma上的UI5应用就呈现在我们眼前了。
更多SAP Kyma的实战分享,敬请期待。
更多阅读
- 站在巨人肩膀上的牛顿:Kubernetes和SAP Kyma
- 在Kubernetes上运行SAP UI5应用-上
- 在Kubernetes上运行SAP UI5应用-下
- 基于SAP Kyma的订单编排增强介绍
- 什么?在SAP中国研究院里还需要会PHP开发?
要获取更多Jerry的原创文章,请关注公众号"汪子熙":
高射炮打蚊子,杀鸡用绝世好剑:在SAP Kyma上运行UI5应用的更多相关文章
- 高射炮打蚊子丨在VS 2017里用C语言写经典的冒泡排序
上一期<高射炮打蚊子丨用Visual Studio 2017写最初级的C语言程序>中,我们用Visual Studio “全宇宙最强IDE”这门大炮,打了“C语言写Hello World ...
- 高射炮打蚊子丨用Visual Studio 2017写最初级的C语言程序
众所周知,Visual Studio号称全宇宙最强的IDE(集成开发环境),简直可以“秒天秒地秒空气”.我们看着各种技术大会上,大神们在台上用VS演示Demo溜得飞起,然而对于一些非技术专业同学或者是 ...
- 安排~~炒鸡全的JS兼容问题,码上-----【XUEBIG】
如何处理兼容问题 如果两个都是属性,用逻辑||做兼容 如果有一个是方法,用三元做兼容 如果是多个属性或方法,封装函数做兼容 两个小知识点: 1.取消拖拽的默认行为: document.ondragst ...
- 雪妖现世:给SAP Fiori Launchpad增添雪花纷飞的效果
1995年7月,台湾大宇公司发布了一款国产单机角色扮演游戏神作:<仙剑奇侠传1>,所谓"一包烟,一杯茶",就能在电脑面前坐一整天. 这么经典的游戏Jerry当然已经通关 ...
- 周伯通的空明拳,米诺斯的星尘傀儡线,SAP Kyma的Serverless
Jerry一直认为,金庸的<天龙八部>里的武学建模已经有点脱离传统武侠小说的范畴了,像已经走上玄幻道路的灵鹫宫"八荒六合唯我独尊功",以及杀伤力足够能被视为现代激光武器 ...
- 从ABAP Netweaver的SICF到SAP Kyma的Lambda Function
ABAP Netweaver里的事务码SICF是Jerry做原型开发时非常喜欢使用的一个工具:但凡遇到需要把ABAP系统里的资源以服务的方式暴露出来的场景,Jerry都喜欢在SICF里创建一个服务节点 ...
- WordPress,SAP Kyma和微信三者的集成
我们来继续学习如何在实战中使用SAP Kyma. Jerry在之前的文章里,分别介绍了如何本地搭建WordPress实例: 什么?在SAP中国研究院里还需要会PHP开发? 以及如何把这个本地搭建的Wo ...
- system(“pause”)和getchar()
大家都知道system(“PAUSE”)可以让C程序在运行结束之前暂停运行.用system(“PAUSE”)可以解决运行程序一闪而过,看不到输出结果的问题.有程序员会用system(“PAUSE”)只 ...
- 使用独立PID namespace防止误杀进程
一段错误的代码 首先看一段错误的代码: #!/bin/bash SLICE=100; slppid=1; pidfile=/var/run/vpnrulematch.pid # 停止之前的sleep ...
随机推荐
- rank SQL 筛选重复数据
先思考一个问题: 看下面的表数据 问题:现在需要在 A 和 B 相同的前提下对 C desc排序,然后拿到排序中不是第一个的数据?也就是说拿到下面的数据 只用一条 SQL 实现: select * f ...
- html转图片网页截屏(二)PhantomJS
关于PhantomJS PhantomJS 是一个基于WebKit的服务器端 JavaScript API.它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准: DOM 处理, CSS ...
- Flutter 踩坑之build函数返回了null
今天遇到一个bug,内容都正常显示没问题,但是控制台里报错,如图: 翻译了下,说是函数不能返回空值,搜索了下,网上相同问题的是少写了个return,我检查了下也没发现少return的,后来突然发现if ...
- 查询父节点parentNode
示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 <!DOCTYPE htm ...
- 乐字节Java变量与数据结构之二:Java常量与变量
大家好,小乐又来给大家讲述Java基础知识.上次说了乐字节Java变量与数据类型之一:Java编程规范,关键字与标识符,这次将接着往下说,谈谈Java常量与变量. 1.常量 1).定义 在程序执行的过 ...
- TCP调试助手,十六进制发送或者字符串形式发送的理解
"无论创作还是欣赏,都是对法则和规律的逃逸,自由是艺术的源泉"-- 黑格尔 TCP调试助手中,在发送时可以选择十六进制发送或者字符串形式发送! 其实,两者最终调用的都是系统的soc ...
- [转帖]Pivotal Greenplum 6.0 新特性介绍
Pivotal Greenplum 6.0 新特性介绍 https://cloud.tencent.com/developer/news/391063 原来 greenplum 也是基于pg研发的. ...
- 【ZOJ】4012 Your Bridge is under Attack
[ZOJ]4012 Your Bridge is under Attack 平面上随机n个点,然后给出m条直线,问直线上有几个点 \(n,m \leq 10^{5}\) 由于共线的点不会太多,于是我们 ...
- Redis 常用命令学四:列表类型命令
1.在列表两端增加值的命令 127.0.0.1:6379> lpush 1 (error) ERR wrong number of arguments for 'lpush' command 1 ...
- time模块/datetime模块/calendar模块
time模块时间的表示形式时间戳:以整型或浮点型表示⼀个时间,该时间以秒为单位,这个时间是以1970年1⽉1⽇0时0分0秒开始计算的. 导入time import time 1.返回当前的时间戳 no ...