第 12 章 部署 Kubernetes 应用程序 部署 Kubernetes 应用程序
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
我仰面躺着,惊讶地发现自己被绑在四百五十万磅的炸药上,竟然感觉如此平静和专注。
罗恩-加兰,宇航员
在本章中,我们将讨论如何将清单文件转化为正在运行的应用程序。我们将学习如何为应用程序构建 Helm 图表,并了解一些清单管理的替代工具:Tanka、kustomize、Kapitan 和 kompose。
用 Helm 创建任务
我们在第 2 章中看到了如何使用从 YAML 清单创建的 Kubernetes 资源来部署和管理应用程序。没有什么能阻止你以这种方式仅使用原始 YAML 文件管理所有 Kubernetes 应用程序,但这并不理想。不仅难以维护这些文件,而且还存在分发问题。
假设您想让其他人也能在自己的群集中运行您的应用程序。您可以向他们分发清单文件,但他们不可避免地需要根据自己的环境自定义某些设置。
要做到这一点,他们必须自己复制一份 Kubernetes 配置,找到各种设置的定义位置(可能在多个地方重复),然后对其进行编辑。
随着时间的推移,他们将需要维护自己的文件副本,当你提供更新时,他们将不得不手动提取并与他们的本地变更进行核对。
这最终会让人痛苦不堪。我们想要的是,能够将原始清单文件与你或应用程序的任何用户可能需要调整的特定设置和变量分离开来。理想情况下,我们可以以标准格式提供这些文件,任何人都可以下载并安装到 Kubernetes 集群。
有了这些,每个应用程序不仅可以公开配置值,还可以公开它对其他应用程序或服务的依赖关系。这样,智能软件包管理工具就可以通过一条命令来安装和运行应用程序及其所有依赖项。
在"Helm:一个 Kubernetes 包管理器》中,我们介绍了 Helm 工具,并向你展示了如何使用它来安装公共图表。现在让我们更详细地了解一下 Helm 图表,看看如何创建我们自己的图表。
舵手图里面有什么?
在演示软件仓库中,打开hello-helm3/k8s目录,查看 Helm 图表中的内容。
每个 Helm 图表都有一个标准结构。首先,图表包含在一个与图表名称相同的目录中(本例中为demo ):
demo├── Chart.yaml├── production-values.yaml├── staging-values.yaml├── templates│ ├── deployment.yaml│ └── service.yaml└── values.yaml
Chart.yaml 文件
接下来,它包含一个名为Chart.yaml 的文件,其中指定了图表名称和版本:
name:demosources:-https://github.com/cloudnativedevops/demoversion:1.0.1
Chart.yaml 中有很多可选字段,包括项目源代码链接(如此处),但唯一的必填信息是名称和版本。
values.yaml 文件
还有一个名为values.yaml 的文件,其中包含图表作者公开的用户可修改设置:
environment:developmentcontainer:name:demoport:8888image:cloudnatived/demotag:helloreplicas:1
这看起来有点像 Kubernetes 的 ...
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