《使用GitOps实现Kubernetes的持续部署:模式、流程及工具》[美]比利・袁,[美]亚历山大・马秋申采夫 | PDF下载|ePub下载
使用GitOps实现Kubernetes的持续部署:模式、流程及工具 版权信息
- 出版社:机械工业出版社
- 出版时间:2023-02-01
- ISBN:9787111717157
- 条形码:9787111717157 ; 978-7-111-71715-7
使用GitOps实现Kubernetes的持续部署:模式、流程及工具 本书特色
借助GitOps,你可以像对待其他代码库一样,使用Git版本控制系统来组织和管理你的基础设施。对于在Kubernetes上以容器和Pod部署的应用程序来说,这是一种很好的模式。 本书介绍如何使用Git和GitOps方法来管理Kubernetes集群。本书将理论与实践相结合,在介绍Ops核心概念的同时结合易于实现的技术,将GitOps付诸实践。本书面向熟悉持续交付、Git和Kubernetes的开发人员与运维工程师。通过阅读本书,你将学会开发流水线以跟踪更改、回滚错误和审计容器部署。 通过阅读本书,你将学习 使用GitOps的方式管理机密。 Git、Kubernetes和流水线的访问控制。 分支、命名空间和配置。
使用GitOps实现Kubernetes的持续部署:模式、流程及工具 内容简介
本书提供了通过GitOps使用Kubernetes的实用教程,内容涵盖GitOps的实践、技术和工具,它们可以简化Kubernetes来更快地交付企业级软件,而不影响安全性。通过阅读本书,你将了解GitOps在灵活的配置管理、监控、健壮性、多环境支持和安全性等方面的好处,并掌握以独特的GitOps方式进行管理的技巧。学完本书,你将能够实现和管理一个可伸缩的持续交付管道,这使得跟踪更改、回滚错误以及清晰地验证和审计容器部署变得容易。
使用GitOps实现Kubernetes的持续部署:模式、流程及工具 目录
推荐序
前言
致谢
关于作者
**部分 背景
第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流水线