TOP
0
0
【簡體曬書區】 單本79折,5本7折,活動好評延長至5/31,趕緊把握這一波!
Knative實戰:基於Kubernetes的無服務器架構實踐(簡體書)
滿額折

Knative實戰:基於Kubernetes的無服務器架構實踐(簡體書)

人民幣定價:89 元
定  價:NT$ 534 元
優惠價:87465
領券後再享88折
海外經銷商無庫存,到貨日平均30天至45天
可得紅利積點:13 點
相關商品
商品簡介
作者簡介
名人/編輯推薦
目次

商品簡介

本書從架構設計、功能、原理、開發、運維5個維度對Knative進行了全面的剖析,系統地講解了基於Knative的無服務器架構解決方案。作者融合了在Kubernetes、Serverless領域的工程實踐,詳細介紹了Knative在服務管理、事件驅動、自動化構建部署方面的核心概念、架構設計及應用實踐。同時,通過大量的示例展示了Knative管理無服務器應用的過程。

全書共9章,分為4個部分:

第一部分 準備篇(第1~2章)

首先介紹了Serverless和Knative的概念和基礎知識,然後講解了Knative的架構設計和工作環境搭建;

第二部分 基礎篇(第3~5章)

首先分析了Knative的服務管理元件和事件驅動元件的功能和工作原理,然後講解了如何如何通過Tekton實現無服務器應用的CI/CD;

第三部分 實戰篇(第6章)

通過多個案例講解了如何基於Knative完成雲原生應用的設計實現;

第四部分 擴展篇(第7~9章)

詳細講解了Knative平臺的運維,包括Serving元件的擴展配置、日誌中心解決方案以及監控報警平臺的實現。


作者簡介

作者簡介 李志偉 某網雲原生實驗室負責人,容器雲領域專家。在Kubernetes、Istio、Serverless、DevOps工具等領域有深入的研究和實踐。熱心於雲原生技術的應用與推廣,曾榮獲“K8sMeetup中國社區”最受歡迎講師獎項。 遊楊 某網雲原生實驗室高級運維開發工程師。先後參與Kubernetes和Knative項目的落地與實施工作,擁有豐富的容器平臺實踐經驗,聚焦於Kubernetes、Serverless、CI/CD技術領域。

名人/編輯推薦

NO.1 作者經驗豐富

作者是雲原生、Serverless領域專家,多年經驗

NO.2 聚焦5個維度

從架構、功能、原理、開發、運維5維度全面剖析Knative

NO.3 全套解決方案

系統地講解基於Knative的無服務器架構解決方案

NO.4 包含大量案例

用大量案例展示用Knative管理Serverless應用過程


前 言

Serverless一直是開發者的美好願望,也是軟件發展目標最終回歸本質的選擇。隨著雲原生平臺逐漸成熟並成為主流解決方案,Serverless計算平臺已經有了長足的進步。2020年,行業中的各大Serverless計算平臺變得更加通用。例如,通過預留資源完全消除冷開機對延時的影響,使得延時敏感的在線應用也能夠使用Serverless方式構建。同時,Serverless生態不斷發展,在應用構建、安全、監控報警等領域湧現出了很多開源項目和創業公司,工具鏈越來越成熟。用戶對Serverless的接受度不斷提高,傳統企業也開始採用Serverless技術。Serverless正在如下幾方面持續演進。

1)Serverless的使用場景從偏離線業務進一步擴展到在線業務。以FaaS為代表的Serverless技術一開始都是從對響應時間不敏感、事件驅動的偏離線業務入手的。現在,我們已經看到,包括AWS Lambda Provisioned Capacity和Azure Functions Premium plan在內的產品都是讓使用者付出一點額外的成本來換取更短的響應時間。這對於在線業務來說,無疑是更適合的。

2)Serverless不僅賦予了應用彈性計算的能力,也推動了基礎設施和後端服務的無服務器化。業務代碼託管給Serverless平臺之後,即可實現自動擴縮容、按請求計費。但是,如果基礎設施和相關服務不具備實時擴縮容能力,那麼業務整體就不是彈性的。我們已經看到AWS圍繞Lambda對VPC網絡、資料庫連接池等資源做了大量實時彈性優化,相信其他廠商也會跟進,進而使行業整體加速基礎設施和各類雲服務的無服務器化。

3)以Knative為代表的開源解決方案受到越來越多的關注。儘管各個雲廠商都在大力推廣自己的Serverless產品,但是開發者普遍還是會擔心被廠商綁定,因此具備一定規模的組織會基於開源方案,如Knative,搭建自己的Serverless平臺。一旦某個開源方案成為主流,雲廠商就會主動去相容開源標準並增大社區投入。

4)Serverless開發者工具和框架會更加多樣。IDE、問題診斷、持續集成/發佈等配套的工具和服務會更加完善。我們將看到更多的成功案例和實踐。

5)Java持續發展,將成為Serverless平臺的主流語言之一。Serverless平臺要求應用的鏡像足夠小,以便能夠快速分發,同時要求應用的啟動時間極短。雖然在這些方面,Java和Node.js、Python等語言相比有差距,但是Java社區一直在不斷努力。我們看到Java通過Java 9 Modules以及GraalVM Native Image等技術在不斷“瘦身”。主流框架Spring也開始擁抱GraalVM,而新的框架如Quarkus和Micronaut也在力爭突破。期待Java在Serverless領域給人煥然一新的感覺。

6)解決FaaS狀態傳遞的中間層(加速層)研究或產品有望得到突破。未來,Serverless在函數計算場景下最大的挑戰是函數之間串聯需要狀態傳遞,以及函數處理時頻繁和外部交互帶來的時延放大,等等。在傳統架構下,狀態傳遞和函數處理都是在一個程式進程內部完成的。上述挑戰需要通過可計算中間層(加速層)來解決。可計算中間層是未來學術研究和產品攻堅的方向之一。

7)基於WebAssembly(WASM)的FaaS方案有望出現。Docker創始人Solomon Hykes曾說:“如果2008年有WASM和WASI,我們當時就沒有必要創造Docker了。”這句話在一定程度上說明了WASM的重要性。雖然當下WASM更多是作為一種運行在流覽器端的技術被人瞭解,但是它具備非常優秀的安全隔離能力、極快的啟動速度,並支援超過20種語言。那麼,為什麼不能讓它運行在服務端呢?這些技術特性都非常契合FaaS的要求。

事實上,隨著Knative社區的快速發展壯大,Knative已經成為Kubernetes平臺上最佳的Serverless解決方案。與傳統的FaaS平臺不同,Knative的服務管理並不需要統一的開發框架支援,應用只要封裝成可運行的容器即可。這極大地擴展了Knative的適用範圍,同時也使得傳統微服務可以更加平滑地轉換成Serverless應用。

基於此,我們希望能夠為開發者提供一本系統學習Knative的工具書,從Serverless的概念到Knative的實戰,努力將Knative的全貌展現給讀者,也希望Knative能夠為企業提升工程效率、降低計算成本。

本書內容

全書分為4篇,具體內容如下。

準備篇(第1~2章):通過介紹Serverless與Knative項目的技術背景、架構設計以及相關的雲原生平臺基礎設施,幫助讀者瞭解Serverless技術。通過快速搭建Knative測試平臺,使讀者直觀地感受Knative是如何管理應用的。

基礎篇(第3~5章):通過對Knative Serving和Eventing元件、CI/CD平臺的介紹,説明讀者全面瞭解各個元件的基礎概念、架構設計及原理。

實戰篇(第6章):採用多個實際範例來驗證Knative的服務管理能力以及事件驅動基礎設施的能力。

擴展篇(第7~9章):詳細介紹了運維Knative平臺需要關注的內容,包括Serving的高級配置、日誌中心、監控平臺。

本書的讀者物件

對Serverless技術感興趣的讀者。

想要將Knative引入當前技術棧的架構師。

想要採用Serverless技術的應用開發者。

想要自己維護Knative Serverless平臺的運維開發人員。

勘誤與支持

如果你在閱讀本書的過程中有任何問題或者建議,可以在GitHub的源碼倉庫提交Issue或者以PR的方式進行交流。我們會對你提出的問題、建議進行梳理,並在本書後續版本中及時做出勘誤與更新。

Knative是一個開源項目,書中使用了官方的示例原始程式碼,讀者可以通過以下網站獲取相關內容。

Knative項目官網。

Knative項目原始程式碼。

本書在GitHub上的源碼倉庫。

致謝

在本書的寫作過程中,作者得到了眾多同事及朋友的鼓勵,在此對他們表示感謝。感謝機械工業出版社華章公司的策劃編輯楊福川老師、責任編輯董惠芝老師,是他們的鼓勵才讓我們能夠堅持寫完本書。也感謝Knative開源社區的貢獻者,是他們辛勤、無私的工作,讓我們得以與Serverless如此近距離接觸。謝謝大家!


目次

前言

準備篇

第1章全面認識Knative 2

1.1Serverless的前世今生 2

1.1.1Serverless簡介 2

1.1.2Serverless的主要特徵 3

1.1.3Serverless的優缺點 3

1.1.4Serverless的發展現狀 4

1.1.5Serverless的使用場景 4

1.2什麼是Knative 4

1.2.1Knative的產生背景及發展歷程 5

1.2.2Knative的架構設計 5

1.2.3Knative的主要受眾群 6

1.2.4Knative的商業託管服務產品 7

1.3Knative開發運維需要具備的基礎知識 7

1.3.1容器 7

1.3.2Kubernetes 8

1.3.3Istio 9

1.4本章小結 10

第2章搭建Knative運行環境 11

2.1在Kubernetes平臺上安裝Knative 11

2.1.1Istio平臺的安裝 12

2.1.2安裝Knative Serving組件 13

2.1.3安裝Knative Eventing組件 14

2.1.4安裝可觀察性元件 14

2.2部署HelloWorld應用 15

2.2.1Serving Hello World範例 15

2.2.2Eventing Hello World範例 16

2.3本章小結 19

基礎篇

第3章Knative的服務管理元件Serving 22

3.1Serving的架構設計 22

3.2Knative相關的Kubernetes Service 23

3.3Autoscaler的工作流程 24

3.4Queue Proxy 25

3.5本章小結 26

第4章Knative的事件驅動組件Eventing 27

4.1Eventing的架構設計 27

4.1.1總體設計目標 28

4.1.2Eventing的基礎概念 28

4.1.3事件傳遞方式 29

4.2關於CloudEvent 30

4.2.1CloudEvent簡介 30

4.2.2術語 30

4.2.3內容屬性 32

4.2.4事件數據 34

4.2.5大小限制 34

4.2.6隱私與安全 35

4.2.7示例 35

4.3事件源 35

4.3.1核心事件源 35

4.3.2社區貢獻的事件源 36

4.3.3Google Cloud Source 36

4.4Broker/Trigger事件模型 36

4.4.1工作原理 37

4.4.2預設代理配置 37

4.4.3Broker/Trigger模型範例 38

4.5事件註冊表 39

4.5.1事件發現 39

4.5.2事件訂閱 40

4.5.3 填充事件註冊表 42

4.6 事件流控制 43

4.6.1 Sequence 43

4.6.2 Parallel 44

4.7 事件通道 45

4.7.1 當前可用的通道 45

4.7.2 默認通道設置 45

4.8 本章小結 46

第5章 基於Tekton的CI/CD平臺 47

5.1 Tekton概述 47

5.1.1 Tekton的優勢 47

5.1.2 Tekton的組件構成 48

5.1.3 Tekton的資源物件 48

5.2 Tekton的概念模型 49

5.2.1 Step、Task和Pipeline 49

5.2.2 輸入與輸出資源 50

5.2.3 TaskRun與PipelineRun 51

5.2.4 Tekton的運作方式 51

5.3 Tekton Pipeline資源物件詳解 52

5.3.1 Task 52

5.3.2 TaskRun 66

5.3.3 Pipeline 74

5.3.4 PipelineRun 97

5.3.5 條件資源 111

5.3.6 變數替換 113

5.3.7 基於Git與Docker Registry的身份驗證 117

5.3.8 基於Kubectl向Kubernetes集群持續部署 124

5.4 Trigger 126

5.4.1 TriggerTemplate 126

5.4.2 TriggerBinding 128

5.4.3 EventListener 131

5.4.4 將EventListener暴露給外部 138

5.4.5 ClusterTriggerBinding 138

5.4.6 CEL運算式擴展 139

5.5 Dashborad簡介 140

5.5.1 Dashboard主要支持功能 140

5.5.2 Dashboard常用功能示例 141

5.6 安裝Tekton Pipeline及相關組件 143

5.6.1 Tekton Pipeline安裝 143

5.6.2 Tekton Dashborad安裝 145

5.6.3 Tekton Trigger安裝 145

5.7 應用CI/CD配置示例 146

5.7.1 Java語言配置示例 146

5.7.2 PHP語言配置示例 151

5.8 本章小結 155

實戰篇

第6章 基於Knative的雲原生應用的設計實現 158

6.1 雲原生應用的設計原則 158

6.2 使用Knative的服務管理元件管理應用 160

6.2.1 部署一個Knative Service 161

6.2.2 更新Knative Service Configuration 164

6.2.3 流量分發到不同版本 166

6.2.4 藍綠部署與灰度發佈 167

6.2.5 Knative Service的彈性伸縮配置 170

6.3 使用事件驅動元件解耦服務依賴 172

6.3.1 部署一個Knative事件驅動應用 172

6.3.2 使用通道與訂閱方式傳遞事件 175

6.3.3 與Apache Kafka集成 177

6.3.4 ContainerSource事件源 180

6.3.5 PingSource事件源 182

6.3.6 Parallel 183

6.3.7 Sequence 187

6.3.8 SinkBinding 190

6.3.9 GitHub事件源 191

6.4 本章小結 194

擴展篇

第7章 Serving元件的擴展配置 196

7.1 自動擴縮容的配置 196

7.1.1 全域或修訂版範圍設置 196

7.1.2 Class 197

7.1.3 度量指標 198

7.1.4 目標值 198

7.1.5 縮放邊界 202

7.1.6 KPA特性設置 203

7.2 路由管理 208

7.2.1 定制Knative服務的主功能變數名稱 208

7.2.2 DNS泛功能變數名稱解析配置 211

7.2.3 服務的可見範圍控制 212

7.3 網絡與安全 213

7.3.1 證書管理工具cert-manager 213

7.3.2 手動配置TLS證書 214

7.3.3 自動配置TLS證書 216

7.4 運維相關配置 220

7.4.1 從私有容器鏡像倉庫部署應用 220

7.4.2 元件高可用配置 221

7.5 本章小結 222

第8章 日誌中心 223

8.1 基於EFK的日誌中心解決方案 223

8.1.1 EFK基礎功能介紹 223

8.1.2 應用日誌格式說明 223

8.1.3 添加Fluentd配置 224

8.1.4 配置Kibana索引模式 225

8.1.5 數據搜索展示 225

8.1.6 創建可視化圖表 225

8.1.7 創建儀錶盤 227

8.2 本章小結 229

第9章 監控報警平臺 230

9.1 基於Prometheus和Grafana的監控報警平臺 230

9.1.1 Prometheus 230

9.1.2 Grafana 233

9.2 Knative儀錶盤 233

9.3 本章小結 238

附錄 239

您曾經瀏覽過的商品

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 465
海外經銷商無庫存,到貨日平均30天至45天

暢銷榜

客服中心

收藏

會員專區