雲原生開發實踐

高尚衡

  • 出版商: 清華大學
  • 出版日期: 2022-08-01
  • 售價: $654
  • 貴賓價: 9.5$621
  • 語言: 簡體中文
  • ISBN: 7302600279
  • ISBN-13: 9787302600275
  • 相關分類: DockerKubernetes雲端運算
  • 立即出貨 (庫存=1)

  • 雲原生開發實踐-preview-1
  • 雲原生開發實踐-preview-2
  • 雲原生開發實踐-preview-3
雲原生開發實踐-preview-1

買這商品的人也買了...

商品描述

本書以一個示例應用的雲原生化實踐過程為主線,系統講述雲原生的理念和主流的雲原生相關技術。 全書共11章。第1章介紹貫穿全書的示例應用,包括功能和使用的編程語言。第2章介紹傳統軟件生產流程在應對高頻發布、高頻部署及規模化等場景中凸顯出的問題和不足。第3章介紹以Docker為代表的容器技術在軟件開發、測試和交付方面的顛覆性優勢。第4章介紹對示例應用進行容器化的詳細步驟,包括鏡像的定義、構建、發布和使用及通過CI/CD來自動化與鏡像相關的操作。第5章介紹Docker生態中的容器編排技術,包括Docker Compose與Docker Swarm。並講解瞭如何利用這兩種編排技術分別對示例應用進行容器編排的詳細過程。第6章介紹雲計算和雲原生的理念和兩者的密切關系及分析雲原生的優勢與劣勢。第7章介紹作為雲原生基礎設施的Kubernetes的基礎知識,包括常用的資源對象和搭建Kubernetes集群的方式。通過具體的示例體現出Kubernetes強大而靈活的編排能力和優秀的設計理念。第8章介紹將示例應用部署到Kubernetes的詳細步驟和常見問題的解決方案,包括提升觀測性的日誌解決方案和提升安全性的TLS解決方案。第9章介紹Kubernetes應用的打包工具Helm的基礎知識,以及為示例應用創建完整Helm Chart的詳細步驟。第10章介紹雲原生技術中的服務網格的理念和服務網格眾多實現中頗具代表性的Linkerd技術,以及在Kubernetes集群中使用Linkerd提升示例應用可用性、可觀測性的具體步驟。 本書適合人群包括電腦科學、軟件工程等領域的軟件工程師和大學生,探索使用容器和Kubernetes相關技術的開發者和技術管理者及希望理解雲原生技術基本原理的技術管理者和開發者。

目錄大綱

目錄

第1章用戶認證項目

1.1項目介紹

1.2開發環境

1.2.1前端

1.2.2後端

第2章傳統軟件生產流程

2.1開發

2.2測試

2.3計算資源評估

2.4部署

2.5更新和升級

第3章容器技術的流行

3.1容器的優勢

3.2Docker簡介

3.3Docker安裝

3.4Docker在開發領域的價值

3.5Docker在測試領域的價值

第4章容器化

4.1容器化簡介

4.2保持簡單和專註

4.3容器鏡像

4.4鏡像定義

4.4.1Dockerfile基礎知識

4.4.2定義後端鏡像

4.4.3定義前端鏡像

4.5構建鏡像

4.5.1docker build命令

4.5.2鏡像緩存

4.5.3構建用於開發環境的後端鏡像

4.5.4構建用於生產環境的後端鏡像

4.5.5構建數據遷移鏡像

4.5.6構建用於開發環境的前端鏡像

4.5.7構建用於生產環境的前端鏡像

4.6啟動鏡像

4.6.1啟動MySQL鏡像

4.6.2數據遷移

4.6.3啟動後端鏡像

4.6.4bridge網絡

4.6.5自定義網絡

4.6.6啟動前端鏡像

4.7發布鏡像

4.7.1Docker Hub

4.7.2私有鏡像倉庫

4.8CI/CD

4.8.1後端引入CI/CD

4.8.2前端引入CI/CD

第5章容器編排

5.1容器編排簡介

5.2Docker Compose

5.2.1Compose文件

5.2.2Compose環境變量

5.2.3Compose運行應用

5.2.4Compose更新應用

5.3Docker Swarm

5.3.1創建Swarm集群

5.3.2將樣例服務部署到Swarm集群

5.3.3伸縮樣例服務

5.3.4更新樣例服務

5.3.5維護Swarm節點

5.3.6Swarm路由網格

5.3.7開發環境Swarm部署

5.3.8生產環境Swarm部署

5.3.9約束服務調度

5.3.10日誌收集

第6章雲原生軟件生產流程

6.1雲原生簡介

6.2雲計算的能力

6.3雲原生的優勢

6.4雲原生的劣勢

第7章雲原生基礎設施

7.1Kubernetes 是什麽

7.2客戶端工具kubectl

7.2.1kubectl簡介

7.2.2使用HomeBrew安裝kubectl

7.2.3使用apt安裝kubectl

7.2.4使用curl安裝kubectl

7.2.5設置kubectl命令自動補全

7.3本地啟動Kubernetes

7.4使用kubeadm創建Kubernetes集群

7.4.1環境要求

7.4.2安裝容器運行時

7.4.3安裝kubeadm、kubelet、kubectl

7.4.4初始化

7.4.5設置kubeconfig

7.4.6安裝網絡插件

7.4.7部署樣例程序

7.4.8將Node添加到集群

7.5創建托管的Kubernetes集群

7.6Kubernetes 對象

7.6.1Kubernetes對象簡介

7.6.2如何描述Kubernetes對象

7.6.3如何管理Kubernetes對象

7.7Node

7.7.1Node簡介

7.7.2管理Node

7.7.3Node狀態

7.7.4Node控制器

7.7.5Node容量

7.8Pod

7.8.1Pod簡介

7.8.2Pod使用模式

7.8.3Pod示例

7.8.4Pod模板

7.8.5Pod生命周期

7.8.6Pod中的容器狀態

7.8.7Probe

7.8.8Init容器

7.9ReplicaSet

7.9.1ReplicaSet簡介

7.9.2ReplicaSet示例

7.9.3獲取模板以外的Pod

7.9.4縮放ReplicaSet

7.10Deployment

7.10.1Deployment簡介

7.10.2Deployment示例

7.10.3更新Deployment

7.10.4回滾Deployment

7.10.5縮放Deployment

7.10.6暫停和恢復Deployment

7.11StatefulSet

7.11.1StatefulSet簡介

7.11.2StatefulSet示例

7.11.3穩定的網絡標識

7.11.4穩定的存儲

7.12DaemonSet

7.12.1DaemonSet簡介

7.12.2DaemonSet示例

7.12.3DaemonSet擴縮容

7.13Job

7.13.1Job簡介

7.13.2Job示例

7.13.3Job清理

7.14ConfigMap

7.14.1ConfigMap簡介

7.14.2ConfigMap示例

7.14.3Pod使用ConfigMap

7.15Secret

7.15.1Secret簡介

7.15.2創建Secret

7.15.3查看Secret數據

7.16Kubernetes存儲

7.16.1Volume

7.16.2PersistentVolume

7.16.3PersistentVolumeClaim

7.16.4Pod使用PersistentVolumeClaim

7.16.5StorageClass

7.16.6動態捲供應

7.16.7AWS EBS使用示例

7.17Kubernetes Service

7.17.1Service簡介

7.17.2Service示例

7.17.3代理模式

7.17.4服務發現

7.17.5Service類型

7.17.6ClusterIP類型

7.17.7NodePort類型

7.17.8LoadBalancer類型

7.17.9ExternalName類型

7.17.10headless Service

7.18Kubernetes DNS

7.18.1DNS服務

7.18.2Service DNS

7.18.3PodDNS

7.19Kubernetes Ingress

7.19.1Ingress簡介

7.19.2Ingress示例

7.19.3Ingress規則

7.19.4Ingress控制器

7.19.5默認後端

7.19.6資源後端

7.19.7fanout示例

7.19.8虛擬主機示例

7.19.9TLS示例

7.20Kubernetes 身份認證

7.20.1Kubernetes用戶

7.20.2認證策略

7.20.3證書認證方式

7.21Kubernetes 授權

7.21.1授權模式

7.21.2RBAC

7.21.3常用命令

7.21.4Service Account

7.22Kubernetes 調度

7.22.1調度簡介

7.22.2約束Node選取

7.22.3親和性和反親和性

7.22.4nodeName

7.22.5污點和容忍

7.22.6Pod優先級

7.22.7Pod搶占

7.22.8Pod拓撲分佈

7.23Kubernetes 日誌

7.23.1Kubernetes基礎日誌功能

7.23.2節點級日誌

7.23.3集群級日誌

7.24Kustomize

7.24.1Kustomize簡介

7.24.2生成ConfigMap

7.24.3生成Secret

7.24.4生成器選項

7.24.5設置橫切字段

7.24.6組合

7.24.7定製

7.24.8變量註入

7.24.9基準和覆蓋

7.24.10應用、查詢和刪除對象

第8章Kubernetes部署應用

8.1環境

8.1.1開發環境

8.1.2生產環境

8.2MySQL服務

8.2.1開發環境

8.2.2生產環境

8.3數據遷移

8.4後端服務

8.5前端服務

8.6Ingress

8.7DNS

8.7.1開發環境

8.7.2生產環境

8.8TLS

8.8.1證書管理軟件

8.8.2ACME

8.8.3Ingress TLS

8.9日誌

8.9.1方案簡介

8.9.2ElasticSearch

8.9.3Fluentd

8.9.4Kibana

8.10Kustomize

第9章Helm

9.1安裝Helm

9.2Helm Chart

9.2.1Chart簡介

9.2.2安裝Chart

9.2.3定製Chart

9.2.4Release

9.2.5升級和回滾

9.2.6卸載Release

9.2.7搜索Chart

9.3Chart模板

9.3.1模板示例

9.3.2模板調用

9.3.3內置對象

9.3.4值文件

9.3.5模板函數和管道

9.3.6流程控制

9.3.7變量

9.3.8命名模板

9.3.9訪問文件

9.3.10NOTES.txt

9.3.11helmignore文件

9.3.12Debug

9.3.13最佳實踐

9.4Chart依賴

9.4.1簡介

9.4.2值覆蓋

9.4.3全局值

9.5Chart Hook

9.5.1簡介

9.5.2Hook示例

9.5.3Hook權重

9.5.4Hook刪除策略

9.6Chart測試

9.6.1測試簡介

9.6.2測試示例

9.6.3運行示例測試

9.7庫Chart

9.7.1簡介

9.7.2示例

9.7.3使用庫Chart

9.8創建自己的Chart

9.8.1後端服務

9.8.2MySQL服務

9.8.3前端服務

9.8.4數據遷移任務

9.8.5Ingress

9.8.6安裝Chart

第10章服務網格

10.1服務網格簡介

10.2Linkerd

10.2.1Linkerd簡介

10.2.2安裝Linkerd

10.2.3網格化

10.2.4代理自動註入

10.2.5暴露儀表盤

第11章雲原生現狀和展望

11.1雲原生在企業的落地情況

11.2雲廠商對雲原生的支持

11.3雲原生趨勢展望