批量上传,套装书可能不全,下单前咨询在线客服! 正版书 !!!
¥ 52.47 4.8折 ¥ 109 全新
库存12件
作者王炜 张思施
出版社机械工业出版社
ISBN9787111737421
出版时间2023-11
装帧平装
开本16开
定价109元
货号29652678
上书时间2024-10-21
Preface 前 言
为什么要写这本书
随着2015年云原生计算基金会(CNCF)的成立,云原生领域已经持续高速发展了7年多。Kubernetes就像是一个全新的云操作系统,围绕它延伸出丰富的上层应用。迄今为止,CNCF公布的云原生全景图涉及近30个领域的数百个项目,云原生技术的广度和深度也得到了前所未有的发展。
回想国内云原生刚普及的时候,我正面临着职业发展的重大选择,一边是继续自己熟悉的业务开发方向,另一边则是完全陌生的云原生和DevOps领域。在职业发展瓶颈带来的焦虑和对未知方向的迷茫的双重压力下,我思考了许久。在咨询宋净超后,我决定做出改变,从此埋头扎进了未知的云原生和DevOps领域。
在加入腾讯云CODING之后,我有幸遇到伯乐王振威,并有机会参与了CODING持续部署和Nocalhost等项目从无到有的研发工作,拓展了技术视野。在深入该领域之后,我猛然发现,原来困扰我多年的业务架构难题,例如高并发、高可用架构以及自动扩/缩容等,在这里都能找到最优的解法。此时,我深刻地明白了一个道理:要想深入某个领域,最高效的方式是跨维度去学习更上层的技术。
事实证明,我的选择是正确的。很快,我在云原生领域的收获就超过了之前在业务开发领域七八年时间的收获。2021年,我主导研发的Nocalhost项目通过了CNCF技术委员会的投票,成功入选了CNCF沙箱项目。同年,我被推举为CNCF官方大使,并出版了国内第一本系统介绍云原生持续部署的书籍《Spinnaker实战:云原生多云环境的持续部署方案》。2022年,我成为Linux基金会亚太地区的“布道师”,并与我国云原生社区的其他技术专家联合出版了《深入理解Istio:云原生服务网格进阶实战》。2023年,我成为期待已久的微软MVP(最具价值专家)。
渐渐地,我收到了很多关于云原生技术的咨询。在这之中,最普遍也是让他们感到最焦虑的问题是:云原生技术的落地实在是太难了,下一步该怎么做?
在我看来,这里的“难”主要体现在两方面:一方面是技术本身,云原生背后的技术栈过于庞大,仅仅掌握Kubernetes和Docker技术是不足以实施云原生工程的;另一方面是人为因素,在公司里实施一项新技术,往往意味着打破常规进行组织调整,此时非技术因素就凸显出来了,而这是技术人员极不擅长的。
技术本身的难题,建议通过跨维度方法来解决。什么意思呢?云原生技术背后虽然由非常多的技术栈构成,但我认为它们最终都指向一个工程实践:GitOps。所以,掌握了GitOps就相当于系统性地学习了云原生中常见的12大技术栈,如下图所示。
不过遗憾的是,目前国内并没有一本体系化介绍云原生和GitOps的书籍,这导致很多学习了Kubernetes或Docker的从业者不知道该怎么将其运用在工程实践上,此外,还有很多想转型云原生领域的从业人员也不知怎么学,以及从哪里学起。
而这些迷茫也正是我经历过的。我在学习过程中同样走了一些弯路,所以希望我的经验分享能启发并帮助更多的人,这也是我写本书的出发点。
本书将立足于实践,尽量对概念性内容进行精简,为读者提供从零开始构建GitOps的视角和方法,在覆盖技术广度的同时,对部分核心技术在深度上进行补充。希望本书能拓展读者的技术视野,最终使读者将书中的内容灵活运用到工作中。
本书特色
考虑到云原生技术学习曲线过于陡峭以及职业发展的问题,本书的内容设计遵循以下两个原则。
知识减负,零基础适用。
从实践出发,学以致用。
本书将从实际的业务场景出发,通过模拟真实的微服务应用,带领读者从零开始构建GitOps工作流,并最终将GitOps的12大技术栈系统地联系起来,帮助读者理解最佳实践中的高级发布策略、多环境管理以及服务网格等内容。
在内容结构方面,本书和其他技术性书籍有较大区别。为了激发读者的学习兴趣,我不会在一开始就讲解枯燥的概念,而是通过实战的方式让读者对GitOps的业务价值产生直观的感受。
此外,本书在每个技术栈都提供了基于真实场景的参考代码,读者将其稍加改造就可以用在工作当中。
除了技术本身,本书还进一步提供了云原生职业发展指南和实施指南,比如借助CNCF考试获得行业认可、构建云原生知识体系以及落地一项新技术可能遇到的挑战和困难等,为读者的长期职业发展提供参考路线。
读者对象
DevOps工程师
运维开发工程师
云原生开发工程师
SRE工程师
云原生架构师
解决方案架构师
如何阅读本书
本书分为四部分,分别是背景、GitOps核心技术、高级技术以及知识拓展与落地,建议读者按照下面的路线图进行阅读。
第一部分(第1章)着重介绍如何从零开始构建GitOps工作流。
第二部分(第2~7章)重点介绍构建GitOps工作流所需要的核心技术栈。
第2章介绍如何将业务代码构建为Docker镜像以及构建过程中的一些最佳实践,例如压缩镜像体积、构建多平台镜像、多阶段构建和缓存等。
第3章从实际场景出发,介绍将业务迁移至Kubernetes平台的实践,并进一步介绍了Kubernetes常用的对象和工作负载。
第4章介绍3种持续集成工具的使用方法,包括GitHub Action、GitLab CI和Tekton。
第5章介绍如何使用Harbor构建生产级的自托管镜像仓库,包括大规模下的生产建议。
第6章介绍Kustomize和Helm Chart两种应用定义的方式,并进一步介绍了Helm的应用管理能力。
第7章介绍连接GitOps工作流的步骤,以及实现全自动构建和发布的流程。
第三部分(第8~13章)着重介绍企业级场景下GitOps工作流的高级实践。
第8章介绍高级发布策略,例如蓝绿发布、金丝雀发布以及自动渐进式交付,并结合Argo Rollout进行发布实践。
第9章介绍GitOps中多环境的概念、分支管理模型以及如何实施自动多环境管理。
第10章介绍GitOps工作流中需要关注安全问题的环节,并通过实际案例介绍如何在GitOps中实现密钥的安全存储。
第11章介绍组成可观测性的三大支柱——日志、监控和告警,从零开始构建业务可观测性,并进一步介绍了常用的指标查询和告警策略。
第12章简单介绍服务网格和分布式追踪技术,例如为业务配置熔断和限流策略,借助Jaeger、Zipkin、SkyWalking实施分布式追踪。
第13章介绍在云原生环境下开发的最佳实践,例如开发循环反馈、远程开发、热加载和一键调试等技术。
第四部分(第14和15章)介绍构建GitOps时“人”与“社区”的因素。
第14章对CNCF以及GitOps理念进行深入介绍,包括云计算和CNCF的发展、GitOps的优势以及声明式开发和命令式开发的优劣。
第15章着重介绍在团队内实施新技术将会遇到的问题,以及如何破解这些技术和非技术难题并实现新技术的落地。
勘误和支持
由于作者水平有限,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果你有更多的宝贵意见,可以通过邮箱wangwei27494731@gmail.com与我联系。期待得到你的真挚反馈,让我们在技术之路上互勉共进。
致谢
感谢在云原生道路上给予我帮助的人:王振威、张海龙、宋净超、周鹏飞。
感谢XVC的胡博予、陆宜、文煊义对氦三的支持。
在撰写本书时,我也得到了很多朋友的帮助和支持,他们是Hong Wang(Akuity公司CEO)、Michael Yuan(Second State公司CEO)、周明辉(北京大学教授)、黄东旭(PingCap公司CTO)、Chris Aniszczyk(CNCF CTO)、Keith(Linux基金会负责人),以及耿洁和梁正霖(极客时间工作人员)。
最后,我要特别感谢我的太太和母亲在我写作时的默默付出与支持。
谨以此书献给我最亲爱的家人,以及众多热爱云原生技术的朋友们!
王 炜
2023年7月
全书分为5篇:
1.第1篇为入门部分,通过一个快速地上手实验让读者体验 GitOps 的强大之处,激起读者的学习欲望;
2.第二篇为核心基础部分,将介绍组成 GitOps 的核心基础例如容器化、K8s、持续构建和应用定义;
3.第三篇为进阶部分,将带领读者从零构建一个生产可用的 GitOps 工作流,并介绍高级发布策略、多环境管理、可观测性、分布式追踪以及云原生开发的相关内容;
4.第四篇为实施指南,将介绍如何在不同规模的公司下实施新技术,在实施过程如何排除非技术因素;
5.第五篇为行业认识部分,将介绍如何通过 CNCF 获取一手的云原生信息以及 GitOps 的历史发展。
目 录 Contents
推荐序
前 言
第一部分 背景
第1章 从零上手GitOps2
1.1 构建容器镜像2
1.1.1 初识容器镜像2
1.1.2 构建镜像4
1.1.3 构建方法总结7
1.2 将镜像部署到Kubernetes8
1.2.1 初识Kubernetes8
1.2.2 本地安装Kubernetes8
1.2.3 部署容器镜像9
1.2.4 查看和访问Pod11
1.2.5 进程、容器镜像和工作负载的
关系11
1.3 自动扩/缩容和自愈12
1.3.1 传统扩/缩容和自愈方案12
1.3.2 传统方案的缺点13
1.3.3 Kubernetes自愈13
1.3.4 Kubernetes自动扩/缩容16
1.4 构建工作流17
1.4.1 Kubernetes应用的一般发布流程18
1.4.2 安装Flux CD20
1.4.3 构建GitOps工作流21
1.4.4 自动发布23
1.4.5 快速回滚24
1.5 小结25
第二部分 GitOps核心技术
第2章 Docker极简实战28
2.1 为不同语言的应用构建容器镜像28
2.1.1 Java28
2.1.2 Golang32
2.1.3 Node.js33
2.1.4 Vue35
2.1.5 构建多平台镜像38
2.2 压缩镜像体积42
2.2.1 查看镜像大小42
2.2.2 替换基础镜像43
2.2.3 重新思考Dockerfile43
2.2.4 多阶段构建45
2.2.5 进一步压缩46
2.2.6 极限压缩47
2.2.7 复用构建缓存48
2.3 基础镜像的选择48
2.3.1 通用镜像48
2.3.2 专用镜像50
2.4 小结52
第3章 Kubernetes极简实战54
3.1 示例应用54
3.1.1 应用架构54
3.1.2 部署对象55
3.1.3 部署示例应用56
3.1.4 Kubernetes对象解析58
3.2 命名空间59
3.2.1 概述59
3.2.2 使用场景62
3.2.3 跨命名空间通信62
3.2.4 规划命名空间63
3.3 工作负载类型和使用场景64
3.3.1 ReplicaSet64
3.3.2 Deployment66
3.3.3 StatefulSet68
3.3.4 DaemonSet69
3.3.5 Job和CronJob69
3.4 服务发现和Service对象71
3.4.1 Pod通信71
3.4.2 Service工作原理72
3.4.3 Endpoints74
3.4.4 Service IP74
3.4.5 Service域名75
3.4.6 Service类型76
3.5 服务配置管理77
3.5.1 传统的配置管理方式78
3.5.2 Env79
3.5.3 ConfigMap80
3.5.4 Secret82
3.6 服务暴露83
3.6.1 传统的服务暴露方式83
3.6.2 NodePort84
3.6.3 LoadBalancer85
3.6.4 Ingress86
3.7 资源配额和服务质量88
3.7.1 概述88
3.7.2 初识CPU和内存88
3.7.3 查看Pod资源消耗89
3.7.4 资源请求和资源限制89
3.7.5 服务质量90
3.8 水平扩容91
3.8.1 基于CPU的扩容策略92
3.8.2 基于内存的扩容策略92
3.9 服务探针93
3.9.1 Pod和容器的状态93
3.9.2 探针类型和检查方式94
3.9.3 就绪探针95
3.9.4 存活探针97
3.9.5 StartupProbe探针98
3.10 小结100
第4章 持续集成101
4.1 GitHub Action101
4.1.1 基本概念101
4.1.2 创建持续集成Pipeline102
4.2 GitLab CI109
4.2.1 基本概念109
4.2.2 创建持续集成Pipeline110
4.3 Tekton114
4.3.1 安装组件114
4.3.2 基本概念120
4.3.3 创建Tekton Pipeline121
4.3.4 创建GitHub Webhook128
4.3.5 触发Pipeline128
4.4 小结130
第5章 镜像仓库131
5.1 搭建Harbor企业级镜像仓库131
5.1.1 安装组件131
5.1.2 访问Dashboard134
5.1.3 推送镜像134
5.2 在Tekton Pipeline中使用Harbor136
5.2.1 修改仓库地址136
5.2.2 修改凭据137
5.2.3 触发Pipeline137
5.3 Harbor生产建议138
5.3.1 PVC在线扩容138
5.3.2 使用S3存储镜像139
5.3.3 使用托管数据库和Redis140
5.3.4 开启“自动扫描镜像”和
“阻止潜在漏洞镜像”功能141
5.4 小结142
第6章 应用定义143
6.1 Kustomize143
6.1.1 准备示例应用144
6.1.2 环境差异分析145
6.1.3 创建基准Manifest145
6.1.4 创建不同环境下差异化的
Manifest146
6.1.5 部署149
6.2 Helm Chart151
6.2.1 基本概念151
6.2.2 示例应用改造152
6.2.3 部署156
6.2.4 发布157
6.3 Helm应用管理159
6.3.1 调试160
6.3.2 查看已安装的Helm Release160
6.3.3 更新Helm Release160
6.3.4 查看Helm Release历史版本161
6.3.5 回滚Helm Release161
6.3.6 卸载Helm Release161
6.4 小结161
第7章 GitOps工作流162
7.1 使用Argo CD构建GitOps
工作流162
7.1.1 工作流总览162
7.1.2 安装Argo CD163
7.1.3 创建应用165
7.1.4 连接工作流168
7.1.5 触发GitOps工作流169
7.2 生产建议170
7.2.1 修改默认密码170
7.2.2 配置Ingress和TLS170
7.2.3 使用Webhook触发171
7.2.4 将源码仓库和应用定义仓库
分离173
7.2.5 加密Git仓库中存储的密钥173
7.3 自动监听镜像版本变更触发
工作流174
7.3.1 工作流总览175
7.3.2 安装Argo CD Image Updater175
7.3.3 创建镜像拉取凭据176
7.3.4 创建Helm Chart仓库176
7.3.5 创建应用177
7.3.6 触发工作流179
7.4 小结180
第三部分 高级技术
第8章 高级发布策略182
8.1 蓝绿发布182
8.1.1 概述183
8.1.2 手动实现蓝绿发布183
8.1.3 Argo
全书分为5篇:
1.第1篇为入门部分,通过一个快速地上手实验让读者体验 GitOps 的强大之处,激起读者的学习欲望;
2.第二篇为核心基础部分,将介绍组成 GitOps 的核心基础例如容器化、K8s、持续构建和应用定义;
3.第三篇为进阶部分,将带领读者从零构建一个生产可用的 GitOps 工作流,并介绍高级发布策略、多环境管理、可观测性、分布式追踪以及云原生开发的相关内容;
4.第四篇为实施指南,将介绍如何在不同规模的公司下实施新技术,在实施过程如何排除非技术因素;
5.第五篇为行业认识部分,将介绍如何通过 CNCF 获取一手的云原生信息以及 GitOps 的历史发展。
1)腾讯云前CODING高级架构师、CNCF大使、微软MVP撰写
2. Argo联合创始人Hong Wang、CNCF中国区总监Keith Chan等国际知名专家联袂推荐。
3)立足实战,一次入门云原生12大核心技术栈,透彻掌握云原生应用交付,建立云原生架构与GitOps全周期实践蓝图。
4.一次性解决云原生技术繁杂,需求变化快,无法达成业务目标的问题
— 没有更多了 —
以下为对购买帮助不大的评价