下一步
通过第 2 章中的 Hello World 示例,可以看出将现存的镜像从容器仓库部署到 Knative 是非常容易的。第 3 章中的 Kaniko 示例以及示例 6-1 中的 Buildpack 方式演示了如何为 Knative 构建和部署简单的十二要素(12-factor)应用程序。到目前为止,这些例子都集中在作为软件单元的容器或应用程序之上。现在回想一下第 1 章中提及函数,试想将一个函数部署到 Knative 是什么样的?答案是它看起来几乎与容器和应用程序一样。是因为有了 Build 模块,Knative 可以将您的函数代码转换为容器,其方式与应用程序代码相似。
回想一下第 6 章中的 Cloud Foundry Buildpacks 示例。例 6-1 中显示的 service.yaml 文件引用了一个完整的 Node.js Express 应用程序,该应用程序的功能是在给定端口上侦听 GET 请求然后返回 “Hello World” 信息。如果我们的程序是接受数字作为输入,返回该数字的平方作为结果的函数,而不是 Hello World 应用程序呢?此代码可能类似于我们在示例 8-1 中看到的内容。
Example 8-1. knative-function-app-demo/square-app.js
Example 8-2. knative-function-demo/square.js
Knative 支持这一点,因为它具有 Build 模块提供的灵活性。为了构建和部署这样的代码到 Knative,需要一个自定义的构建模板将这个简单的仅含函数的代码转换为可运行的 Node.js 应用程序。例 8-2 中的代码使用了 function invokers 特别支持的编程模型,function invokers 是 riff 项目一部分的。 riff 是 Pivotal 的一个开源项目,构建于 Knative 之上,它提供了一些很棒的东西:用于安装 Knative 和管理在其上部署的函数的 CLI,以及使我们能够编写像例 8-2 中代码的 function invokers。这些 invokers 负责执行函数,例如我们见过的 Node.js 示例,或 Spring Cloud Functions,甚至是 Bash 脚本。与 Build 模板一样,invokers 也是开源的,并且随着 riff 项目的成熟,invokers 支持调用的函数种类会越来越多。请务必查看 https://project-riff.io 了解更多信息!
拓展阅读
我们非常感谢你花时间在我们的这本书上,希望对你开始上手使用 Knative 有帮助。我们可以留给你的最好建议就是要勤写代码并开始构建一些东西,无论大小。通过犯错并学习如何解决问题来探索和学习,与他人分享你学到的东西!Knative 的社区非常年轻,但成长速度非常快,我们希望看到你成为它的一员。