
Kubernetes
汪子熙
JerryWang,2007年从电子科技大学计算机专业硕士毕业后加入SAP成都研究院工作至今。Jerry是SAP社区导师,SAP中国技术大使。2020年5月下旬,Jerry做了脑部肿瘤的开颅切除手术,对编程和人生又有了新的感悟。
-
原创 使用brew cask安装minikube的各种错误和解决方法
根据SAP帮助文档,每次在HAC里的import都会trigger一个cronjob,我的理解对吗?帮助文档里说可以到backoffice里查找对应的cronjob的日志:然而我使用如下的script进入import,console显示成功后,到backoffice里找不到对应的job:INSERT_UPDATE OAuthClientDetails;clientId[unique=true];clientSecret;resourceIds;scope;authorizedGrantTypes;2020-10-06 21:46:26306
0
-
原创 关于SAP Kyma在国内的落地情况
一个朋友问我:我们现在做commerce扩展用kyma嘛?在国内落地了嘛?研究院有兄弟研究过这个玩意儿嘛?这个东西现在能部署在azure之类上吗?Jerry的回答我就研究过kyma,产品化就是Extension Factory,已经落地了。中国的客户,理论上只要购买了Azure,就可以一键将Kyma部署到Azure上。这叫BYOL,bring your own license,客户需要自己购买Azure的license,可以把Azure理解成最底层的IaaS,Kyma runs on top of2020-11-15 12:00:0650
0
-
原创 Windows 10下安装Docker Desktop
安装连接:https://hub.docker.com/editions/community/docker-ce-desktop-windows/需要提前打开Hyper - V安装后重启:在任务栏里看见Docker的icon:命令行docker version,看到如下输出:Client: Docker Engine - CommunityVersion: 19.03.8API version: 1.40Go version: g2020-05-09 12:41:00440
0
-
原创 SAP GraphQL console UI的实现原理
2020-04-11 15:25:0886
0
-
原创 在Google Cloud platform上创建Kubernetes cluster并使用
登录Google Cloud platform,创建一个新的Kubernetes Cluster:该集群的node个数选择为1,从Machine type下拉列表里选择CPU配置:展开Advanced Edit,选择该Kubernetes集群安装所在的操作系统的镜像类型:选择ubuntu,磁盘类型选择SSD:点击Create,得到一个Kubernetes cluster:The...2020-03-07 13:15:26120
0
-
原创 Kubernetes里的deployment unit
Deployment unit in k8s is pod.Pods are a model of the pattern of multiple cooperating processes which form a cohesive unit of service. They simplify application deployment and management by providin...2020-03-02 11:51:20131
0
-
原创 GraphQL的query只返回所请求的字段的实现原理
首先定义一个Product类型的对象,拥有id,name,price等基本字段:然后定义一个query,输入参数为id,返回的类型正是Product:这个query的实现,我简单的给product的price字段生成一些随机数:做个测试:输入查询结构,我只请求了id和name字段:query { product(id:"5") { id name }}...2019-08-12 23:34:59188
0
-
原创 通过kubeless命令行部署Kyma Lambda Function
除了在Kyma的浏览器控制台里部署Lambda Function外,也可以使用Kubeless命令行:kubeless function deploy hello --label app=hello --runtime nodejs8 --handler hello.main --from-file https://raw.githubusercontent.com/kyma-project/e...2019-08-12 10:45:57179
0
-
原创 如何在SAP Kyma的控制台里扩展新的UI
方法是创建一个新的resource,类型为ClusterMicroFrontend.使用命令行kubectl get ClusterMicroFrontend查看这些UI扩展:最后自定义的UI出现在Kyma console的这个位置:要获取更多Jerry的原创文章,请关注公众号"汪子熙":...2019-08-12 10:54:0756
0
-
原创 周伯通的空明拳,米诺斯的星尘傀儡线,SAP Kyma的Serverless
Jerry一直认为,金庸的《天龙八部》里的武学建模已经有点脱离传统武侠小说的范畴了,像已经走上玄幻道路的灵鹫宫“八荒六合唯我独尊功”,以及杀伤力足够能被视为现代激光武器的鼻祖,大理段式的“六脉神剑”之类。而另一部经典的射雕三部曲里很多的武功设定则中规中矩,其中周伯通自创的七十二路空明拳,是金老独具匠心的创造之一。周伯通被黄药师困在桃花岛,宅了十余年,从《道德经》中参悟到「以虚击实」,「以不足胜有...2019-08-12 10:55:41179
0
-
原创 SAP Kyma GraphQL storage实现
以root.graphql为例,左边为root的GraphQL schema,右边为resolver:加一行注释:一个vue小应用:vue的框架代码:点了update按钮后,触发这三个请求:请求负载:请求url:第二个请求则是存储加了//comment的resolver,即root.js:从请求的payload也能发现并没有delta的机制,而是完全覆盖。响应:c...2019-08-12 10:57:02118
0
-
原创 How Kyma plugin register hook to Activate and deactivate event
在Kyma plugin初始化时,把updateRegistration这个函数作为activated_plugin和deactivated_plugin事件的事件处理函数:Actions are the hooks that the WordPress core launches at specific pointsduring execution, or when specific e...2019-08-16 10:36:2865
0
-
原创 从ABAP Netweaver的SICF到SAP Kyma的Lambda Function
ABAP Netweaver里的事务码SICF是Jerry做原型开发时非常喜欢使用的一个工具:但凡遇到需要把ABAP系统里的资源以服务的方式暴露出来的场景,Jerry都喜欢在SICF里创建一个服务节点然后把业务逻辑写进去。采用SICF服务的方式暴露ABAP Netweaver上的资源,比选择OData或者Web Service的工作量要小很多,比较适合Jerry负责的一些开发周期短,需要迅速出...2019-08-12 10:45:04163
3
-
原创 WordPress Restful API registration to Kyma WordPress API注册到Kyma的实现原理
本文介绍 WordPress API注册到Kyma的实现原理.要获取更多Jerry的原创文章,请关注公众号"汪子熙":2019-08-15 11:08:27187
0
-
原创 SAP Kyma SSL证书请求文件(CSR)生成逻辑
(1) 在申请SSL证书之前,必须先生成证书私钥和证书请求文件(CSR),CSR是公钥证书原始文件,包含了服务器信息和您的单位信息。而私钥则保存在服务器上,不得对外泄露,需要妥善保管和备份。一个完整的数字证书由一个私钥和一个对应的公钥(证书)组成。在生成CSR文件时会同时生成私钥文件。(2) 生成CSR文件时,一般需要输入以下信息:a. Organization Name(O):申请单位名称...2019-08-15 11:05:24294
0
-
原创 WordPress的Kyma plugin HTML发送的connect请求是怎么投递到PHP的
点击Connect按钮:通过AJAX发送connect_to_kyma的action:url指向wd-admin文件夹里的admin-ajax.php:这就是从JavaScript AJAX请求投递到PHP的参数:要获取更多Jerry的原创文章,请关注公众号"汪子熙":...2019-08-15 11:04:13100
0
-
原创 使用WordPress的Kyma plugin同Kyma断开连接的实现
点这个disconnect按钮:触发action:disconnect_from_kyma:deregister的操作就是给这个url发送一个DELETE请求:delete请求的成功标志是204返回码:把对应的url置空:然后在HTML page上显示disconnection提示:最终效果:要获取更多Jerry的原创文章,请关注公众号"汪子熙":...2019-08-15 11:03:3885
0
-
原创 第三方应用如何在SAP Kyma上进行服务注册
Jerry之前的公众号文章 什么?在SAP中国研究院里还需要会PHP开发?提到了一个SAP Kyma的应用场景:旅行兼社交达人伊森,使用经过SAP Kyma扩展之后的WordPress这个网站来写博客。伊森每次在WordPress上发表一篇博客之后,WordPress会暗地里向Kyma实例发送一个“博客创建”的事件,并且把创建好的博客内容作为事件参数传递给Kyma。部署在后者上的事件响应函数,调...2019-08-15 11:01:21101
0
-
原创 高射炮打蚊子,杀鸡用绝世好剑:在SAP Kyma上运行UI5应用
国人在表述“大材小用”这个场景时,总喜欢用一些实物来类比,比如:高射炮打蚊子。英国QF 3.7英寸(94mm)高射炮,战斗全重超过9.3吨,全长近5米,最大射程约18公里,最大射高超过9000米,炮弹重量12.7公斤,采用人工半自动装填,射速每分钟20发,炮班人数为7人。由英国维克斯公司研发,于上个世纪30年代第二次世界大战期间开始大量装备。相传女娲补天后留下四颗奇石,千百年后其中之"黑寒"...2019-08-15 10:58:1898
0
-
原创 如何在windows本地用命令行访问SAP kyma实例
下载kubectl.exe:https://storage.googleapis.com/kubernetes-release/release/v1.15.0/bin/windows/amd64/kubectl.exe然后从Kyma cluster上下载config文件:放到本地用户对应的.kube文件夹内:使用命令kubectl version查看版本:kubectl clust...2019-08-15 10:42:4675
0
-
原创 WordPress同Kyma成功建立连接后,存放在mysql里的Kyma entry
存储在表wp_options里:这些属性被持久化在WordPress对应的数据库表里:要获取更多Jerry的原创文章,请关注公众号"汪子熙":2019-08-14 11:09:1065
0
-
原创 WordPress Kyma plugin检测kyma连接状态的逻辑
每次打开WordPress的Kyma设置界面时,Kyma connection字段会显示当前WordPress实例同Kyma的连接状态:核心逻辑是class-settings.php的第123行:$this->connector->isConnected()如果同Kyma连接成功,会显示Connection to Kyma works的消息,并且显示disconnect的按钮。...2019-08-16 10:37:3967
0
-
原创 GraphQL on Kyma
看个具体例子:这个页面里的数据是怎么从Kyma后台取出来的?答案是通过graphql.oAuth2的bearer token出现在HTTP请求头部的Authorization字段里。请求体,是graphQL的查询条件:{"operationName":"Application","variables":{"name":"ctu-wordpress"},"query":"query...2019-08-16 10:38:3068
0
-
原创 Kyma Application connection url
将从Kyma application里获取的一次性token粘贴到浏览器里,https://jerry.cluster.extend.cx.cloud.sap/v1/applications/signingRequests/info?token=T9jpc0dfdtCGrlPb7EJuyMD4OLOM2cwj0e4va7bKMtnX4Wa-P-SrSPbK529gEz_Ca-uGJV2Tb5svZ...2019-08-16 10:39:3755
0
-
原创 Jerry本地安装SAP Kyma的一些失败尝试
Jerry Installationhomebrew uninstall: /usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)”install: /usr/bin/ruby -e “$(curl -fsSL https://raw.github...2019-09-13 14:02:45147
0
-
原创 SAP Kyma上mqtt前缀的endpoint
2019-09-10 15:35:5769
0
-
原创 如何解决SAP kyma本地安装时的代理问题
Unable to connect to the server: context deadline exceededKeep calm, there are 15 possibilities and so far it is attempt number 15Unable to connect to the server: net/http: request canceled while wa...2019-09-10 14:07:21107
0
-
原创 connect SAP Hybris Enterprise Commerce Platform to SAP Kyma
从Hybris ECP暴露的service:所有的API列表:这个service instance分别绑定到了两个应用上:要获取更多Jerry的原创文章,请关注公众号"汪子熙":2019-09-10 14:05:3781
0
-
原创 GraphQL query的schema校验
schema.graphql里我定义了一个类型为Deal,只有一个名为description的字段:在服务器实现里引用这个schema文件:在playground里使用如下的结构进行测试,得到期望的结果:subscription { deal { description }}故意插入一个不存在的字段,马上报错:Cannot query field “name”...2019-08-12 23:48:15182
0
-
原创 graphql-yoga的安装步骤
命令行yarn add graphql-yoga:graphql-yoga is based on the following libraries & tools:express/apollo-server: Performant, extensible web server frameworkgraphql-subscriptions/subscriptions-transpo...2019-08-12 23:47:11192
0
-
原创 SAP Kyma的Lambda Function describe命令输出
Name: zjerry-wordpress-enhNamespace: ctu-demoLabels: app=zjerry-wordpress-enhAnnotations: function-size: Sservicebindingusages.servicecatalog.kyma-project.io/tracing-information:...2019-08-12 23:42:2264
0
-
原创 如何使用命令行拿到SAP Kyma的Lambda Function明细
查看这个Lambda Function的日志:Selected Labels: container_name=“zjerry-wordpress-enh” function=“zjerry-wordpress-enh” namespace="ctu-demo’Available labels for stream: filename-="varlog/pods/ctu-demo ziery-...2019-08-12 23:41:4773
0
-
原创 GraphQL在SAP Kyma中的广泛应用
就举一些最简单的例子:请求:{"query":"query {\n selfSubjectRules {\n verbs\n resources\n apiGroups\n\t\t}\n backendModules{\n name\n }\n clusterMicroFrontends{\n name\n ...2019-08-12 23:40:1853
0
-
原创 GraphQL一些hello world级别的例子
登录阿里云,目录/home/Jerry/graphQL, node index.js:http://localhost:4000/就能看到这个graphQL的控制台,类似postman的使用方式:查询product header level的数据:查询product 子节点,review的数据:使用subscription监听服务器事件,会每隔2秒钟看到一个New deal的打印...2019-08-12 23:38:52130
0
-
原创 GraphQL支持层级结构的query
首先在schema里创建一个Product类型,这个类型除了基本字段id,name,price外,还有一个复合字段reviews,其类型是一个结构,另外通过另一个类型Review单独定义。左右中括号代表这是一个数组:reviews的实现定义在product.js里:执行query:query { product(id:"5") { id name review...2019-08-12 23:37:41329
0
-
原创 GraphQL的schema定义文件加载到内存里的例子
GraphQL里我定义了一个名为signup的mutation:解析成JavaScript object后如下图所示:一个接受id为参数的query,返回类型为Product:product query在内存中的JavaScript对象:一个名为deal的subscription:要获取更多Jerry的原创文章,请关注公众号"汪子熙":...2019-08-12 23:36:19188
0
-
原创 GraphQL的query:一个最简单的例子
首先定义一个Product类型的对象,拥有id,name,price等基本字段:然后定义一个query,输入参数为id,返回的类型正是Product:这个query的实现,我简单的给product的price字段生成一些随机数:测试:输入查询结构:query { product(id:"5") { id name price }}得到期望的输出...2019-08-12 23:33:31249
0
-
原创 使用GraphQL的subscription订阅服务器的通知
首先在schema.graphql里定义一个Deal类型:我们模拟的场景是:每当有新的交易发生时,我们期望从服务器端收到通知。创建一个新的subscription,字段为deal,类型为刚才定义的Deal:这个subscription的实现,简单采取每2秒钟打印一次通知:const deal = { subscribe: (parent, args, { pubsub }...2019-08-12 23:32:351856
0
-
原创 SAP Kyma上创建的Lambda function背后的技术实现
在SAP Kyma上创建一个新的Lambda function:会自动生成一个同名加后缀的pod:该pod的日志文件位置:一个同名service:一个replica Set:一个deployment:一个configMap,里面包含了function实现的nodejs源代码:要获取更多Jerry的原创文章,请关注公众号"汪子熙":...2019-08-14 11:01:51123
0
-
原创 Service Broker in SAP Gateway and Kubernetes
SAP GatewaySee my Wechat article SAP OData编程指南Kubernetes进入容器服务,创建一个Kubernetes集群,然后在控制台就可以看到服务目录标签:If the selected cluster does not have Service Catalog installed, you can install it at your will...2019-08-09 11:23:0276
0