Knative是由谷歌發(fā)起的,它的目標是基于Kubernetes為整個開發(fā)生命周期提供幫助。
本書介紹了如何在實際的企業(yè)應用程序開發(fā)過程中使用Knative。本書首先介紹了如何有效地構(gòu)建、部署和管理現(xiàn)代Serverless工作負載;然后講解了在實際的企業(yè)場景中應用Knative(包括高級事件)的方法;接著介紹了如何有效監(jiān)控Knative Serverless應用程序;之后介紹了將Knative與CI/CD原則集成的方法,例如使用channel(管道)進行更快、更成功的生產(chǎn)部署。本書共有7章,從多個方面介紹了Knative在Kubernetes中的應用。
本書適合對Kubernetes核心概念有深入了解并希望通過Knative構(gòu)建實際應用程序的架構(gòu)師和開發(fā)人員閱讀。
1.Knative是為Kubernetes設計的Serverless平臺,本書是講解Knative入門與實踐的佳作;
2.本書包含50多個實用示例,可幫助讀者使用Knative解決這些問題;
3.每個示例均包含詳細的代碼和練習,以及相關原理的討論;
4.提供書中彩圖文件下載。
如果你對Serverless計算和Kubernetes核心資源(如部署、服務、路由和副本)比較熟悉,那么通過本書你將會了解如何在實際的企業(yè)應用程序開發(fā)中使用Knative。本書涵蓋自動擴縮容、構(gòu)建事件、可觀測性、在OpenShift上部署Knative等多方面內(nèi)容。
本書包含以下內(nèi)容:
·高效地構(gòu)建、部署、管理現(xiàn)代Serverless應用;
·在實際的企業(yè)場景(包含復雜的事件驅(qū)動)中應用 Knative;
·有效地監(jiān)控 Knative 服務器應用;
·將 Knative 與 CI/CD 集成,例如使用管道可以實現(xiàn)更快、更成功的生產(chǎn)部署;
·基于Kubernetes和Knative部署豐富的企業(yè)集成模式和連接器生態(tài)系統(tǒng)——Apache Camel K。
伯爾·薩特(Burr Sutter),是Red Hat 的技術總監(jiān)、終生開發(fā)的倡導者、社區(qū)組織者、布道師,他還在多項全球技術活動中擔任特邀發(fā)言人。他創(chuàng)立的DevNexus會議已成為美國第二大Java 技術交流活動。
卡梅什·桑帕斯(Kamesh Sampath), 是Red Hat的技術總監(jiān)兼首席軟件工程師。他鼓勵人們使用Kubernetes / OpenShift、Service Mesh和Serverless技術,為Knative、Quarkus和Eclipse Che的發(fā)展做出了積極的貢獻。
前言 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 驗證容器環(huán)境 12
1.7.1 問題 12
1.7.2 解決方案 12
1.7.3 討論 13
1.8 為本書中的示例創(chuàng)建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 藍綠發(fā)布 25
2.5.1 問題 25
2.5.2 解決方案 25
2.5.3 討論 26
2.6 金絲雀發(fā)布 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以處理突發(fā)請求 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 使用事件源產(chǎn)生事件 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事件模塊的代理和觸發(fā)器 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 監(jiān)控Knative Service的自動擴縮容指標 73
5.8.1 問題 73
5.8.2 解決方案 73
5.8.3 討論 73
5.9 監(jiān)控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使服務構(gòu)建更快 87
6.2.1 問題 87
6.2.2 解決方案 87
6.2.3 討論 87
6.3 構(gòu)建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配置企業(yè)集成模式 97
6.8.1 問題 97
6.8.2 解決方案 98
6.8.3 討論 99
6.9 部署數(shù)據(jù)生產(chǎn)者 99
6.9.1 問題 99
6.9.2 解決方案 99
6.9.3 討論 101
6.10 部署數(shù)據(jù)處理者 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事件模塊過濾數(shù)據(jù) 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 驗證和調(diào)用Knative Service 122
7.3.1 問題 122
7.3.2 解決方案 122
7.3.3 討論 122