Helm 基础知识
部署、版本控制和更新应用程序时,需要确保软件库和配置版本正确,以便应用程序按预期运行。
假设开发团队决定将宠物商店公司网站部署到 Kubernetes。 在此过程中,团队将创建基于 YAML 的部署、服务和入口文件。 手动对每个目标环境的每个文件中的信息进行硬编码和维护。 但是,为每个环境维护三个文件很繁琐,随着应用程序的增长,复杂性也会增加。
可以使用 Helm 简化应用程序部署过程,并避免硬编码的部署变量和设置。
什么是 Helm?
Helm 是 Kubernetes 的包管理器,可将应用程序的所有资源和部署信息合并到单个部署包中。
可以将 Helm 与 Windows 上的 Windows 包管理器、Linux 上的高级包工具(apt)或 macOS 上的 Homebrew 类似。 指定要安装、更新或删除的应用程序的名称,Helm 负责该过程。
使用 Helm,您可以同时安装多个应用程序。 Helm 允许创建模板化、可读 YAML 脚本文件来管理应用程序的部署。 通过这些模板文件,可以指定用于成功管理应用程序部署的所有必需依赖项、配置映射和机密。
Helm 使用四个组件来管理 Kubernetes 群集上的应用程序部署:
- Helm 客户端
- Helm 图表
- Helm 发布
- Helm 存储库
什么是 Helm 客户端?
Helm 客户端是客户端安装的二进制文件,负责创建和提交部署 Kubernetes 应用程序所需的清单文件。 客户端负责用户与 Kubernetes 群集之间的交互。
Helm 客户端可用于所有主要作系统,并安装在客户端电脑上。 在 Azure 中,Helm 客户端预安装在 Cloud Shell 中,并支持 Kubernetes 的所有安全、标识和授权功能。
注释
本模块假定使用 Helm v3。 可以运行该命令 helm version
来检查客户端设备上运行的 Helm 版本。 如果运行的是 Helm v2,请记住,此模块中的某些命令参数将有所不同。
什么是 Helm 图表?
Helm 图表是 一个模板化部署包,用于描述一组相关的 Kubernetes 资源。 它包含生成和部署应用程序要在 Kubernetes 群集上运行的清单文件所需的所有信息。
Helm 图表包含用来描述图表的多个文件和文件夹。 某些组件是必需的,有些组件是可选的。 选择包含的内容基于应用配置要求。
以下列表描述了 Helm 图表的文件和文件夹组件,其中所需项目加粗:
文件/文件夹 | DESCRIPTION |
---|---|
Chart.yaml |
一个 YAML 文件,其中包含有关图表的信息。 |
values.yaml |
图表的默认配置值。 |
templates/ |
包含图表部署模板的文件夹。 |
LICENSE |
包含图表许可证的纯文本文件。 |
README.md |
一个 markdown 文件,其中包含有关如何使用图表的说明。 |
values.schema.json ** |
用于对 values.yaml 文件应用结构的架构文件。 |
charts/ |
包含主图表的所有子图的文件夹。 |
crds/ |
自定义资源定义。 |
templates/Notes.txt |
包含模板用法说明的文本文件。 |
什么是 Helm 发布?
Helm 版本是使用图表部署的应用程序或应用程序组。 每次安装图表时,都会在群集上创建应用程序的新实例。 每个实例都有一个发布名称,可用于与特定应用程序实例进行交互。
例如,假设使用图表将两个 Nginx 实例安装到 Kubernetes 群集。 稍后,你决定升级第一个 Nginx 实例,而不是第二个实例。 由于这两个版本不同,因此可以升级第一个版本,而不会影响第二个版本。
什么是 Helm 存储库?
Helm 存储库是 一个专用的 HTTP 服务器,用于存储 Helm 图表上的信息。 服务器托管一个文件,该文件描述了图表并指明下载每个图表的位置。
Helm 项目托管了许多公共图表,并且存在许多存储库,可以从中重复使用图表。 Helm 存储库简化了 Helm 包的可发现性和可重用性。
使用 Helm 的好处
Helm 引入了许多优势,可简化应用程序部署,并提高云原生应用程序的开发和部署生命周期的工作效率。 使用 Helm 时,应用程序版本如下:
- 可重复使用、
- 可靠
- 在多个复杂环境中可管理,以及
- 可跨不同的开发团队重复使用。
Helm 图表使用由设置的输入值参数化的打包模板逻辑来标准化应用程序的部署。 此模板驱动的包设计提供了一种与环境无关的方法,用于部署和共享云原生应用程序。