第 1 章. 设置基本服务
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
本章介绍在 Kubernetes 中设置一个简单的多层应用程序的过程。虽然这可能不是最复杂的应用程序,但它是学习在 Kubernetes 中管理应用程序的良好开端。
应用概述
我们将在示例中使用的应用程序相当简单。这是一个简单的日志服务,具体如下:
-
它有一个使用 NGINX 的独立静态文件服务器。
-
它有一个 RESTful 应用程序编程接口 (API),https://some-host-name.io/api,路径为/api。
-
它在主 URL https://some-host-name.io 上有一个文件服务器。
-
它使用Let's Encrypt 服务来管理安全套接字层(SSL)。
图 1-1 是该应用程序的示意图。如果您不能立即理解所有部分,也不必担心;本章将对它们进行更详细的解释。我们将逐步构建此应用程序,首先使用 YAML 配置文件,然后使用 Helm 图表。
图 1-1. 日志服务在 Kubernetes 中的部署示意图
管理配置文件
在 我们深入探讨如何在 Kubernetes 中构建此应用程序的细节之前,值得讨论的是我们如何管理配置本身。在 Kubernetes 中,一切都是 声明式的。这意味着,你要写下应用在集群中的理想状态(通常是 YAML 或 JSON 文件),这些声明的理想状态定义了应用的所有部分。这种声明式方法比 命令式方法要好得多,在命令式方法中,群集的状态是对群集进行的一系列更改的总和。如果集群的配置是命令式的,那么就很难理解和复制集群是如何形成这种状态的,这使得理解或恢复应用程序的问题变得非常困难。
在声明应用程序的状态时,人们通常更喜欢 YAML 而不是 JSON,尽管 Kubernetes 同时支持这两种格式。这是因为与 JSON 相比,YAML 不那么啰嗦,而且更便于人工编辑。不过,值得注意的是,YAML 对缩进很敏感;Kubernetes 配置中的错误往往可以追溯到 YAML 中不正确的缩进。如果出现与预期不符的情况,可以从检查缩进开始排除故障。 大多数编辑器都支持 JSON 和 YAML 语法高亮。在处理这些文件时,最好安装此类工具,以便更轻松地发现配置中的作者和文件错误。 Visual Studio Code 还有一个出色的扩展,支持对 Kubernetes 文件进行更丰富的错误检查。
由于这些 YAML 文件中包含的声明状态是应用程序的真实来源,因此正确管理该状态对应用程序的成功至关重要。在修改应用程序所需的状态时,您需要能够管理更改、验证更改是否正确、审核更改人员,并在更改失败时进行回滚。幸运的是,在软件工程中,我们已经开发出了管理声明状态的更改以及审核和回滚所需的工具。也就是说,围绕版本控制和代码审核的最佳实践 直接适用于管理应用程序声明性状态的任务。
如今,大多数人都将 Kubernetes 配置存储在 Git 中。虽然版本控制系统的具体细节并不重要,但 Kubernetes 生态系统中的许多工具都希望将文件保存在 Git 仓库中。在代码审查方面,差异更大;虽然 GitHub 显然很受欢迎,但也有人使用内部部署的代码审查工具或服务。无论您如何为您的应用程序配置实施代码审查,您都应该像对待源代码控制一样认真、专注地对待它。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access