云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

_缓存服务器_免费领

小七 141 0

欢迎来到我的Kyma实践系列的第三部分。

本系列分享我亲身探索Kyma的学习成果。它旨在通过分享我所采取的步骤、学到的教训和收集到的技巧,让任何对Kyma感兴趣的人都能了解到。

如果您还没有,请查看本系列的第1部分和第2部分。

在上一篇文章中,我分享了我学习Kyma应用程序连接器组件的经验。在同一篇文章中,我还提到了我是如何有目的地避免与事件相关的步骤,以便可以在其他时间进行讨论。好吧,就是这样!我觉得深入研究这个话题是很自然的,商城返利系统,因为它很符合我们上次的做法。

在较高的层次上,事件网格可以定义为一层基础设施,它将事件传递给任何环境中的任何应用程序。Kyma提供了这个组件,让用户从外部连接事件,并使用Istio服务Mesh支持的Knative事件实现无服务器计算。我将使用相同的设置通过事件触发函数,而不是通过创建自定义Deploymentresource来结束这些步骤。为了继续上一篇文章,云计算大数据,我假设您已经完成了部署WordPress应用程序、启用Kyma插件以及在服务目录中注册服务的所有步骤。如果不是这样,请在继续之前按照WordPress博客文章的Build a cloud native extension来设置您的环境。

创建一个基于事件触发的函数

我想在这里实现的是当一个操作从外部应用程序触发时,WordPress,Kyma收到一个事件并触发一个函数基于其订阅。要做到这一点,需要将WordPress应用程序注册为服务目录中的服务(上一篇博文中介绍的步骤)。然后,只需要另外两个定制资源创建:一个函数和一个触发器1创建函数2为函数创建触发器三。通过在WordPress Hello World博客帖子

1上发表评论发送事件。函数必须用JavaScript编写,并以事件和上下文作为参数。

事件参数表示导致函数被调用的事件上下文参数表示与函数和环境信息

2相关的属性。可以使用APIRules、触发器和/或服务绑定调用函数。

APIRule允许函数对外公开。这意味着该函数可以是一个独立的服务,可以在不附加到事件的情况下被调用。触发器允许事件触发器调用函数。这意味着函数不对外公开,只能由触发器访问。服务绑定允许将函数绑定到服务。这意味着该函数仅可用于该特定的应用程序,并且创建了一个带有应用程序环境变量的秘密以供该函数使用。

3。Kyma控制台为您提供了一个空间,可以以用户友好的方式键入函数逻辑,而不是将其添加到yaml文件中。如果您不能访问IDE,这可能是一个不错的选择。但是,它不提供测试代码的选项。如架构图中所述,创建函数时,它会创建一个ConfigMap、一个作业、一个部署、一个服务和一个HorizontalPodAutoscaler

ConfigMap包含您的代码作业基于代码创建docker映像,并将其推送到docker注册表将创建具有由作业创建的函数映像的部署为部署创建服务

5。如前一篇博文中所述,物联网是什么,创建应用程序自定义资源会在默认情况下为事件创建资源。Kyma将负责创建与应用程序相关的所有资源,以便在必要时使用事件组件。需要注意的一个重要资源是代理的创建。事件被发送到代理并转发给订户,在本例中,订户是函数

1。在Kyma环境中有两个订阅资源。使用以下代码列出Knative或Kyma订阅资源。

2。当通过命令行而不是控制台使用yaml文件创建触发器自定义资源时,我遇到了一个问题,触发器自定义资源从未"就绪",并收到以下消息:"无法获取订户的URI"。

如果创建触发器对您不起作用,请尝试列出该资源我可以通过将apiVersion改为v1而不是v1来工作服务.knative.dev/v1

3. 要完全理解Kyma的事件组件,需要掌握Knative的一般知识。我建议您通读Knative事件文档,以便更好地了解下面发生的事情!

4. 虽然我不希望这篇博文变成关于Knative的,但我认为理解代理和触发器组件可能会有用。在一个非常高的层次上,代理和触发器都支持事件过滤。

代理接收事件并根据触发器将其转发给订阅者。触发器允许过滤事件并确保订阅者只接收他们想要的事件。

5。请记住,Knative需要在集群中安装一个网络层。Kyma在安装过程中部署Istio服务Mesh,为您提供利用Knative资源所需的设置。

6。在触发之后,Application Connector教程中包含的带有事件的函数对我不起作用,因为我在尝试卷曲/v1/events端点时收到以下错误{"code":405,"error":"Method not allowed."}。因此,企业管理应用,大数据是啥,我使用WordPress博客文章来完成测试事件组件所需的步骤。

GitHub问题可以解决这个bug应用程序连接器教程无法命中事件终结点

7。我建议您为函数编写自己的源代码,而不是复制和粘贴教程中的示例。您总是可以从简单的"Hello World"开始,并从那里添加内容。