內容簡介
這是一部從開發(fā)和運維兩種視角講解如何基于OpenShift構建云原生應用的著作。三位作者分別來自RedHat官方和微軟,都是OpenShift和云原生領域的布道者和領軍人物,經驗非常豐富。
全書一共14章,秉承全棧理念講解了構建云原生應用需要掌握的云原生技術、OpenShift技術以及開源分布式中間件技術。
第壹部分:云原生篇(第1~11章)
首先,講解了云原生和與之相關的分布式開源中間件的技術,如基于云原生的Java實現(xiàn)等;其次,講解了云原生構建的6大步驟及其相關的技術和方法,如發(fā)展DevOps文化、構建分布式緩存等;*后,講解了人工智能在容器云上的實踐。
第二部分:OpenShift篇(第12~14章)
詳細講解了OpenShift 集群的規(guī)劃、管理、離線安裝與部署,以及OpenShift 在公有云上的*佳實踐。
序言1
序言2
前言
第一部分 云原生篇
第1章 云原生應用的構建之路2
1.1 云原生應用2
1.1.1 什么是云原生應用2
1.1.2 云原生應用開發(fā)和部署的四大原則3
1.2 云原生應用構建之路的步驟3
1.3 借助Red Hat開源解決方案實現(xiàn)云原生6
1.4 本章小結8
第2章 傳統(tǒng)Linux上構建應用包9
2.1 什么是RPM9
2.2 從源代碼構建軟件10
2.2.1 本機編譯代碼10
2.2.2 解釋型代碼11
2.3 給軟件打補丁12
2.4 安裝軟件13
2.5 源代碼生成tar.gz包14
2.6 RPM打包15
2.6.1 什么是SPEC文件15
2.6.2 書寫SPEC文件17
2.7 構建二進制RPM包19
2.7.1 構建Source RPM和二進制RPM19
2.7.2 檢查并安裝RPM包21
2.8 如何在異構環(huán)境重新編譯RPM22
2.9 本章小結24
第3章 云原生Java的實現(xiàn)25
3.1 Java應用的發(fā)展25
3.1.1 Java EE架構25
3.1.2 Java應用的打包與JDK28
3.2 Kubernetes時代Java面臨的問題33
3.3 Quarkus的架構33
3.4 驗證Quarkus功能34
3.4.1 編譯和部署Quarkus應用34
3.4.2 Quarkus的熱加載39
3.4.3 在OpenShift中部署Quarkus應用程序41
3.4.4 Quarkus應用添加REST Client擴展45
3.4.5 Quarkus應用的容錯能力50
3.5 Quarkus的事務管理52
3.6 本章小結53
第4章 DevOps和DevSecOps的實現(xiàn)54
4.1 什么是DevOps54
4.1.1 從瀑布式開發(fā)到敏捷開發(fā)54
4.1.2 從敏捷開發(fā)到DevOps55
4.2 DevOps的技術實現(xiàn)56
4.3 在OpenShift上實現(xiàn)DevOps58
4.3.1 S2I與Jenkins結合使用實現(xiàn)CI/CD59
4.3.2 常用DevOps工具介紹61
4.3.3 OpenShift 3 Jenkins Pipeline工作流分析64
4.4 OpenShift 4.2中的OpenShift Pipeline69
4.4.1 Tekton概述69
4.4.2 安裝OpenShift Pipeline71
4.4.3 驗證OpenShift Pipeline73
4.5 DevSecOps在OpenShift上的實現(xiàn)79
4.5.1 DevSecOps的架構79
4.5.2 DevSecOps中的安全工具80
4.5.3 DevSecOps在OpenShift上的架構80
4.5.4 DevSecOps所依賴的OpenShift實驗環(huán)境81
4.5.5 DevSecOps Pipeline分析83
4.5.6 執(zhí)行DevSecOps Pipeline89
4.6 本章小結94
第5章 構建分布式消息中間件和數(shù)據(jù)流平臺95
5.1 服務之間的通信95
5.1.1 服務之間的通信方式95
5.1.2 異步通信實現(xiàn)97
5.1.3 消息的分類97
5.2 AMQ在OpenShift上的企業(yè)級實現(xiàn)98
5.2.1 標準消息中間件規(guī)范98
5.2.2 查看AMQ的多協(xié)議支持101
5.2.3 創(chuàng)建持久隊列101
5.2.4 AMQ的HA104
5.2.5 AMQ的Cluster105
5.2.6 AMQ在OpenShift上的部署107
5.3 Kafka在OpenShift上的實現(xiàn)113
5.3.1 Kafka的架構113
5.3.2 Kafka集群在OpenShift集群上的實現(xiàn)方式114
5.3.3 在OpenShift上部署Kafka集群115
5.3.4 配置Kafka外部訪問121
5.3.5 配置Mirror Maker124
5.4 本章小結128
第6章 構建分布式緩存129
6.1 IT架構的演進129
6.1.1 傳統(tǒng)IT架構129
6.1.2 分布式IT架構130
6.1.3 分布式IT架構下的緩存130
6.1.4 內存數(shù)據(jù)網格的應用場景131
6.2 內存數(shù)據(jù)網格技術實現(xiàn):Infinispan131
6.2.1 Infinispan的兩種部署模式132
6.2.2 Infinispan的三種配置模式133
6.2.3 Infinispan功能驗證134
6.2.4 在OpenShift上實現(xiàn)Infinispan138
6.3 內存數(shù)據(jù)網格技術實現(xiàn):Redis141
6.3.1 Sentinel + Redis一主多從141
6.3.2 Redis Cluster + Redis多主多從142
6.3.3 Redis在OpenShift上的實現(xiàn)143
6.4 Infinispan和Redis的對比150
6.5 本章小結150
第7章 構建業(yè)務流程自動化151
7.1 規(guī)則與流程151
7.2 企業(yè)規(guī)則的開源實現(xiàn)153
7.2.1 KIE的架構153
7.2.2 Drools的架構155
7.3 企業(yè)級規(guī)則自動化方案157
7.3.1 Red Hat Decision Manager架構157
7.3.2 RHDM在OpenShift上的實現(xiàn)架構158
7.4 以抵押貸款應用展示RHDM功能161
7.4.1 在RHDM上導入抵押貸款應用源碼161
7.4.2 抵押貸款應用源碼分析163
7.4.3 探索抵押貸款應用165
7.4.4 復雜規(guī)則的處理168
7.4.5 驗證決策模型和表示法(DMN)格式規(guī)則171
7.5 Red Hat流程自動化方案174
7.5.1 Red Hat Process Automation Manager架構174
7.5.2 RHPAM與微服務的集成案例環(huán)境準備176
7.5.3 RHPAM與微服務的集成實驗流程驗證185
7.6 本章小結194
第8章 云原生應用的安全195
8.1 云原生應用的認證與授權195
8.2 OpenShift的單點登錄197
8.2.1 OpenShift的認證方式197
8.2.2 OpenShift與Keycloak的集成198
8.3 實現(xiàn)Web應用單點登錄209
8.4 云原生應用出口流量限制219
8.4.1 配置出口防火墻219
8.4.2 配置出口路由器220
8.5 本章小結224
第9章 分布式集成與API管理225
9.1 分布式集成225
9.1.1 分布式集成方案225
9.1.2 基于OpenShift 3.11和Camel的微服務集成227
9.1.3 Camel K項目介紹251
9.2 API管理方案253
9.2.1 Red Hat 3Scale的技術架構與實現(xiàn)效果253
9.2.2 Red Hat 3Scale對容器化應用的管理255
9.3 本章小結262
第10章 云原生應用與Serverless的結合263
10.1 無服務器架構Serverless263
10.1.1 應用架構的演進263
10.1.2 基礎架構的演進264
10.1.3 Serverless的技術種類265
10.1.4 OpenWhisk的核心概念266
10.1.5 基于OpenShift集群部署的OpenWhisk267
10.2 Serverless與IoT的配合270
10.2.1 場景描述270
10.2.2 創(chuàng)建并驗證第一個Action:formatInput271
10.2.3 創(chuàng)建并驗證第二個Action:enricher274
10.2.4 將兩個Action鏈接276
10.2.5 創(chuàng)建并驗證第三個Action:geofence277
10.2.6 驗證包含三個Action的序列279
10.3 本章小結282
第11章 人工智能在容器云上的實踐283
11.1 Caffe2和Jupyter Notebook介紹283
11.2 在OpenShift集群中部署Caffe2284
11.3 運行代碼分析287
11.3.1 整體代碼分析287
11.3.2 運行代碼287
11.4 Open Data Hub的簡介與展示299
11.4.1 Open Data Hub簡介299
11.4.2 Open Data Hub的安裝300
11.4.3 Open Data Hub的基本功能展示306
11.5 本章小結307
第二部分 OpenShift篇
第12章 集群規(guī)劃與管理310
12.1 集群規(guī)劃310
12.1.1 裸金屬還是虛擬機311
12.1.2 容量評估315
12.1.3 網絡考量316
12.1.4 集群的部署考量319
12.1.5 拉伸集群—跨數(shù)據(jù)中心部署322
12.1.6 聯(lián)邦集群322
12.2 集群管理和增強338
12.2.1 多集群管理門戶338
12.2.2 集群上應用的災難備份/恢復策略342
12.2.3 啟動OpenShift上的硬件加速351
12.3 本章小結363
第13章 OpenShift 4集群離線部署詳解與簡化364
13.1 極簡環(huán)境規(guī)劃364
13.2 使用Helper節(jié)點工具輔助安裝部署365
13.3 安裝配置確認和解析367
13.3.1 DNS手動配置及解析367
13.3.2 負載均衡器手動配置及解析369
13.3.3 WebServer手動配置及解析371
13.3.4 配置離線鏡像倉庫/還原鏡像371
13.3.5 執(zhí)行安裝步驟372
13.3.6 完成安裝376
13.3.7 附加操作:內部鏡像庫設置使用emptydir或者NFS376
13.4 本章小結377
第14章 OpenShift與公有云378
14.1 OpenShift結合公有云的收益378
14.2 OpenShift公有云部署選擇380
14.2.1 基于IaaS380
14.2.2 基于PaaS385
14.3 Azure Red Hat OpenShift385
14.3.1 集群部署與伸縮387
14.3.2 自動化運維387
14.3.3 全球部署387
14.3.4 混合云架構388
14.3.5 安全與認證389
14.3.6 與Azure服務的集成389
14.3.7 開發(fā)者體驗389
14.3.8 聯(lián)合技術支持390
14.3.9 付費模式391
14.3.10 OpenShift 4391
14.4 公有云OpenShift最佳實踐391
14.4.1 因地制宜地選擇架構391
14.4.2 最小化基礎架構管理工作量392
14.4.3 構建高可用的部署架構392
14.4.4 Infrastructure as Code393
14.4.5 DevOps393
14.5 本章小結393