Service Mesh實戰:基於Linkerd和Kubernetes的微服務實踐 Server Mesh实战:基于Linkerd和Kubernetes的微服务实践

楊章顯

立即出貨

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

相關主題

20190122 %e7%b0%a1%e9%ab%94%e6%9b%b8s

商品描述

這是一部面向生產實踐環境的Service Mesh實戰指南,它講解瞭如何基於Linkerd和Kubernetes開發和部署微服務。
作者是思科的高級工程師,是國內Service Mesh領域的先驅者,較早將Linkerd應用到了生產實踐中。書中詳細介紹了Linkerd能解決什麼樣的問題,以及會給開發和運維人員帶來什麼樣的好處。融合作者使用Linkerd的一些經驗和教訓,詳細闡述瞭如何配置、部署和管理Linkerd以及在Kubernetes平臺運行微服務,並且講述瞭如何開發自定義Linkerd插件實現特定功能。通過這一系列內容的學習,讀者將理解Linkerd的工作原理,甚至對學習或者開發Service Mesh也具有深刻的借鑒意義。
全書共9章,分為三個部分:
第一部分(第1~2章) 基礎篇
第1章主要介紹了Service Mesh的起源、功能、現有產品,以及技術選型的考量;第2章是Linkerd的入門,講解了Linkerd及其工作環境的安裝、配置和部署。
第二部分(第3~6章) 中級篇
這部分內容是本書的核心之一,依次講解了Linkerd的配置、數據流工作原理、部署模式的選擇,以及它的控制面板Namerd如何管理多個Linkerd實例同時通過Linkerd實現運行時動態切換流量。
第三部分(第7~9章) 實戰篇
第7章首先講解了閱讀本書必須掌握的Kubernetes的基礎知識;第8章重點通過實例演示瞭如何以Linkerd作為Kubernetes的Service Mesh工具運行微服務;第9章講述瞭如何開發自定義的Linkerd插件來實現特定的功能。

隨著公有雲服務和容器等產品和技術的大力發展,微服務和雲原生應用技術架構逐漸被企業認可和採納。為瞭解決和處理微服務和雲原生應用技術架構的一些問題,Service Mesh應運而生。 Linkerd作為Service Mesh的代表產品,已成為該領域的引爆點。本書將告訴大家如何通過Linkerd作為切入點解決和避免微服務和雲原生應用技術架構的一些問題。
通過閱讀本書,你將掌握:
Service Mesh為什麼會出現,它能解決哪些問題?
Service Mesh有哪些產品,如何做技術選型?
Linkerd及其生產環境的配置和部署。
通過控制平面層管理Linkerd實例和實現運行時動態流量切換。
通過Linkerd和Kubernetes運行微服務,實現服務間可靠、安全、可控制地通訊,增加服務的運行時可見性。
開發自定義的Linkerd插件實現特定的功能

目錄大綱

前言
第一部分 基礎篇
第1章 Service Mesh簡介 2
1.1 微服務架構面臨的一些挑戰 2
1.2 技術架構演進 6
1.3 什麼是Service Mesh 9
1.4 Service Mesh的功能 10
1.5 業界Service Mesh產品 11
1.5.1 Linkerd 11
1.5.2 Envoy 12
1.5.3 Istio 13
1.5.4 Conduit 13
1.5.5 Linkerd、Envoy、Istio及Conduit比較 14
1.5.6 我們需要Service Mesh嗎 15
1.6 總結 15
第2章 Linkerd入門 16
2.1 Linkerd是什麼 16
2.2 Linkerd架構 17
2.3 Linkerd主要功能 19
2.4 安裝Linkerd 21
2.4.1 環境準備 21
2.4.2 傳統安裝方式 24
2.4.3 基於Docker的安裝方式 27
2.5 示例演示 28
2.5.1 示例準備 28
2.5.2 基於文件的服務發現 28
2.5.3 示例演示 29
2.6 總結 30
第二部分 中級篇
第3章 深入淺出Linkerd配置 32
3.1 示例應用 32
3.2 環境準備 34
3.2.1 虛擬機及Docker引擎 34
3.2.2 服務發現:Consul 35
3.2.3 服務註冊:Registrator 37
3.2.4 部署Linkerd 38
3.2.5 部署示例服務 41
3.3 Linkerd術語 45
3.4 Linkerd配置 46
3.4.1 配置構成 46
3.4.2 admin 48
3.4.3 namer 48
3.4.4 router 50
3.4.5 telemetry 55
3.4.6 usage 55
3.5 總結 55
第4章 深入Linkerd數據訪問流 56
4.1 dtab詳解 56
4.1.1 dtab定義 56
4.1.2 dtab路由原理 57
4.1.3 示例演示 60
4.2 數據訪問流詳解 62
4.2.1 鑑別 62
4.2.2 綁定 63
4.2.3 解析 64
4.2.4 轉換 64
4.2.5 負載均衡 65
4.3 總結 67
第5章 Linkerd部署模式 68
5.1 Linkerd部署模式 68
5.1.1 Per-host模式 68
5.1.2 Sidecar模式 69
5.1.3 Per-host模式和Sidecar模式 69
5.2 配置模型 70
5.2.1 service-to-linker模型 70
5.2.2 linker-to-service模型 73
5.2.3 linker-to-linker模型 76
5.3 總結 78
第6章 Linkerd控制層:Namerd 79
6.1 Namerd簡介 79
6.2 Namerd和Linkerd 80
6.3 Namerd配置詳解 82
6.3.1 admin配置 82
6.3.2 interface配置 83
6.3.3 storage配置 84
6.3.4 namer配置 85
6.4 連接Linkerd和Namerd 85
6.4.1 準備Namerd配置文件 85
6.4.2 啟動Namerd 86
6.4.3 準備Linkerd配置文件 88
6.4.4 啟動Linkerd 89
6.4.5 示例演示 90
6.5 管理dtab路由 90
6.5.1 Namerd API簡介 90
6.5.2 通過Namerd API管理dtab 91
6.5.3 通過namerctl CLI管理dtab 92
6.6 總結 93
第三部分 實戰篇
第7章 Kubernetes基礎 96
7.1 Kubernetes是什麼 96
7.2 為什麼需要Kubernetes 97
7.3 Kubernetes架構 99
7.4 使用Kubeadm部署Kubernetes集群 100
7.4.1 部署環境準備 100
7.4.2 部署Kubernetes集群 101
7.5 Kubernetes基本概念及資源生命週期管理 108
7.5.1 Container Runtime 108
7.5.2 Container 108
7.5.3 Pod 109
7.5.4 Label 112
7.5.5 RelicaSet 114
7.5.6 Deployment 116
7.5.7 Service 119
7.5.8 DaemonSet 121
7.5.9 ConfigMap和Secret 124
7.6 總結 128
第8章 基於Linkerd和Kubernetes的微服務實踐 129
8.1 部署服務於Kubernetes平台 130
8.1.1 定義示例服務聲明文件 130
8.1.2 架構預覽 132
8.1.3 部署示例服務 133
8.1.4 驗證 134
8.2 Linkerd作為Kubernetes平台的Service Mesh工具 135
8.2.1 架構預覽 136
8.2.2 Kubernetes平台上如何配置Linkerd 137
8.2.3 運行Linkerd 141
8.2.4 部署示例服務 142
8.2.5 驗證 144
8.3 服務間端到端的TLS加密 145
8.3.1 SSL/TLS簡介 146
8.3.2 Linkerd透明TLS 147
8.3.3 架構預覽 150
8.3.4 生成證書 151
8.3.5 配置Linkerd 151
8.3.6 運行Linkerd及示例服務 152
8.3.7 驗證 153
8.4 Linkerd作為Kubernetes的Ingress Controller 155
8.4.1 架構預覽 156
8.4.2 Ingress Identifer簡介 157
8.4.3 配置Lnkerd 158
8.4.4 運行Linkerd及示例服務 160
8.4.5 驗證 160
8.5 Linkerd作為邊界流量入口 164
8.5.1 架構預覽 164
8.5.2 Ingress Controller局限性 165
8.5.3 部署內部Linkerd和示例服務 165
8.5.4 部署邊界Linkerd 166
8.5.5 HAproxy作為邊界Linkerd負載均衡器 167
8.6 Linkerd作為邊界出口 171
8.6.1 架構預覽 172
8.6.2 部署EgressLinkerd 173
8.6.3 部署示例服務 177
8.6.4 部署內部Linkerd 177
8.7 基於Linkerd實現運行時路由 182
8.7.1 運行時單個請求路由 182
8.7.2 基於Namerd實現全局動態路由 185
8.8 總結 198
第9章 開發Linkerd插件 199
9.1 Linkerd模塊開發框架 199
9.2 如何開發自定義插件 202
9.2.1 需求定義 202
9.2.2 環境準備 203
9.2.3 代碼開發 203
9.2.4 編譯 207
9.2.5 安裝 209
9.2.6 驗證 210
9.3 總結 213