Knative 實戰:基於 Kubernetes 的無服務器架構實踐
內容描述
本書從架構設計、功能、原理、開發、運維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組件的擴展配置、日誌中心解決方案以及監控報警平臺的實現。
隨著雲原生技術的快速發展,無服務器架構再次成為熱門技術重回人們的視線。Knative是新一代開源Serverless解決方案的代表。它建立在容器與Kubernetes基礎上,是雲原生生態的重要組成部分。
Serverless正在改變應用軟件的開發和運維模式。作為一種面向開發者友好的雲計算服務,Serverless實現了將業務需求與技術需求解耦,降低了應用的復雜度,提高了應用的開發效率。Serverless具有自動彈性擴展、資源按需分配的特點,大幅減少了運維工作量,提高了計算資源的利用率。
通過閱讀本書,你將:
全面瞭解Serverless的主要特點及發展現狀
深入瞭解Knative服務管理與事件驅動組件的工作原理
掌握通過Tekton實現無服務器應用的CI/CD
掌握基於Knative的雲原生應用設計
瞭解Knative的運維管理工具(日誌中心、監控報警平臺)
目錄大綱
前言
準備篇
第1章 全面認識Knative 2
1.1 Serverless的前世今生 2
1.1.1 Serverless簡介 2
1.1.2 Serverless的主要特徵 3
1.1.3 Serverless的優缺點 3
1.1.4 Serverless的發展現狀 4
1.1.5 Serverless的使用場景 4
1.2 什麽是Knative 4
1.2.1 Knative的產生背景及發展歷程 5
1.2.2 Knative的架構設計 5
1.2.3 Knative的主要受眾群 6
1.2.4 Knative的商業托管服務產品 7
1.3 Knative開發運維需要具備的基礎知識 7
1.3.1 容器 7
1.3.2 Kubernetes 8
1.3.3 Istio 9
1.4 本章小結 10
第2章 搭建Knative運行環境 11
2.1 在Kubernetes平臺上安裝Knative 11
2.1.1 Istio平臺的安裝 12
2.1.2 安裝Knative Serving組件 13
2.1.3 安裝Knative Eventing組件 14
2.1.4 安裝可觀察性組件 14
2.2 部署HelloWorld應用 15
2.2.1 Serving Hello World範例 15
2.2.2 Eventing Hello World範例 16
2.3 本章小結 19
基礎篇
第3章 Knative的服務管理組件Serving 22
3.1 Serving的架構設計 22
3.2 Knative相關的Kubernetes Service 23
3.3 Autoscaler的工作流程 24
3.4 Queue Proxy 25
3.5 本章小結 26
第4章 Knative的事件驅動組件Eventing 27
4.1 Eventing的架構設計 27
4.1.1 總體設計目標 28
4.1.2 Eventing的基礎概念 28
4.1.3 事件傳遞方式 29
4.2 關於CloudEvent 30
4.2.1 CloudEvent簡介 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.3 Google Cloud Source 36
4.4 Broker/Trigger事件模型 36
4.4.1 工作原理 37
4.4.2 默認代理配置 37
4.4.3 Broker/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
作者介紹
李志偉
網雲原生實驗室負責人,容器雲域專家。
在Kubernetes、Istio、Serverless、DevOps工具等域有深入的研究和實踐。熱心於雲原生技術的應用與推廣,曾榮獲“K8sMeetup中國社區受歡迎講師獎項。
遊楊
網雲原生實驗室高級運維開發工程師。
先後參與Kubernetes和Knative項目的落地與實施工作,擁有豐富的容器平台實踐纟巠驗,聚焦於Kubernetes、Serverless、CI/CD技術域。