基于 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

目录
相关文章
|
9天前
|
运维 监控 Cloud Native
构建行业应用生态:云原生应用市场简化企业软件安装
在移动互联网时代,尽管手机应用市场为用户带来了极大的便利,但企业级软件的安装和管理仍面临诸多挑战,包括安装复杂、交付效率低、应用兼容性差等问题。为此,基于云原生技术的企业级应用市场Rainstore应运而生,旨在简化企业软件的安装和管理,提升交付效率,增强应用兼容性,支持远程管理和个性化定制,构建开放的行业应用生态,助力企业数字化转型。
构建行业应用生态:云原生应用市场简化企业软件安装
|
2天前
|
运维 监控 Cloud Native
云原生技术在现代企业中的应用与挑战####
【10月更文挑战第15天】 本文深入探讨了云原生技术如何重塑企业的IT架构,并分析了其带来的机遇与面临的挑战。通过案例分析,揭示了云原生技术在提升业务敏捷性、降低运维成本方面的显著优势,同时也指出了在安全性、多云管理等方面的潜在难题,为企业决策者提供了有价值的参考。 ####
12 3
|
6天前
|
人工智能 运维 Cloud Native
云原生应用开发平台 CAP(Cloud Application Platform)应用心得
云原生应用开发平台 CAP(Cloud Application Platform)是阿里云提供的一站式应用开发及应用生命周期管理平台。
14 1
|
8天前
|
运维 Cloud Native 持续交付
云原生技术:构建现代应用的基石
【10月更文挑战第9天】在数字化转型的浪潮中,云原生技术如同一股清流,引领着企业走向更加灵活、高效的未来。本文将深入探讨云原生的核心概念,揭示其在现代应用开发与部署中的重要作用,并通过实际案例分析,展现云原生技术如何助力企业实现敏捷开发和自动化运维,最终提升业务竞争力。
26 3
|
8天前
|
运维 Kubernetes Cloud Native
云原生技术:构建现代应用的新范式
【10月更文挑战第9天】 云原生是一种通过云计算环境优化的软件开发和运行方法论,旨在最大化利用云平台的灵活性、可扩展性和弹性。本文将深入探讨云原生技术的基本原理、核心组件以及其在实际项目中的应用。我们将从Kubernetes的容器编排机制入手,逐步探讨如何通过自动化工具实现持续集成与持续部署(CI/CD),最终展示如何构建一个高效、可靠的云原生应用。
25 2
|
11天前
|
运维 Cloud Native 持续交付
云原生技术在现代企业中的应用与挑战##
【10月更文挑战第5天】 云原生技术作为云计算领域的前沿趋势,正在迅速改变企业的IT架构和运营模式。本文将探讨云原生的核心概念、主要技术以及其在现代企业中的具体应用和面临的挑战。通过深入分析,我们希望为企业在云原生转型过程中提供有价值的参考和指导。 ##
18 2
|
12天前
|
运维 Kubernetes Cloud Native
探索云原生架构:构建弹性、高效和可扩展的现代应用
【10月更文挑战第5天】 在当今数字化时代,企业必须不断适应快速变化的技术环境。传统的单体应用程序已经无法满足现代业务需求,而云原生架构以其独特的优势,正在成为企业数字化转型的基石。本文将深入探讨云原生架构的核心概念、关键技术和应用实践,旨在帮助读者理解如何利用云原生技术构建弹性、高效和可扩展的现代应用。
58 1
|
5天前
|
Cloud Native Devops 云计算
云原生技术:构建现代应用的新基石
【10月更文挑战第12天】 本文深入探讨了云原生技术的核心理念、关键技术和实践方法,揭示了其在现代应用开发和运维中的重要地位。通过分析云原生技术的发展趋势和面临的挑战,本文为读者提供了全面而深入的理解,旨在帮助读者更好地利用云原生技术构建高效、灵活和可扩展的现代应用。
20 0
|
5天前
|
Cloud Native 安全 云计算
云原生技术在现代企业中的应用与挑战
本文探讨了云原生技术在现代企业中的重要性及其应用,并分析了企业在实施过程中面临的主要挑战。通过案例分析,本文展示了如何利用云原生技术提高企业的敏捷性和弹性,同时提出了相应的解决方案和建议。
|
8天前
|
监控 Cloud Native 持续交付
云原生技术:构建现代应用的新范式
【10月更文挑战第9天】 随着云计算技术的不断成熟,云原生技术正迅速成为现代应用开发和部署的新标准。云原生不仅是一种技术,更是一种理念和实践方法,旨在最大化利用云计算的优势,提升应用的灵活性、可扩展性和弹性。本文将深入探讨云原生的核心概念、关键技术以及它如何改变我们构建和运行应用程序的方式。
32 0