Knative是由谷歌發起的,它的目標是基于Kubernetes為整個開發生命周期提供幫助。
本書介紹了如何在實際的企業應用程序開發過程中使用Knative。本書首先介紹了如何有效地構建、部署和管理現代Serverless工作負載;然后講解了在實際的企業場景中應用Knative(包括高級事件)的方法;接著介紹了如何有效監控Knative Serverless應用程序;之后介紹了將Knative與CI/CD原則集成的方法,例如使用channel(管道)進行更快、更成功的生產部署。本書共有7章,從多個方面介紹了Knative在Kubernetes中的應用。
本書適合對Kubernetes核心概念有深入了解并希望通過Knative構建實際應用程序的架構師和開發人員閱讀。
1.Knative是為Kubernetes設計的Serverless平臺,本書是講解Knative入門與實踐的佳作;
2.本書包含50多個實用示例,可幫助讀者使用Knative解決這些問題;
3.每個示例均包含詳細的代碼和練習,以及相關原理的討論;
4.提供書中彩圖文件下載。
如果你對Serverless計算和Kubernetes核心資源(如部署、服務、路由和副本)比較熟悉,那么通過本書你將會了解如何在實際的企業應用程序開發中使用Knative。本書涵蓋自動擴縮容、構建事件、可觀測性、在OpenShift上部署Knative等多方面內容。
本書包含以下內容:
·高效地構建、部署、管理現代Serverless應用;
·在實際的企業場景(包含復雜的事件驅動)中應用 Knative;
·有效地監控 Knative 服務器應用;
·將 Knative 與 CI/CD 集成,例如使用管道可以實現更快、更成功的生產部署;
·基于Kubernetes和Knative部署豐富的企業集成模式和連接器生態系統——Apache Camel K。
伯爾·薩特(Burr Sutter),是Red Hat 的技術總監、終生開發的倡導者、社區組織者、布道師,他還在多項全球技術活動中擔任特邀發言人。他創立的DevNexus會議已成為美國第二大Java 技術交流活動。
卡梅什·桑帕斯(Kamesh Sampath), 是Red Hat的技術總監兼首席軟件工程師。他鼓勵人們使用Kubernetes / OpenShift、Service Mesh和Serverless技術,為Knative、Quarkus和Eclipse Che的發展做出了積極的貢獻。
前言 xvii
第 1章 Knative入門 1
1.1 安裝相關工具 1
1.1.1 問題 1
1.1.2 解決方案 1
1.1.3 討論 2
1.2 搭建Kubernetes集群 4
1.2.1 問題 4
1.2.2 解決方案 4
1.2.3 討論 4
1.3 安裝私有Kubernetes鏡像倉庫 5
1.3.1 問題 5
1.3.2 解決方案 5
1.3.3 討論 5
1.4 配置私有鏡像倉庫別名 5
1.4.1 問題 5
1.4.2 解決方案 6
1.4.3 討論 7
1.5 安裝Istio 8
1.5.1 問題 8
1.5.2 解決方案 8
1.5.3 討論 8
1.6 安裝Knative 9
1.6.1 問題 10
1.6.2 解決方案 10
1.6.3 討論 10
1.7 驗證容器環境 12
1.7.1 問題 12
1.7.2 解決方案 12
1.7.3 討論 13
1.8 為本書中的示例創建Kubernetes命名空間 13
1.9 查詢Kubernetes資源 14
第 2章 理解Knative服務模塊 16
2.1 Knative Service部署模型 16
2.2 部署Knative Service 18
2.2.1 問題 18
2.2.2 解決方案 18
2.2.3 討論 19
2.3 更新Knative配置 21
2.3.1 問題 21
2.3.2 解決方案 22
2.3.3 討論 23
2.4 設置Knative Service版本間分流 24
2.4.1 問題 24
2.4.2 解決方案 24
2.4.3 討論 24
2.5 藍綠發布 25
2.5.1 問題 25
2.5.2 解決方案 25
2.5.3 討論 26
2.6 金絲雀發布 27
2.6.1 問題 27
2.6.2 解決方案 27
2.6.3 討論 28
第3章 Knative自動擴縮容 30
3.1 配置Knative Service自動擴縮容 31
3.1.1 問題 31
3.1.2 解決方案 31
3.1.3 討論 31
3.2 觀察縮容到零功能 32
3.2.1 問題 32
3.2.2 解決辦法 32
3.2.3 討論 33
3.3 配置Knative Service以處理突發請求 33
3.3.1 問題 33
3.3.2 解決方案 33
3.3.3 討論 34
3.4 冷啟動延時 36
3.4.1 問題 36
3.4.2 解決方案 36
3.4.3 討論 38
第4章 Knative事件模塊 39
4.1 使用方法 39
4.2 使用事件源產生事件 41
4.2.1 問題 41
4.2.2 解決方案 41
4.2.3 討論 41
4.3 使用Knative事件接收器接收事件 42
4.3.1 問題 42
4.3.2 解決方案 42
4.3.3 討論 43
4.4 部署Knative事件服務 43
4.4.1 問題 43
4.4.2 解決方案 43
4.4.3 討論 44
4.5 連接事件源和服務 44
4.5.1 問題 44
4.5.2 解決方案 45
4.5.3 討論 45
4.6 部署Apache Kafka集群 46
4.6.1 問題 46
4.6.2 解決方案 46
4.6.3 討論 46
4.7 使用Knative事件模塊處理Apache Kafka事件 48
4.7.1 問題 48
4.7.2 解決方案 48
4.7.3 討論 49
4.8 使用Knative事件模塊處理Apache Kafka消息的自動擴容 51
4.8.1 問題 51
4.8.2 解決方案 52
4.8.3 討論 52
4.9 使用Kafka管道作為默認的Knative管道的后端 53
4.9.1 問題 53
4.9.2 解決方案 53
4.9.3 討論 54
4.10 使用Knative的管道和訂閱 54
4.10.1 問題 54
4.10.2 解決方案 55
4.10.3 討論 57
4.11 使用Knative事件模塊的代理和觸發器 58
4.11.1 問題 58
4.11.2 解決方案 58
4.11.3 討論 60
第5章 可觀測性 64
5.1 部署Prometheus和Grafana 64
5.1.1 問題 64
5.1.2 解決方案 65
5.1.3 討論 65
5.2 使用Prometheus收集指標 66
5.2.1 問題 66
5.2.2 解決方案 66
5.2.3 討論 66
5.3 安裝Jaeger 67
5.3.1 問題 67
5.3.2 解決方案 67
5.3.3 討論 68
5.4 部署可觀測的測試服務 68
5.4.1 問題 68
5.4.2 解決方案 68
5.4.3 討論 69
5.5 自定義kubectl輸出列 69
5.5.1 問題 69
5.5.2 解決方案 70
5.5.3 討論 70
5.6 限制Knative Service的可見性 70
5.6.1 問題 70
5.6.2 解決方案 70
5.6.3 討論 71
5.7 Grafana界面 71
5.8 監控Knative Service的自動擴縮容指標 73
5.8.1 問題 73
5.8.2 解決方案 73
5.8.3 討論 73
5.9 監控Knative Service的HTTP性能 78
5.9.1 問題 78
5.9.2 解決方案 78
5.9.3 討論 78
5.10 使用Jaeger追蹤Knative Service 81
5.10.1 問題 81
5.10.2 解決方案 81
5.10.3 討論 81
第6章 使用Apache Camel-K集成Serverless模式 85
6.1 使用Camel-K集成Serverless模式 86
6.1.1 問題 86
6.1.2 解決方案 86
6.1.3 討論 86
6.2 配置Camel-K使服務構建更快 87
6.2.1 問題 87
6.2.2 解決方案 87
6.2.3 討論 87
6.3 構建Camel-K集成 88
6.3.1 問題 88
6.3.2 解決方案 88
6.3.3 討論 90
6.4 運行Camel-K集成作為Knative Serverless 91
6.4.1 問題 91
6.4.2 解決方案 91
6.4.3 討論 93
6.5 在Knative事件模塊中使用Camel-K 94
6.5.1 問題 94
6.5.2 解決方案 94
6.5.3 討論 94
6.6 記錄并展示CloudEvents消息 95
6.6.1 問題 95
6.6.2 解決方案 95
6.6.3 討論 95
6.7 配置CamelSource到Knative事件模塊接收器 95
6.7.1 問題 95
6.7.2 解決方案 95
6.7.3 討論 96
6.8 使用Camel-K配置企業集成模式 97
6.8.1 問題 97
6.8.2 解決方案 98
6.8.3 討論 99
6.9 部署數據生產者 99
6.9.1 問題 99
6.9.2 解決方案 99
6.9.3 討論 101
6.10 部署數據處理者 101
6.10.1 問題 101
6.10.2 解決方案 101
6.10.3 討論 103
6.11 部署事件訂閱者 103
6.11.1 問題 103
6.11.2 解決方案 103
6.11.3 討論 104
6.12 使用Knative事件模塊過濾數據 104
6.12.1 問題 104
6.12.2 解決方案 104
6.12.3 討論 105
第7章 在OpenShift上使用Knative 107
7.1 在OpenShift上安裝Knative服務模塊 107
7.1.1 問題 107
7.1.2 解決方案 107
7.1.3 討論 109
7.2 在OpenShift上部署Knative Service 119
7.2.1 問題 119
7.2.2 解決方案 119
7.2.3 討論 119
7.3 驗證和調用Knative Service 122
7.3.1 問題 122
7.3.2 解決方案 122
7.3.3 討論 122