新書推薦:
《
我从何来:自我的心理学探问
》
售價:NT$
545.0
《
失败:1891—1900 清王朝的变革、战争与排外
》
售價:NT$
390.0
《
送你一匹马(“我不求深刻,只求简单。”看三毛如何拒绝内耗,为自己而活)
》
售價:NT$
295.0
《
万千心理·我的精神分析之道:复杂的俄狄浦斯及其他议题
》
售價:NT$
475.0
《
荷马:伊利亚特(英文)-西方人文经典影印21
》
售價:NT$
490.0
《
我的心理医生是只猫
》
售價:NT$
225.0
《
股权控制战略:如何实现公司控制和有效激励(第2版)
》
售價:NT$
449.0
《
汉译名著·哲学经典十种
》
售價:NT$
3460.0
|
編輯推薦: |
1)腾讯云前CODING高级架构师、CNCF大使、微软MVP撰写2. Argo联合创始人Hong Wang、CNCF中国区总监Keith Chan等国际知名专家联袂推荐。3)立足实战,一次入门云原生12大核心技术栈,透彻掌握云原生应用交付,建立云原生架构与GitOps全周期实践蓝图。4.一次性解决云原生技术繁杂,需求变化快,无法达成业务目标的问题
|
內容簡介: |
全书分为5篇:1.第1篇为入门部分,通过一个快速地上手实验让读者体验 GitOps 的强大之处,激起读者的学习欲望;2.第二篇为核心基础部分,将介绍组成 GitOps 的核心基础例如容器化、K8s、持续构建和应用定义;3.第三篇为进阶部分,将带领读者从零构建一个生产可用的 GitOps 工作流,并介绍高级发布策略、多环境管理、可观测性、分布式追踪以及云原生开发的相关内容;4.第四篇为实施指南,将介绍如何在不同规模的公司下实施新技术,在实施过程如何排除非技术因素;5.第五篇为行业认识部分,将介绍如何通过 CNCF 获取一手的云原生信息以及 GitOps 的历史发展。
|
目錄:
|
目 录 Contents推荐序前 言第一部分 背景第1章 从零上手GitOps21.1 构建容器镜像21.1.1 初识容器镜像21.1.2 构建镜像41.1.3 构建方法总结71.2 将镜像部署到Kubernetes81.2.1 初识Kubernetes81.2.2 本地安装Kubernetes81.2.3 部署容器镜像91.2.4 查看和访问Pod111.2.5 进程、容器镜像和工作负载的 关系111.3 自动扩/缩容和自愈121.3.1 传统扩/缩容和自愈方案121.3.2 传统方案的缺点131.3.3 Kubernetes自愈131.3.4 Kubernetes自动扩/缩容161.4 构建工作流171.4.1 Kubernetes应用的一般发布流程181.4.2 安装Flux CD201.4.3 构建GitOps工作流211.4.4 自动发布231.4.5 快速回滚241.5 小结25第二部分 GitOps核心技术第2章 Docker极简实战282.1 为不同语言的应用构建容器镜像282.1.1 Java282.1.2 Golang322.1.3 Node.js332.1.4 Vue352.1.5 构建多平台镜像382.2 压缩镜像体积422.2.1 查看镜像大小422.2.2 替换基础镜像432.2.3 重新思考Dockerfile432.2.4 多阶段构建452.2.5 进一步压缩462.2.6 极限压缩472.2.7 复用构建缓存482.3 基础镜像的选择482.3.1 通用镜像482.3.2 专用镜像502.4 小结52第3章 Kubernetes极简实战543.1 示例应用543.1.1 应用架构543.1.2 部署对象553.1.3 部署示例应用563.1.4 Kubernetes对象解析583.2 命名空间593.2.1 概述593.2.2 使用场景623.2.3 跨命名空间通信623.2.4 规划命名空间633.3 工作负载类型和使用场景643.3.1 ReplicaSet643.3.2 Deployment663.3.3 StatefulSet683.3.4 DaemonSet693.3.5 Job和CronJob693.4 服务发现和Service对象713.4.1 Pod通信713.4.2 Service工作原理723.4.3 Endpoints743.4.4 Service IP743.4.5 Service域名753.4.6 Service类型763.5 服务配置管理773.5.1 传统的配置管理方式783.5.2 Env793.5.3 ConfigMap803.5.4 Secret823.6 服务暴露833.6.1 传统的服务暴露方式833.6.2 NodePort843.6.3 LoadBalancer853.6.4 Ingress863.7 资源配额和服务质量883.7.1 概述883.7.2 初识CPU和内存883.7.3 查看Pod资源消耗893.7.4 资源请求和资源限制893.7.5 服务质量903.8 水平扩容913.8.1 基于CPU的扩容策略923.8.2 基于内存的扩容策略923.9 服务探针933.9.1 Pod和容器的状态933.9.2 探针类型和检查方式943.9.3 就绪探针953.9.4 存活探针973.9.5 StartupProbe探针983.10 小结100第4章 持续集成1014.1 GitHub Action1014.1.1 基本概念1014.1.2 创建持续集成Pipeline1024.2 GitLab CI1094.2.1 基本概念1094.2.2 创建持续集成Pipeline1104.3 Tekton1144.3.1 安装组件1144.3.2 基本概念1204.3.3 创建Tekton Pipeline1214.3.4 创建GitHub Webhook1284.3.5 触发Pipeline1284.4 小结130第5章 镜像仓库1315.1 搭建Harbor企业级镜像仓库1315.1.1 安装组件1315.1.2 访问Dashboard1345.1.3 推送镜像1345.2 在Tekton Pipeline中使用Harbor1365.2.1 修改仓库地址1365.2.2 修改凭据1375.2.3 触发Pipeline1375.3 Harbor生产建议1385.3.1 PVC在线扩容1385.3.2 使用S3存储镜像1395.3.3 使用托管数据库和Redis1405.3.4 开启“自动扫描镜像”和 “阻止潜在漏洞镜像”功能1415.4 小结142第6章 应用定义1436.1 Kustomize1436.1.1 准备示例应用1446.1.2 环境差异分析1456.1.3 创建基准Manifest1456.1.4 创建不同环境下差异化的 Manifest1466.1.5 部署1496.2 Helm Chart1516.2.1 基本概念1516.2.2 示例应用改造1526.2.3 部署1566.2.4 发布1576.3 Helm应用管理1596.3.1 调试1606.3.2 查看已安装的Helm Release1606.3.3 更新Helm Release1606.3.4 查看Helm Release历史版本1616.3.5 回滚Helm Release1616.3.6 卸载Helm Release1616.4 小结161第7章 GitOps工作流1627.1 使用Argo CD构建GitOps 工作流1627.1.1 工作流总览1627.1.2 安装Argo CD1637.1.3 创建应用1657.1.4 连接工作流1687.1.5 触发GitOps工作流1697.2 生产建议1707.2.1 修改默认密码1707.2.2 配置Ingress和TLS1707.2.3 使用Webhook触发1717.2.4 将源码仓库和应用定义仓库 分离1737.2.5 加密Git仓库中存储的密钥1737.3 自动监听镜像版本变更触发 工作流1747.3.1 工作流总览1757.3.2 安装Argo CD Image Updater1757.3.3 创建镜像拉取凭据1767.3.4 创建Helm Chart仓库1767.3.5 创建应用1777.3.6 触发工作流1797.4 小结180第三部分 高级技术第8章 高级发布策略1828.1 蓝绿发布1828.1.1 概述1838.1.2 手动实现蓝绿发布1838.1.3 Argo
|
內容試閱:
|
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月
|
|