基于 Kyma 的企业级云原生应用的扩展案例分享(一)

简介: 什么是 Kyma?其官网的定义是,Kyma 是一个开源的云原生应用开发平台和运行时,底层基于 Kubernetes,借助一系列包括 Istio, NATS, Serverless 和 Prometheus 在内的其他优秀开源项目和组件,能够开发、运行和操作云原生应用程序,支持对传统的 On-Premises(本地部署)应用程序和云原生应用基于事件驱动模式的松耦合扩展。

什么是 Kyma?其官网的定义是,Kyma 是一个开源的云原生应用开发平台和运行时,底层基于 Kubernetes,借助一系列包括 Istio, NATS, Serverless 和 Prometheus 在内的其他优秀开源项目和组件,能够开发、运行和操作云原生应用程序,支持对传统的 On-Premises(本地部署)应用程序和云原生应用基于事件驱动模式的松耦合扩展。

image.png本文分为两部分,分别给大家介绍使用 Kyma 对本地部署的传统应用和企业级云原生应用进行扩展的案例。

使用 Kyma 扩展本地部署的 WordPress 应用

WordPress 是一个基于 PHP 的开源内容管理系统,很多朋友喜欢使用 WordPress 搭建自己的个人博客网站。


设想这样一个场景:某程序员是一个社交媒体达人,喜欢将自己的见闻经历,同步到 Twitter,Facebook,Youtube,微信等多个社交媒体上。手动登录一个个媒体平台然后逐一更新状态,无疑是一件费时费力的事情。


还好我们是程序员,可以充分发挥自己的动手能力。


假设我们自己的 WordPress 网站可以同 Kyma 连接,每当 WordPress 有新的动态(比如一篇博客)发布时,会给 Kyma 发送一个 post.published 事件。Kyma 接收到该事件后,触发注册在该事件上的监听函数,逐一调用社交媒体平台的 API,创建对应的动态即可。

image.png我们本地部署的 WordPress,扮演的就是下图左边 Business Solution 代表的角色。

image.png安装 Kyma for WordPress 的插件之后,我们能够在 WordPress Settings 标签页里,看到一个新的 Kyma Connector Settings 页面,维护 Kyma 实例的 url,登录用户名和密码等信息。

13.png

在上图 Kyma Connection 字段里维护的 url,会被 Kyma Application Connector 解析,并在 WordPress 和 Kyma 间建立互相信任的连接。


在 Kyma 控制台创建一个新应用,点击 Connection Application 按钮,把弹出的 url 维护到 WordPress Kyma Connection 字段。

image.png

如果把该 url 直接粘贴到浏览器里,可以看到以下内容:

15.png

  • csrUrl(Certificate Signing Request) 和 certificate:用来生成在 WordPress 和 Kyma 之间建立 SSL 连接所必需的数字证书
  • api:Kyma Service Catalog 注册的 endpoint

我们通过单步调式 WordPress 的方式,来深入了解 WordPress 与 Kyma 建立安全连接的技术细节。

16.png

WordPress 向传入的 url 发起 HTTP GET 请求(下图第 22 行代码的 wp_remote_get),获取到 CSR Certificate 和 API end point,存储在第 32 行的变量 $body_json 内。

17.png

第 73 行从变量 $body_json 的 csrUrl 字段拿到 Kyma 的 CSR(Certificate Signning Request)url,第 75 行向该 url 发送一个 POST 请求,拿到响应:

18.png

将 HTTP 响应数据另存为WordPress 目录下的三个本地文件:

  • crt.pem
  • clientCrt.pem
  • caCrt.pem

image.png

接下来 WordPress 同 Kyma 的安全连接,就是基于这些本地数字证书文件来完成。

image.png

建立了安全连接后,下一步需要将 WordPress 指定的事件发布到 Kyma 上去。

image.png

点击上图 Save Changes 之后,WordPress 的 Kyma 插件会将用户维护的待注册事件,拼装成对应的 JSON 字符串,通过 HTTP POST 请求 向 Kyma 发送:

24.png

事件注册成功后,在 Kyma Application 控制台,就能看到发起连接请求的 WordPress 实例的对应记录:

25.png

同时在 Kyma Service Catalog 里,也能看到 WordPress 通过注册事件暴露出来的可访问 API 入口:

26.png

WordPress 事件发布成功后,这些事件就会出现在 Kyma 实例控制台的 Service Catalog(服务目录)界面里,如下图所示。


这种事件注册机制,确保了 WordPress 和 Kyma 的松耦合关系:在 Kyma 平台上编写事件监听函数的开发人员,完全不需要了解关于 WordPress 的任何技术细节,这些事件监听函数在 Kyma 上的载体就是一个个 Lambda Function,开发人员可以用自己喜欢的编程语言来实现函数。

image.png

创建一个 Lambda Function,为 WordPress 暴露给 Kyma 的 post.published 事件实现监听函数的逻辑。

image.png

函数实现的技术栈,选择 Node.js:

image.png

Select Function Trigger 即触发方式选择,我们选择 WordPress 暴露给 Kyma 的 post.published 事件。这样当 WordPress 里有新的 post 创建时,WordPress 会发送 post.published 事件,连同 post 的具体内容,传给 Kyma,后者会自动调用创建好的基于 Serverless 的 Lambda Function.

image.png

剩下的 Lambda Function 的实现工作就是纯粹的 Node.js 编程:从事件参数 event 对象里将 WordPress 传入的 post 内容解析出来,调用 axios 工具库将此条 post 进行转发。


Lambda Function 实现里,我选择了调用微信 Open API,将该条 post 推送给一个用于测试的硬编码的微信用户:

image.png

以上就是使用 Kyma 将 WordPress 里发布的内容自动 “同步” 到其他社交媒体平台比如微信的步骤。我们简单回顾一下思路:


(1) 通过 Kyma Application Connector 与 WordPress 建立互相信任的安全连接。


(2) 将 WordPress 暴露出的 post.published 事件,发布到 Kyma Service Catalog 里。


(3) 实现 Kyma Lambda Function,监听 WordPress 所发布的 post.published 事件,实现对应的内容转发到社交媒体平台的功能。如果除了微信之后,还希望转发到其他社交媒体平台上,只需再创建一个新的 Lambda Function,然后调用其他的社交媒体平台的发布 API 即可。


以上步骤同样适用于通过 Kyma 对其他的云原生应用进行扩展。


按照上述三个步骤,对 WordPress 进行扩展之后,发布一条新的帖子,关于影片《切尔诺贝利》的观后感:

image.png

单步调试 WordPress 的帖子发布功能,发现发布的帖子内容被推送到了 Kyma API Gateway 对应的 url:

image.png

image.png

回到 Kyma Lambda Function 函数的控制台,确认 WordPress 发送的事件内容,已经成功被 Kyma 接收到了:

image.png

最后我的微信号上成功收到了 Kyma Lambda Function 里调用微信 Open API 发送的消息:

image.png



image.png

目录
相关文章
|
6天前
|
Cloud Native 持续交付 API
探索云原生技术:打造未来应用的基石
【9月更文挑战第29天】在数字时代的浪潮中,云原生技术如星辰般熠熠生辉。它不仅仅是一套工具或框架,而是一种全新的应用开发与部署哲学。本文将深入探讨云原生的核心理念、关键技术以及它们如何共同作用于现代软件架构之中,为读者呈现一场技术与创新的盛宴。
|
6天前
|
运维 Cloud Native 持续交付
云原生技术:构建未来应用的基石
在当今这个数字化时代,云原生技术正迅速成为推动企业创新和数字化转型的关键力量。本文将深入探讨云原生的核心概念、主要特点以及它如何改变我们构建、部署和运行应用程序的方式。通过分析Kubernetes、微服务、容器化等关键技术,本文旨在为读者提供一个关于云原生技术的全面理解,并探讨其在未来软件开发领域的重要性。
|
4天前
|
运维 Cloud Native 持续交付
探索云原生技术:构建高效、可扩展的现代应用
在当今数字化时代,云原生技术正迅速改变着企业构建和运行应用程序的方式。本文深入探讨了云原生技术的基本原理、核心组件及其带来的优势,揭示了如何通过采用云原生架构来提升应用的敏捷性、弹性和可扩展性。无论是开发者、运维人员还是企业决策者,了解并掌握云原生技术都将成为推动业务创新和保持竞争力的关键。
|
6天前
|
运维 Cloud Native 持续交付
云端漫步:云原生技术与应用
【9月更文挑战第29天】在数字时代的浪潮中,云原生技术如同一座灯塔,指引着企业航行向数字化转型的海洋。本文将深入探讨云原生的核心概念、关键技术及实际应用案例,揭示其在现代IT架构中的重要性和影响力。通过浅显易懂的语言和实际代码示例,我们将一起探索云原生如何赋能业务创新和提升运维效率。
|
3天前
|
运维 Cloud Native 安全
云原生技术在现代企业中的应用与挑战
本文探讨了云原生技术的基本概念、主要特点以及在现代企业中的具体应用。通过分析云原生技术的五大特征——容器化、动态管理、微服务架构、持续交付和自动化,揭示了其在提升企业运营效率、增强系统弹性和促进业务创新方面的重要性。同时,文章也讨论了企业在采用云原生技术时面临的主要挑战,包括文化转变、安全风险和技术复杂性,并提出了相应的解决策略。通过实际案例的分析,进一步说明了云原生技术如何帮助企业实现数字化转型,保持市场竞争力。
|
6天前
|
Kubernetes Cloud Native 持续交付
探索云原生架构:打造弹性可扩展的应用
【9月更文挑战第29天】在云计算的浪潮中,云原生架构成为企业追求高效、灵活和可靠服务的关键。本文将深入解析云原生的概念,探讨如何利用容器化、微服务和持续集成/持续部署(CI/CD)等技术构建现代化应用。我们将通过一个简易的代码示例,展示如何在Kubernetes集群上部署一个基于Node.js的应用,从而揭示云原生技术的强大能力和潜在价值。
19 6
|
4天前
|
运维 Cloud Native Devops
云原生技术在现代企业中的应用与挑战
本文深入探讨了云原生技术在现代企业中的广泛应用及其所带来的巨大变革。通过详细分析容器化、微服务、DevOps等关键技术,揭示了云原生技术如何助力企业实现敏捷开发、弹性扩展和高效运维。同时,文章也讨论了企业在实施云原生技术过程中所面临的诸多挑战,如技术复杂度、安全性问题及多云环境的管理难题。最终,通过实际案例展示了云原生技术的成功应用,并为企业未来的发展方向提供了宝贵的参考。
11 3
|
5天前
|
运维 Cloud Native 云计算
云原生技术在现代企业中的应用
【9月更文挑战第29天】随着云计算技术的不断发展,云原生技术已经成为现代企业的重要选择。本文将介绍云原生技术的基本概念、优势以及在现代企业中的应用案例。通过深入浅出的方式,帮助读者更好地理解云原生技术的价值和实践方法。
|
8天前
|
Cloud Native 云计算 Docker
云原生之旅:从容器化到微服务架构
【9月更文挑战第27天】本文将引领读者进入云原生的世界,探索如何通过容器化技术实现应用的快速部署与扩展,并深入理解微服务架构的设计哲学。我们将一起见证代码如何转化为可在云端无缝运行的服务,同时讨论云原生生态中的最佳实践和面临的挑战。
|
7天前
|
监控 Cloud Native 持续交付
云原生架构:构建弹性与高效的现代应用##
随着云计算技术的不断成熟,云原生架构逐渐成为企业技术转型的重要方向。本文将深入探讨云原生的核心概念、主要技术和典型应用场景,以及如何通过云原生架构实现高可用性、弹性扩展和快速迭代,助力企业在数字化转型中保持竞争优势。 ##
25 6
下一篇
无影云桌面