最好的学习方式是边做边学。本章将帮助您快速启动测试环境,以便您可以安全地进行实验而不必担心太多。它将提供几个配置示例和有关如何运行的提示。这种类型的环境也将在本书的几个不同场景中使用。
简而言之,本章将涵盖以下主题:
- Code organization
- Machine requirements
- Spinning up a new environment
最好的学习方式是边做边学。本章将帮助您快速启动测试环境,以便您可以安全地进行实验而不必担心太多。它将提供几个配置示例和有关如何运行的提示。这种类型的环境也将在本书的几个不同场景中使用。
简而言之,本章将涵盖以下主题:
虽然本书中的示例和代码清单可以直接使用而无需任何支持材料,但还提供了一个配套的 Git 存储库来帮助您进行设置过程和测试环境的自动化,以便您轻松跟进。
在本节中,我们将探讨该存储库的组织方式,解释在测试环境自动化方面做出的一些选择,并就如何自定义它们提供一些指导:
这里显示的存储库的根结构应该很容易理解:
接下来,我们将深入研究并仔细查看其中的每一个,如下所示:
在 utils 目录中,可以找到以下文件:
虽然每个测试环境在章节之间会有所不同,但基本结构将保持不变:
通过查看本章的树结构,我们可以看到一个例子:
configs 目录包含本章中使用的每个组件的子目录。 provision 目录遵循相同的模型,添加了一个 hosts.sh shell 脚本来自动管理客户机上的 /etc/hosts 文件.
现在,为什么不直接使用配置管理?的问题可能已经浮现在一些人的脑海中。出于以下几个原因,所有的配置自动化都是在 shell 中完成的:
此设置的机器要求可以在现代笔记本电脑上轻松运行,只要它启用了 CPU 虚拟化扩展并且其操作系统与软件要求兼容。此处涵盖的所有软件要求都经过深思熟虑。我们将使用免费和开源软件,因此在您试用测试环境时无需额外费用。
部署所提供示例的主机的最低要求如下:
使用这些规范,您应该能够启动测试环境而不会遇到任何问题。
关于连接性,主机应该能够访问互联网并能够解析外部 DNS 记录。配置脚本在执行期间必须下载依赖项,尽管大多数依赖项将在本地缓存以避免在每次部署中都被下载。
示例环境的默认网络是 192.168.42.0/24,下图说明了运行本章示例时的配置:
该环境使用以下软件进行了测试,因此适用标准免责声明:尽管其各自主要版本中的其他版本可能无需额外更改即可工作,但在使用与我们推荐的版本不同的版本时应小心:
Software | Version |
---|---|
虚拟盒子 |
6.0.4 |
流浪汉 |
2.2.4 |
Minikube |
1.0.1 |
kubectl | 1.14.1 |
关于支持的操作系统,所有测试均使用以下版本的 Linux 和 macOS 进行:
其他操作系统/发行版可能能够运行测试环境,尽管不能保证。
Oracle VirtualBox 是一个免费的开源虚拟机管理程序,可在所有主要操作系统(macOS、Linux 和 Windows)上运行。它不仅允许您启动虚拟机映像,还允许您创建虚拟网络并将主机文件系统路径挂载到来宾中,以及其他功能。该软件需要启用硬件虚拟化。
HashiCorp Vagrant 允许创建可移植环境。在本书的上下文中,它将成为 VirtualBox 的接口,允许启动和配置虚拟机。在我们的示例中,我们选择使用 Chef Bento 作为虚拟机映像,这是 HashiCorp 推荐的。
Minikube 是在本地测试 Kubernetes 的最简单方法。我们将 Minikube 与 VirtualBox 结合使用,以保证本书中的示例在不同操作系统中的行为方式相同。
与 Kubernetes API 交互的客户端工具称为 kubectl,它是本书中一些示例的基础。
在您确保主机上提供了所有必需的软件后,您可以继续执行以下一项或两项演练。
此方法将抽象所有部署和配置细节,让您只需几个命令即可拥有一个完全运行的测试环境。您仍然可以连接到每个来宾实例并更改配置。
启动环境的步骤如下:
现在,您可以运行 vagrant status。您将看到以下输出:
您可以在 http://192.168.42.10:9090/targets 找到 Prometheus HTTP 端点:
您可以在 http://192.168.42.11:3000 找到 Grafana HTTP 端点。
Grafana 的默认凭据如下:
Username | Password |
admin | admin |
您将看到两个自动配置的仪表板。我们将在本书后面的第 10 章,发现和创建 Grafana 仪表板:
您可以在 http://192.168.42.12:9093 找到 Alertmanager HTTP 端点。
我们还在 Prometheus 上配置了一个始终触发的警报,并通过 webhook 配置了一个自定义的 Alertmanager 集成,这样您就可以开始了解两者之间的关系。我们将在另一章中更详细地介绍 Alertmanager,但现在,您可以查看示例警报在代码存储库根目录中生成的日志 ./cache/alerting.log :
完成测试后,只需确保您在 chapter03 内并执行以下命令:
不用太担心– 如果您愿意,您可以轻松地再次启动环境。
使用此方法,将启动来宾虚拟机,但不会进行任何配置,因此您需要自己动手设置环境。我们不会详细解释可用的配置文件和命令行参数——这些将在接下来的章节中深入探讨。因此,作为高级概述,对于每个软件组件,我们将执行以下操作:
首先,克隆本书的存储库:
进入新创建的目录和章节编号并运行 Vagrant,无需配置来宾实例。这将为您留下现成的虚拟机:
在所有客人都启动后,我们将继续一个一个地配置我们的实例。
执行以下步骤:
您现在应该在您的主机上拥有 Prometheus HTTP 端点。
执行以下步骤:
您现在应该在您的主机上拥有 Grafana HTTP 端点。
执行以下步骤:
您现在应该在您的主机上拥有可用的 Alertmanager HTTP 端点。
为确保收集系统级指标,必须在所有三个虚拟机中安装 Node Exporter。要登录每个虚拟机,请使用我们在前几节中探讨的命令:
完成这些步骤后,您将能够通过在主机上使用以下端点来验证您的环境:
Service | Endpoint |
Prometheus | http://192.168.42.10:9090 |
Grafana | http://192.168.42.11:3000 |
Alertmanager | http://192.168.42.12:9093 |
有了一个可供您使用的测试环境,您现在可以检查、更改和验证配置,而不必担心会造成破坏。在本书中,这种测试方法将被广泛使用,因为在学习新技能时没有什么能比实验更好的了。
在下一章中,我们将介绍 Prometheus 指标的基础知识。我们刚刚构建的测试环境将有助于演示它们。