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