第8章. Helm 与Kustomize
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
Kubernetes对象可通过命令式kubectl命令创建、修改和删除,也可通过运行kubectl命令处理声明对象期望状态的配置文件(称为配置文件)实现。配置文件的主要定义语言是YAML ,但也可选择JSON格式——该格式在Kubernetes社区中的采用率较低。 建议开发团队将这些清单文件提交并推送到版本控制仓库,这有助于追踪和审计随时间推移的变更。
在Kubernetes中建模应用程序通常需要一组辅助对象,每个对象都可能拥有独立的清单。例如:您可能需要创建部署(Deployment)在五个Pod上运行应用程序,配置映射(ConfigMap)将配置数据注入为环境变量,以及服务(Service)用于暴露网络访问。
若仅通过单独的kubectl命令管理完整应用程序堆栈并不现实。此时便需要Helm和Kustomize等开源工具的介入。它们能让您便捷地将应用程序堆栈与集群组件的生命周期作为整体进行管理,同时支持在部署时根据上下文调整参数。
Helm操作实践
Helm是Kubernetes清单文件的包管理器( ),同时提供模板引擎。运行时,它会将YAML模板文件中的占位符替换为用户实际定义的值。Helm可执行文件生成的产物是图表文件(chart file),该文件以TAR格式打包应用程序API资源的构成清单( )。用户可将图表文件上传至图表仓库( )。 仓库 以便其他团队部署打包的清单。Helm 生态系统提供大量适用于常见场景的可复用图表,可在Artifact Hub检索(例如运行Grafana或 PostgreSQL)。
鉴于 Helm 功能丰富,本文仅讨论基础内容。考试不要求您成为 Helm 专家,而是希望您熟悉使用 Helm 安装现有软件包的工作流程。构建和发布自定义图表超出考试范围。有关 Helm 的详细信息,请参阅文档。本文描述功能所使用的 Helm 版本为 3.19.0。
管理现有图表
作为开发者,您希望复用现有功能而非耗费精力自行定义配置。例如,您可能需要在集群中部署开源监控服务 Prometheus。
Prometheus需要安装多个Kubernetes基础组件。值得庆幸的是,Kubernetes社区提供了Helm图表,使其能够以Kubernetes操作员的形式轻松安装和配置所有动态组件。请重温第7章内容,回顾操作员模式的动态组件。
下列清单展示了Helm图表的典型使用与管理工作流。其中多数步骤需使用helm可执行文件 :
-
识别要安装的图表
-
添加包含图表的仓库
-
从存储库安装图表
-
验证图表安装的 Kubernetes 对象
-
渲染已安装图表列表
-
升级已安装的图表
-
若不再需要图表功能则卸载图表
后续章节将逐项说明这些步骤。
识别图表
多年来,Kubernetes 社区已实现并发布了数千个 Helm 图表。Artifact Hub 提供基于网页的搜索功能,支持通过关键词发现图表。
假设您需要查找安装持续集成解决方案Jenkins的图表,只需在搜索框输入"jenkins"并按下回车键。图8-1展示了ArtifactHub的搜索结果列表。
图8-1. 在Artifact Hub上搜索Jenkins 图表
截至撰写本文时,该关键词有141个匹配项。点击任意搜索结果即可查看图表详情,包括概述说明及图表文件所在仓库。此外,您还能查阅图表文件捆绑的模板,这些模板标明安装时将创建的对象及其配置选项。 ...
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