作者 |
郝树伟 陈显鹭 阚俊宝 匡大虎 卢稼奇 |
丛书名 |
云计算与虚拟化技术丛书 |
出版社 |
机械工业出版社 |
ISBN |
9782108241751 |
简要 |
简介 |
内容简介书籍计算机书籍 ---------------------------8083447 - 多云和混合云:云原生多集群和应用管理--------------------------- 这是一本讲解如何在多云/混合云的环境下进行多集群管理、多集群应用编排以及应用管理和跨集群迁移的著作。 作者是阿里云容器服务云原生分布式云团队核心成员,他基于自己丰富的工程实践经验,详细讲解了: 云原生的关键技术、多云/混合云云架构的变革和存在的问题,以及多云/混合云多集群的使用场景和价值; 如何将不同地域的多个集群统一到同一个控制平面,给出了多集群统一管理的方案; Flannel、Calico、Cilium等主流容器网络插件以及阿里云容器服务Terway网络插件的功能和适用场景,以及如何组建一个包含云下和云上网络且互联互通的混合网络; 如何为本地数据中心内的Kubernetes集群扩容云上弹性资源。 如何用Helm和Kustomize工具对需要部署到多个集群的应用进行编排; 如何使用Argo CD系统管理多集群应用的生命周期和应用交付; 如何使用Istio服务网格技术跨多集群组建服务网格; 如何对云原生应用进行备份、恢复以及跨集群的应用迁移。 ---------------------------8071456 - 云原生应用管理:原理与实践--------------------------- . 内容简介 这是一部从原理与实践角度讲解云原生应用管理的著作,是阿里云容器服务团队工程师多年云原生应用开发与管理经验的总结。详细讲解了Helm、Kustomize、CNAB、Operator等云原生应用管理框架和工具的应用场景、功能和使用,并通过源码讲解了它们的实现原理,同时提供了大量的案例和代码解析,能帮助读者轻松掌握云原生应用的管理。 全书一共16章,分为4个部分: 第一部分(第1~4章) Helm 首先介绍了Helm的发展历程、适用场景、架构设计、工作机制;然后以Chart为例,讲解了Helm的功能和使用方法;最后通过源代码分析了Helm的实现原理。 第二部分(第5~8章) Kustomize 首先介绍了Kustomize的诞生背景、适用场景、工作机制;然后详细讲解了它的功能和使用方法;最后通过源代码分析了它的实现原理。 第三部分(第9~12章) CNAB 首先介绍了CNAB的基本概念、原理和规范;然后以Porter为例,详细讲解了它的功能、用法和实战;最后通过源代码分析了Porter的实现原理,同时讲解了mixin的开发。 第四部分(第13~16章) Operator 首先介绍了Operator的概念、发展和工作原理,然后详细讲解了它的功能、用法、架构、组件和实战,最后通过源代码分析了它的实现原理。 |
目录 |
[套装书具体书目] 8071456 - 云原生应用管理:原理与实践 - 9787111659495 - 机械工业出版社 - 定价 119 8083447 - 多云和混合云:云原生多集群和应用管理 - 9787111689140 - 机械工业出版社 - 定价 99 ---------------------------8083447 - 多云和混合云:云原生多集群和应用管理--------------------------- 序一 序二 前言 第1章 云原生与多云/混合云 1 1.1 什么是云原生 1 1.1.1 云原生的定义 1 1.1.2 云原生关键技术概述 2 1.2 多云/混合云 7 1.2.1 什么是多云/混合云 7 1.2.2 为什么需要多云/混合云 8 1.3 云原生技术助力多云/混合云云架构变革 9 1.4 云原生多云/混合云多集群的使用场景 9 1.5 本章小结 12 第2章 快速搭建Kubernetes多集群环境 13 2.1 使用Minikube搭建本地Kubernetes集群 13 2.2 使用Kubeadm搭建Kubernetes集群 16 2.3 使用Rancher搭建Kubernetes集群 20 2.4 使用公有云容器服务搭建Kubernetes集群 24 2.5 配置多集群的访问和切换 27 2.6 本章小结 30 第3章 多云/混合云多集群统一管理 31 3.1 多云/混合云多集群管理现状 31 3.2 云上云下Kubernetes多集群环境准备 32 3.3 KubeFed详解 33 3.3.1 KubeFed架构设计 33 3.3.2 Helm Chart部署KubeFed 35 3.3.3 集群注册 36 3.3.4 部署联邦应用 37 3.3.5 KubeFed的发展现状 41 3.4 公有云厂商的集群纳管解决方案 41 3.4.1 注册集群的架构设计 41 3.4.2 通信链路安全 43 3.4.3 Kubernetes API 隧道 45 3.5 纳管自建Kubernetes集群 46 3.5.1 创建注册集群 46 3.5.2 接入注册集群 48 3.5.3 注册集群的使用 52 3.6 统一的权限管理 54 3.6.1 用户管理 54 3.6.2 统一授权 56 3.7 本章小结 59 第4章 混合集群——混合网络 60 4.1 容器网络接口 60 4.2 Flannel网络插件 62 4.2.1 VXLAN模式 62 4.2.2 UDP模式 65 4.2.3 host-gw模式 65 4.3 Calico网络插件 66 4.3.1 IPIP模式 66 4.3.2 BGP模式 69 4.3.3 网络策略 75 4.4 Cilium网络插件 76 4.4.1 eBPF技术 76 4.4.2 架构设计 77 4.4.3 功能特性 78 4.4.4 安装和部署 79 4.4.5 网络和网络策略的可视化 81 4.4.6 网络策略 83 4.4.7 多集群组网 92 4.5 Terway网络插件 98 4.5.1 使用限制 99 4.5.2 Terway网络规划和准备 100 4.5.3 创建Terway网络集群 100 4.5.4 网络安全策略 102 4.5.5 扩容Terway网络集群 104 4.6 容器网络插件对比 105 4.7 混合集群网络 105 4.7.1 混合集群网络模式 106 4.7.2 云上云下互联互通专线方案 108 4.7.3 云企业网 109 4.7.4 边界路由器BGP配置 109 4.8 本章小结 111 第5章 混合集群——弹性伸缩 112 5.1 接入注册集群 112 5.1.1 创建注册集群 112 5.1.2 配置网络插件 113 5.1.3 配置自定义节点添加脚本 115 5.2 集群扩容 121 5.2.1 节点池概述 122 5.2.2 创建节点池 122 5.2.3 节点池扩容 125 5.2.4 部署示例应用 127 5.3 自动弹性伸缩 129 5.3.1 自动弹性伸缩概述 129 5.3.2 创建弹性节点池 129 5.3.3 部署示例应用 132 5.4 虚拟节点和弹性容器实例 134 5.4.1 虚拟节点和弹性容器实例概述 134 5.4.2 安装、部署虚拟节点组件 134 5.4.3 部署示例应用 135 5.5 本章小结 136 第6章 多云/混合云多集群应用编排 137 6.1 Kubernetes应用编排技术 137 6.2 Helm应用编排 140 6.2.1 Helm项目概述 140 6.2.2 安装Helm 141 6.2.3 Helm Chart的使用 142 6.2.4 Helm仓库的搭建和使用 145 6.2.5 使用Helm编排Guestbook应用并进行多集群部署 148 6.3 Kustomize应用编排 152 6.3.1 Kustomize项目概述 152 6.3.2 Kustomize的安装和使用 153 6.4 本章小结 157 第7章 应用统一管理和交付——Argo CD 158 7.1 Argo CD概述 158 7.1.1 Argo CD的核心概念 159 7.1.2 Argo CD架构设计与工作原理 159 7.2 Argo CD的安装和配置 161 7.2.1 安装Argo CD 161 7.2.2 Argo CD的访问方式 163 7.2.3 卸载Argo CD 165 7.3 用户管理 165 7.3.1 本地用户 165 7.3.2 集成SSO 167 7.4 源仓库管理 170 7.4.1 Git类型源仓库管理 170 7.4.2 Helm类型源仓库管理 172 7.4.3 存储位置 173 7.5 集群管理 174 7.5.1 外部集群管理 174 7.5.2 集群RBAC权限设置 177 7.6 项目管理 177 7.6.1 默认项目 178 7.6.2 创建项目 178 7.6.3 管理项目 179 7.6.4 项目角色 181 7.6.5 使用UI管理项目 183 7.7 应用管理 184 7.7.1 创建应用 184 7.7.2 应用的统一视图管理 191 7.7.3 应用的更新和回滚 192 7.8 本章小结 200 第8章 服务统一治理 201 8.1 Istio服务网格 201 8.1.1 什么是服务网格 201 8.1.2 Istio服务网格架构 202 8.2 Istio服务网格的流量治理 204 8.2.1 虚拟服务 204 8.2.2 目标规则 205 8.2.3 网关 206 8.2.4 服务入口 207 8.3 部署Istio服务网格组件和示例应用 207 8.3.1 安装和部署Istio 207 8.3.2 部署示例应用 209 8.4 Istio东西流量管理 211 8.4.1 配置动态路由 211 8.4.2 故障注入 214 8.4.3 灰度流量 216 8.4.4 熔断 217 8.5 Istio多集群部署管理 219 8.5.1 使用限制和准备工作 219 8.5.2 单一网络共享控制平面部署模型 220 8.5.3 单一网络多控制平面部署模型 224 8.5.4 多网络共享控制平面部署模型 226 8.5.5 多网络多控制平面部署模型 231 8.5.6 验证服务网格中东西流量的示例应用 234 8.6 跨地域多集群流量统一治理 236 8.7 本章小结 243 第9章 应用的备份恢复和跨集群迁移 244 9.1 Velero概述 244 9.1.1 什么是Velero 244 9.1.2 Velero的工作原理 245 9.2 Velero的安装和配置 246 9.2.1 安装Velero客户端 246 9.2.2 安装和启动Minio对象存储服务 247 9.2.3 安装和配置Velero服务组件 248 9.2.4 卸载Velero 251 9.3 提供商与插件 251 9.4 存储位置 252 9.4.1 BackupStorageLocation 252 9.4.2 VolumeSnapshotLocation 253 9.4.3 使用限制和注意事项 254 9.4.4 一些常用的配置策略和使用方法 254 9.5 备份和恢复 256 9.5.1 备份 256 9.5.2 恢复 260 9.5.3 定时备份 264 9.6 Restic集成 264 9.6.1 Velero集成Restic 265 9.6.2 备份与恢复 266 9.6.3 Velero集成Restic进行备份和恢复 270 9.6.4 使用限制 275 9.6.5 使用自定义初始化容器配置 275 9.7 灾难恢复和跨集群迁移实践 277 9.7.1 Velero 客户端和服务端的安装 277 9.7.2 灾难恢复 279 9.7.3 集群/应用迁移 280 9.8 本章小结 282 ---------------------------8071456 - 云原生应用管理:原理与实践--------------------------- 前言 第1章 什么是Helm 1 1.1 Helm的发展历程 1 1.2 Helm的适用场景 2 1.3 Helm的社区和生态 3 1.4 Helm的架构设计与工作原理 4 1.4.1 Helm Client 4 1.4.2 Tiller 5 1.5 本章小结 5 第2章 Chart 7 2.1 Chart文件结构 7 2.1.1 Chart.yaml 8 2.1.2 Chart license, README notes 9 2.1.3 Chart Dependences 10 2.1.4 template和values 14 2.2 Helm功能初体验 18 2.2.1 前置条件 18 2.2.2 Helm的三大基本概念 18 2.2.3 安装Helm 18 2.2.4 安装第一个Chart 19 2.2.5 查看当前安装实例 21 2.2.6 删除安装的实例 21 2.2.7 Helm后端存储 22 2.3 helm install 23 2.4 Helm 更新与回滚 25 2.4.1 helm upgrade 25 2.4.2 helm history 25 2.4.3 helm rollback 26 2.4.4 一些有用的更新参数 26 2.5 helm repo 26 2.6 创建自己的Chart 28 2.7 Helm Hooks 29 2.7.1 Helm支持的Hooks种类 30 2.7.2 Hooks 与Release 生命周期的关系 30 2.7.3 简单的Hooks示例 31 2.7.4 使用crd-install来定义一个CRD 33 2.7.5 自动删除先前版本的Hooks 33 2.8 Helm插件 34 2.9 Chart测试 36 2.10 Chart模板开发高阶介绍 38 2.10.1 创建第一个template文件 39 2.10.2 给template添加动态变量 41 2.10.3 模板函数与管道 42 2.10.4 逻辑控制 45 2.10.5 变量 51 2.10.6 自定义模板 53 2.10.7 在模板中引用文件 58 2.10.8 创建一个NOTES.txt文件 60 2.11 本章小结 61 第3章 使用Helm部署Wordpress实战 63 3.1 下载Wordpress Chart 63 3.2 Chart.yaml 64 3.3 requirements.yaml 64 3.4 Charts文件夹 65 3.5 template文件夹 65 3.5.1 helper文件 66 3.5.2 NOTES.txt 68 3.5.3 其他文件 69 3.5.4 tests文件 71 3.6 README.md 72 3.7 values.yaml 72 3.8 安装 73 3.9 本章小结 76 第4章 Helm 源码分析 77 4.1 helm install 77 4.1.1 locateChartPath 78 4.1.2 ensureHelmClient 81 4.1.3 InstallCmd Run 81 4.1.4 installReleaseFromChart 83 4.1.5 setupConnection 84 4.1.6 Helm Client install Function 85 4.1.7 返回Release状态信息 87 4.2 Helm Install Server 88 4.2.1 prepareRelease 89 4.2.2 performRelease 90 4.3 Helm update 93 4.3.1 update 命令的定义 93 4.3.2 Update 服务端的实现 94 4.4 helm ls 96 4.4.1 Client 端实现 96 4.4.2 Server端实现 98 4.5 Helm Rollback 100 4.6 Helm delete 102 4.7 Helm 3简介 104 4.8 本章小结 108 第5章 Kustomize入门 109 5.1 Kustomize介绍 109 5.2 Kustomize原理介绍 111 5.3 Kustomize快速入门 113 5.3.1 安装Kustomize 113 5.3.2 通过Kustomize部署helloworld 114 5.4 本章小结 117 第6章 Kustomize详解 118 6.1 Kustomize术语 118 6.2 Kustomize配置详解 121 6.2.1 资源 121 6.2.2 生成器 122 6.2.3 转换器 124 6.3 命令行使用方法 128 6.3.1 命令行使用 128 6.3.2 kustomize build 130 6.3.3 kustomize edit 136 6.3.4 kustomize create 141 6.3.5 kustomize config 143 6.4 基本用法 147 6.4.1 使用configGeneration 147 6.4.2 使用generatorOptions 149 6.4.3 配置转换器 150 6.4.4 使用变量 153 6.4.5 镜像替换 154 6.4.6 补丁 156 6.5 Kustomize插件 161 6.5.1 插件介绍 162 6.5.2 Exec类型插件 163 6.5.3 Go库文件插件 165 6.6 工作流 169 6.6.1 创建配置仓库 169 6.6.2 配置下发 170 6.6.3 使用共享配置 170 6.7 本章小结 172 第7章 Kustomize实战 173 7.1 示例介绍 173 7.1.1 基础配置 174 7.1.2 测试环境 177 7.1.3 生产环境 180 7.1.4 配置管理 185 7.2 通过插件实现不同环境下部署不同的模板 186 7.2.1 项目介绍 187 7.2.2 插件实现 188 7.2.3 运行插件 191 7.3 本章小结 193 第8章 Kustomize源码分析 194 8.1 Kustomize 执行流程介绍 194 8.2 kustomize build命令解析 196 8.2.1 NewCmdBuild函数解析 197 8.2.2 NewCmdBuildPrune函数详解 198 8.2.3 RunBuild函数详解 199 8.2.4 AccumulateTarget 解析 203 8.2.5 addHashesToNames函数 210 8.2.6 ResolveVars函数 211 8.2.7 computeInventory函数 212 8.3 kustomize edit命令分析 214 8.4 add子命令 215 8.5 set子命令 225 8.6 Fix子命令 228 8.7 remove子命令 229 8.8 kustomize create 命令分析 230 8.9 本章小结 233 第9章 走近CNAB 234 9.1 什么是CNAB 234 9.2 CNAB 基本概念和原理 236 9.3 CNAB规范 238 9.3.1 bundle.json文件格式 239 9.3.2 调用镜像 245 9.3.3 应用包运行规范 246 9.3.4 包格式规范 247 9.4 Duffle和Porter 248 9.4.1 使用Duffle打包Wordpress 248 9.4.2 使用Porter打包Wordpress 250 9.4.3 使用Duffle还是Porter 251 9.5 本章小结 251 第10章 Porter使用详解 252 10.1 Porter快速上手 252 10.1.1 安装Porter 252 10.1.2 创建应用包 253 10.1.3 部署应用 254 10.1.4 更新和卸载应用 255 10.2 创建应用包 255 10.2.1 应用包元数据 257 10.2.2 mixin 257 10.2.3 参数 258 10.2.4 输出 259 10.2.5 校验规则 260 10.2.6 凭据 260 10.2.7 应用包操作 261 10.2.8 自定义操作 263 10.2.9 依赖 263 10.2.10 镜像 263 10.2.11 自定义Dockerfile 264 10.3 mixin 265 10.3.1 安装mixin 266 10.3.2 常用mixin介绍 266 10.4 Porter命令详解 270 10.5 OCI仓库与应用分发 276 10.6 使用Porter分发CNAB应用 278 10.6.1 发布应用包 278 10.6.2 复制应用包 280 10.6.3 导出应用包 281 10.7 本章小结 282 第11章 Porter实战 283 11.1 创建基本的应用框架 283 11.1.1 环境准备 283 11.1.2 创建基本的应用框架 284 11.2 支持参数和输出 288 11.3 定义多个操作步骤 291 11.4 发布应用包 295 11.5 使用应用包依赖 298 11.6 本章小结 300 第12章 Porter mixin开发和源码解析 301 12.1 mixin实现原理 301 12.1.1 mixin调用机制 301 12.1.2 mixin API 302 12.2 mixin开发 306 12.2.1 创建mixin项目 306 12.2.2 mixin代码概览 308 12.2.3 实现build命令 312 12.2.4 定义JSON Schema 313 12.2.5 实现参数组装逻辑 316 12.3 Porter build源码解析 320 12.4 Porter install源码解析 329 12.4.1 准备应用包 330 12.4.2 准备和执行依赖 332 12.4.3 执行主应用包操作 336 12.4.4 Docker驱动的运行过程 339 12.5 Porter运行时源码解析 342 12.6 本章小结 346 第13章 全面了解Operator 347 13.1 初识Operator 348 13.1.1 什么是Operator 348 13.1.2 Operator的发展 349 13.1.3 Operator的社区与生态 351 13.2 Operator Framework 352 13.3 Operator 工作原理 354 13.4 本章小结 357 第14章 Operator Framework功能详解 358 14.1 Operator SDK 358 14.1.1 安装Operator SDK CLI 358 14.1.2 使用Operator SDK CLI 360 14.1.3 Operator的作用域 363 14.1.4 Operator SDK生成的代码框架 365 14.1.5 controller-runtime 367 14.1.6 使用Predicates过滤事件 381 14.1.7 Operator SDK的架构演进 383 14.2 Operator Lifecycle Manager 387 14.2.1 OLM组件模型定义 387 14.2.2 OLM结构介绍 389 14.2.3 OLM的安装 390 14.2.4 依赖解析和升级管理 392 14.2.5 operator-registry 395 14.3 Operator Metering 398 14.3.1 Operator Metering基本架构 398 14.3.2 Operator Metering核心组件 400 14.4 本章小结 407 第15章 Operator实战 408 15.1 基于Operator SDK构建Operator 408 15.1.1 生成第一个Operator项目 408 15.1.2 创建自定义资源定义 409 15.1.3 创建Controller 410 15.1.4 Operator的构建和运行 416 15.2 使用Operator Lifecycle Manager 419 15.2.1 构建一个CSV 419 15.2.2 基于Operator Lifecycle Manager测试Operator 423 15.3 部署和使用Operator Metering 425 15.3.1 安装Operator Metering 426 15.3.2 定制化Prometheus Report Queries 426 15.4 本章小结 432 第16章 Operator示例:cert-manager源码解析 433 16.1 cert-manager基本介绍 433 16.2 cert-manager组件架构解析 434 16.3 基于controller-runtime的cainjector架构解析 441 16.3.1 cainjector的启动流程 441 16.3.2 cainjector的Reconcile函数 446 16.4 本章小结 448 |