本篇是根据《Kubernetes and Docker –An Enterprise Guide》整理出来的,原著作者:Scott Surovich | Marc Boorshtein,大家可以关注一下。
Who this book is for❓
我们创建这本书是为了帮助 DevOps 人员团队扩展他们的技能,超越 Kubernetes 的基础知识。它是根据我们在多个企业环境中使用集群的多年经验创建的。
What this book covers❓
`第1章`,理解Docker和容器的基本要素,可以帮助您了解Docker和库伯内特为开发人员解决的问题。您将介绍Docker的不同方面,包括Docker守护进程、数据、安装和使用Docker CLI。
`第2章`,使用Docker Data,讨论了容器需要如何存储数据,有些用例只需要短暂磁盘,而另一些则需要持久磁盘。在本章中,您将了解有关持久性数据,以及如何将Docker与卷、绑定装载和tmpf一起使用来存储数据。
`第3章`,理解Docker网络,介绍你在Docker中的网络。它将包括创建不同的网络类型、添加和删除容器网络,以及公开容器服务。
`第4章`,使用KinD部署库伯内特,展示了KinD是一个强大的工具,允许您创建一个从单个节点集群到一个完整的多节点集群。本章超越了基本的KinD集群,解释了如何使用运行HAproxy的负载平衡器来实现负载平衡工作节点。在本章结束时,您将了解KinD是如何工作的,以及如何创建一个自定义的多节点集群,这将用于以下章节中的练习。
`第5章`,库伯内训练营,涵盖了集群包含的大部分对象,是需要复习库伯特,还是对平台的更新。它通过描述每个对象在集群中的作用及其功能来解释这些对象。这一章是为了成为一个复习,或一个对物体的“口袋指南”——它不包含每个物体的详尽的细节,因为这将需要第二本书。
`第6章`,服务、负载平衡和外部dns,教您如何使用服务公开Kubernetes部署。通过示例解释每种服务类型,您将学习如何使用第7层和第4层负载平衡器来公开它们。在本章中,您将超越一个简单的入口控制器的基本知识,即安装MetalLB,以提供对服务的第4层访问。您还将安装一个名为外部dns的培养箱项目,以为MetalLB公开的服务提供动态名称解析。
`第7章`,将身份验证集成到集群中,考虑了在构建集群后用户将如何访问集群的问题。在本章中,我们将详细介绍OpenID连接是如何工作的,以及为什么您应该使用它来访问集群。我们还将介绍一些应该避免的反模式,以及为什么应该避免它们。
`第8章`,“RBAC策略和审计”演示了一旦用户能够访问集群,您需要如何能够限制他们的访问。无论您是为用户提供整个集群还是仅仅是一个名称空间,您都需要知道库伯内特斯如何通过其基于角色的访问控制系统或RBAC授权访问。在本章中,我们将详细介绍如何设计RBAC策略、如何调试它们,以及针对多租赁的不同策略。
`第9章`,保护库伯内特仪表板的安全,来看看库伯内特仪表板,这通常是用户在集群启动和运行后试图启动的第一件事。关于安全(或缺乏安全)有相当多的神话。您的集群也将由其他web应用程序组成,如网络仪表板、日志记录系统和监控仪表板。本章将介绍仪表盘是如何架构的,如何正确地保护它,以及如何不部署它的示例,并详细说明了具体原因。
`第10章`,创建Pod安全策略,处理运行Pod实例的节点的安全性。我们将讨论如何安全地设计容器,使它们更难被滥用,以及如何构建策略来约束您的容器访问它们不需要的资源。我们还将介绍代码安全策略API的弃用以及如何处理它。
`第11章`,使用开放策略代理扩展安全性,为您提供了部署开放策略代理和网关管理员所需的指导,以启用无法使用RBAC或RBAC安全策略实现的策略。我们将介绍如何部署网关守护程序,如何在Rego中编写策略,以及如何使用OPA内置的测试框架来测试您的策略。
`第12章`,使用Falco和EFK进行审计,讨论了库伯内特如何包括API访问的事件日志记录,但它没有能力记录可能在Pod中执行的事件。为了解决这一限制,我们将安装一个捐赠给CNCF的名为Falco的项目。您还将学习如何使用Falco EFK EFK和EFK堆栈(弹性搜索、荧光D和Kibana)来显示由Falco捕获的数据。通过在Kibana中查找事件并创建一个包含重要事件的自定义仪表板,您将获得实践体验。
`第13章`,备份工作负载,教您如何使用Velero创建针对灾难恢复的备份集群工作负载或集群迁移。您将亲自动手,创建一个示例工作负载的备份,并将备份恢复到一个全新的集群中,以模拟集群迁移。
`第14章`,配置一个平台,让您构建了一个使用GitLab、Tekton、ArgoCD和OpenUnison来自动化多租户集群的平台。我们将探讨如何构建管道,以及如何自动创建它们。我们将探讨用于驱动管道的对象是如何相互关联的,如何在系统之间建立关系,最后,如何创建一个能够实现管道自动化部署的自助服务工作流。
在第一部分中,我们将回顾重要的Docker和容器的概念,以及Docker为开发人员提供的好处。在快速回顾了Docker之后,我们将继续讨论如何将持久性数据添加到容器中,以及如何使用Docker网络来将容器公开给外部世界。这些基本概念对于充分理解库库和理解容器如何运行集群至关重要。
本书的这一部分包括以下章节:
第1章,理解码头和容器要点--