Knative 是一個基于 Kubernetes 的,用于構建、部署和管理現代 serverless 應用的平臺。Getting Started with Knative 是一本由 Pivotal 公司贊助 O’Reilly 出品的電子書,公眾號后臺回復“knative”獲取英文版下載地址。本書中文版由 ServiceMesher 社區自發翻譯系列文章,這是該系列的第8章,至此全書翻譯完畢,我們將后續為大家提供PDF。
還有很多的項目加入到年輕的 Knative 生態系統,且趨勢是不斷增加的。有些已經將其他現有的開源無服務器架構(serverless)的框架帶到 Knative 上。例如,Kwsk 就是努力用 Knative 來代替大部分 Apache OpenWhisk 基礎服務器組件。其他開源的無服務器架構(serverless)項目專門針對 Knative 而構建,甚至幫助完善 Knative 上游體系。例如,riff 項目已經提供了一組工具來幫助簡化構建函數(Functions)和使用 Knative。本章將簡要介紹使用 riff 項目團隊的一些工具在 Knative 上構建和運行函數(Functions)。
通過第 2 章中的 Hello World 示例,可以看出將現存的鏡像從容器倉庫部署到 Knative 是非常容易的。第 3 章中的 Kaniko 示例以及示例 6-1 中的 Buildpack 方式演示了如何為 Knative 構建和部署簡單的 12-factor 應用程序。到目前為止,這些例子都集中在作為軟件單元的容器或應用程序上?,F在回想一下第 1 章中提及函數(functions),試想將一個函數部署到 Knative 是什么樣的?答案是它看起來幾乎與容器和應用程序一樣。是因為有了 Build 模塊,Knative 可以將您的函數(function)代碼轉換為容器,其方式與任何應用程序代碼相似。
什么是函數(Function)?應用程序由代碼組成,函數(Function)也是如此。那么函數(Function)有什么特別之處呢?難道它不是一個應用程序嗎?應用程序一般由從前端 UI 到后端數據庫的許多組件以及其間的所有處理組成。相比之下,函數通常只是一小段代碼,具有單一目的,可以快速和異步地運行。它通常也由事件觸發,而不是由用戶在請求/響應場景中直接調用。
回想一下第 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
const express = require('express');const app = express();app.post('/', function (req, res) { let body = ''; req.on('data', chunk => { body += chunk.toString(); }); req.on('end', () => { if (isNaN(body)) res.sendStatus(400); else { var square = body ** 2; res.send(square.toString());} });});var port = 8080;app.listen(port, function () { console.log('Listening on port', port);});
我們可以使用示例 6-1 中的相同 Buildpack 來構建此函數并將其部署到 Knative。又如例 8-2,它也是使用 Node.js 編寫的一個函數,它不是一個完整的 Express 應用程序,而僅僅由一個函數組成,不包含任何其他 Node.js 模塊。
Example 8-2. knative-function-demo/square.js
module.exports = (x) => x ** 2
Knative 支持這一點,因為它具有 Build 模塊提供的靈活性。為了構建和部署這樣的代碼到 Knative,需要一個自定義的構建模板將這個簡單的僅含函數的代碼轉換為可運行的 Node.js 應用程序。例 8-2 中的代碼使用了function invokers特別支持的編程模型,function invokers 是riff 項目一部分的。riff 是 Pivotal 的一個開源項目,構建于 Knative 之上,它提供了一些很棒的東西:用于安裝 Knative 和管理在其上部署的函數(functions)的 CLI,以及使我們能夠編寫像例 8-2 中代碼的 function invokers。這些 invokers 負責執行函數(functions),例如我們見過的 Node.js 示例,或 Spring Cloud Functions,甚至是 Bash 腳本。與 Build 模板一樣,invokers 也是開源的,并且隨著 riff 項目的成熟,invokers支持的調用的函數種類會越來越多。請務必查看 https://project-riff.io 了解更多信息!
在繼續學習的過程中,有大量圍繞 Knative 構建相關的文檔、示例以及演示可以供您閱讀和參考。最好的當然是 GitHub 倉庫中 Knative Docs,它不僅包含有關 Knative 的每一部分如何工作的詳細說明,而且還有更多的演示和加入社區的鏈接,例如 Knative Slack 頻道或郵件列表。
我們非常感謝您花在我們的書本上的時間,并希望對您開始上手使用 Knative 有幫助。我們可以留給您的最好建議就是要勤寫代碼并開始構建一些東西,無論大小。通過犯錯并學習如何解決問題來探索和學習,與他人分享你學到的東西!Knative 的社區非常年輕,但成長速度非???我們希望看到你成為它的一員。
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
vb常用控件?VB6.0中有很多控件,在VB6.0中加載后,可以在工具箱中找到常用的控件,如圖片框、標簽、文本框、按鈕命令、時鐘定時器等。其他類型的高級控件,如工具欄、狀態欄、進度條等。,以及各種Activvb6.0進度條progressbar自定義顏色?請改用picturebox或shape control,并更改寬度來控制它。vb6.0通用對話框控件是哪個?說明常用對話框控件(COMDLG32...
手機怎么進入路由器修改路由器參數?除了用電腦修改路由器參數,我們還可以用手機來配置。這里用紅米Not手機怎么改ip地址?可以修改。以OPPO R9S手機為例,修改手機IP地址的方法如下:首先,單擊 "設置 "OPPO R9S手機桌面圖標。第二,進入設置后,選擇 "無線局域網 "選項。第三,然后點擊當前連接的網絡進入。請問怎樣來更改QQ上顯示的地理位置?這可以 不要修改。這是騰訊根據用戶的IP地址判...
歪歪如何設置鮮花?斜置花的方法如下:1。當等級達到16級時,可以送出一束鮮花。在我的花里,你可以設定一束花的數目。2. 渠道經理可以根據當前渠道刷花的情況,禁止送花或調整花的大小?;ǖ拇笮〔煌簑aiwai voice是廣州多灣信息技術有限公司開發的基于互聯網的團隊語音通信平臺,是一款功能強大、音質清晰、安全穩定、不占用資源、適合游戲玩家的免費語音軟件。在網絡上通常用YY來表示。簡而言之,它是一種...