描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111717157丛书名: 云计算与虚拟化技术丛书
借助GitOps,你可以像对待其他代码库一样,使用Git版本控制系统来组织和管理你的基础设施。对于在Kubernetes上以容器和Pod部署的应用程序来说,这是一种很好的模式。
本书介绍如何使用Git和GitOps方法来管理Kubernetes集群。本书将理论与实践相结合,在介绍Ops核心概念的同时结合易于实现的技术,将GitOps付诸实践。本书面向熟悉持续交付、Git和Kubernetes的开发人员与运维工程师。通过阅读本书,你将学会开发流水线以跟踪更改、回滚错误和审计容器部署。
通过阅读本书,你将学习
使用GitOps的方式管理机密。
Git、Kubernetes和流水线的访问控制。
分支、命名空间和配置。
本书提供了通过GitOps使用Kubernetes的实用教程,内容涵盖GitOps的实践、技术和工具,它们可以简化Kubernetes来更快地交付企业级软件,而不影响安全性。通过阅读本书,你将了解GitOps在灵活的配置管理、监控、健壮性、多环境支持和安全性等方面的好处,并掌握以独特的GitOps方式进行管理的技巧。学完本书,你将能够实现和管理一个可伸缩的持续交付管道,这使得跟踪更改、回滚错误以及清晰地验证和审计容器部署变得容易。
推荐序
前言
致谢
关于作者
第一部分 背景
第1章 为什么需要GitOps 2
1.1 GitOps的演进 2
1.1.1 传统Ops 3
1.1.2 DevOps 4
1.1.3 GitOps 5
1.2 GitOps带给开发者的好处 7
1.2.1 基础设施即代码 7
1.2.2 自服务 8
1.2.3 代码审查 9
1.2.4 Git拉取请求 9
1.3 GitOps带给运维的好处 10
1.3.1 声明式 10
1.3.2 可观测性 12
1.3.3 可审计性和合规性 13
1.3.4 灾难恢复 15
1.4 总结 15
第2章 Kubernetes与GitOps 17
2.1 Kubernetes介绍 17
2.1.1 Kubernetes是什么 18
2.1.2 其他容器编排系统 19
2.1.3 Kubernetes架构 19
2.1.4 部署应用到Kubernetes 21
2.2 声明式对象管理与命令式
对象管理 26
2.3 控制器架构 32
2.3.1 控制器委派 32
2.3.2 控制器模式 32
2.3.3 NGINX Operator 34
2.4 Kubernetes和GitOps的关系 38
2.5 CI/CD入门 38
2.5.1 基本的GitOps Operator 38
2.5.2 持续集成流水线 41
2.6 总结 44
第二部分 模式和流程
第3章 环境管理 48
3.1 环境管理简介 48
3.1.1 环境的组成 49
3.1.2 命名空间管理 51
3.1.3 网络隔离 55
3.1.4 非生产集群和生产集群 58
3.2 Git策略 59
3.2.1 单分支(多目录) 60
3.2.2 多分支 60
3.2.3 多代码库与单一代码库 61
3.3 配置管理 61
3.3.1 Helm 62
3.3.2 Kustomize 65
3.3.3 Jsonnet 69
3.3.4 小结 72
3.4 持久环境与临时环境 73
3.5 总结 73
第4章 流水线 75
4.1 CI/CD流水线中的阶段 75
4.1.1 GitOps持续集成 76
4.1.2 GitOps持续交付 82
4.2 推动晋级工作 86
4.2.1 代码、清单和应用配置 86
4.2.2 代码和镜像晋级 86
4.2.3 环境晋级 88
4.2.4 汇总 89
4.3 其他流水线 90
4.3.1 回滚 91
4.3.2 合规流水线 93
4.4 总结 95
第5章 部署策略 96
5.1 Deployment基础知识 96
5.1.1 为什么ReplicaSet不适合
GitOps 97
5.1.2 Deployment如何与ReplicaSet
一起工作 100
5.1.3 流量路由 107
5.1.4 在minikube中配置其他
策略 108
5.2 蓝绿部署 109
5.2.1 使用Deployment实现蓝绿
部署 109
5.2.2 使用Argo Rollouts实现蓝绿
部署 115
5.3 金丝雀部署 119
5.3.1 使用Deployment实现
金丝雀部署 120
5.3.2 使用Argo Rollouts实现
金丝雀部署 124
5.4 渐进式交付 125
5.5 总结 132
第6章 访问控制与安全 133
6.1 访问控制介绍 133
6.1.1 什么是访问控制 134
6.1.2 确保什么 134
6.1.3 GitOps的访问控制 137
6.2 访问限制 139
6.2.1 Git仓库访问 139
6.2.2 Kubernetes RBAC 146
6.2.3 镜像仓库访问 151
6.3 模式 153
6.3.1 完全访问 153
6.3.2 部署仓库访问 153
6.3.3 仅限代码访问 155
6.4 安全考量 155
6.4.1 防止从不受信任的镜像仓库
拉取镜像 155
6.4.2 Git仓库中的集群级资源 156
6.5 总结 156
第7章 Secret 158
7.1 Kubernetes Secret 158
7.1.1 为什么使用Secret 159
7.1.2 如何使用Secret 159
7.2 GitOps与Secret 162
7.2.1 不加密 162
7.2.2 分布式Git仓库 162
7.2.3 没有细粒度的(文件级)
访问控制 162
7.2.4 不安全的存储 163
7.2.5 完整的提交历史 163
7.3 Secret管理策略 163
7.3.1 在Git中存储Secret 163
7.3.2 烧制Secret到容器镜像 163
7.3.3 带外管理 165
7.3.4 外部机密管理系统 165
7.3.5 在Git中加密Secret 166
7.3.6 策略的对比 167
7.4 工具 168
7.4.1 HashiCorp Vault 168
7.4.2 Vault Agent Sidecar Injector 171
7.4.3 Sealed Secrets 175
7.4.4 Kustomize Secret generator
插件 179
7.5 总结 182
第8章 可观测性 183
8.1 什么是可观测性 184
8.1.1 事件日志 184
8.1.2 度量指标 188
8.1.3 追踪 190
8.1.4 可视化 195
8.1.5 GitOps中可观测性的
重要性 197
8.2 应用程序健康状况 197
8.2.1 资源状况 198
8.2.2 就绪探针和存活探针 202
8.2.3 应用程序监控和告警 203
8.3 GitOps的可观测性 204
8.3.1 GitOps度量指标 204
8.3.2 应用程序同步状态 205
8.3.3 配置漂移 209
8.3.4 GitOps变更日志 210
8.4 总结 213
第三部分 工具
第9章 Argo CD 216
9.1 Argo CD是什么 216
9.1.1 主要使用场景 217
9.1.2 核心概念 217
9.1.3 同步状态和健康状态 218
9.1.4 架构 220
9.2 部署应用 223
9.2.1 部署第一个应用程序 223
9.2.2 使用用户界面检查应用程序 225
9.3 深入了解Argo CD的功能 226
9.3.1 GitOps驱动的部署 227
9.3.2 资源钩子 227
9.3.3 部署后验证 230
9.4 企业特性 230
9.4.1 单点登录 230
9.4.2 访问控制 233
9.4.3 声明式管理 235
9.5 总结 237
第10章 Jenkins X 238
10.1 Jenkins X是什么 238
10.2 探索Prow、Jenkins X流水线
随着Intuit踏上从私有化部署到云原生的旅程,我们重塑构建和部署流程又有了新的机会。与许多大型企业类似,旧的部署流程以数据中心为中心,拥有独立的QA、Ops和基础设施团队。部署代码可能需要数周时间,而且当出现生产问题时,开发人员无法访问基础设施。基础设施问题可能需要很长时间才能解决,并且需要许多团队的合作。
由于Marianna Tessel(Intuit首席技术官)和Jeff Brewer(Intuit SBSEG首席架构师)决定在Kubernetes和Docker上豪赌,我们有幸成为第一个通过Kubernetes和Docker完全迁移生产应用程序的团队。在此过程中,我们必须彻底改造CI/CD流水线并采用GitOps流程。Jesse和Alexander创建了Argo CD(CNCF孵化器项目)来满足企业对GitOps的需求。Todd和他的团队创建了世界一流的集群管理工具,因此我们可以轻松地扩展到数百个集群。
有了像Kubernetes和Docker这样的标准,所有工程师就可以在基础设施和部署方面使用一种通用语言。他们可以轻松地为多个其他项目做出贡献,并在开发过程完成后进行部署。GitOps还使我们能够准确了解环境中发生了哪些变化,这在你需要遵守合规性要求时尤其重要。我们无法想象回到以前的部署方式,希望本书可以帮助你快速上手GitOps!
评论
还没有评论。