Kubernetes 软件包管理器 Helm 简介

简介

将应用程序部署到Kubernetes -强大且流行的容器编排系统-可能很复杂。设置单个应用程序可能涉及创建多个相互依赖的Kubernetes资源-例如Pod,服务,部署和复制集-每个都需要您编写详细的YAML清单文件。

Helm是Kubernetes的包管理器,允许开发人员和运营商更轻松地将应用程序和服务打包、配置和部署到Kubernetes集群上。

Helm现在是Kubernetes的官方项目,是云本地计算基金会,)的一部分,该基金会是一个非营利性组织,支持Kubernetes生态系统内和周围的开源项目。

在本文中,我们将概述Helm以及它用来简化将应用程序部署到Kubernetes的各种抽象。如果您是Kubernetes的新手,那么先阅读Kubernetes简介》来熟悉基本概念可能会有所帮助。

如果您正在寻找托管Kubernetes托管服务,查看我们为growth.构建的简单托管Kubernetes服务

Helm概述

几乎每种编程语言和操作系统都有自己的包管理器来帮助安装和维护软件。Helm提供了与您可能已经熟悉的许多包管理器相同的基本功能集,例如Debian的apt或Python的pi

Helm可以:

  • 安装软件。
  • 自动安装软件依赖项。
  • 升级软件。
  • 配置软件部署。
  • 从存储库中获取软件包。

Helm通过以下组件提供此功能:

  • 命令行工具helm,为所有Helm功能提供用户界面。
  • 在您的Kubernetes集群上运行的配套服务器组件tiller,监听来自helm的命令,并处理集群上软件版本的配置和部署。
  • Helm打包格式,称为_CHARTS_。
  • 官方精选图表储存库,为流行的开源软件项目预打包图表。

接下来,我们将更详细地研究图表格式。

图表

Helm包称为_charts_,它们由几个YAML配置文件和一些呈现到Kubernetes清单文件中的模板组成。以下是图表的基本目录结构:

1[label Example chart directory]
2package-name/
3  charts/
4  templates/
5  Chart.yaml
6  LICENSE
7  README.md
8  requirements.yaml
9  values.yaml

这些目录和文件具有以下功能:

  • charts/: 可以将手动管理的图表依赖放置在此目录下,但通常使用requirements s.yaml动态链接依赖会更好。
  • 模板/: 该目录包含模板文件,模板文件与配置值(来自values.yaml和命令行)组合在一起,并渲染到Kubernetes清单中。这些模板使用围棋编程语言的模板format.
  • Chart.yaml: 包含海图相关元数据的YAML文件,如海图名称、版本、维护人员信息、相关网站、搜索关键词等。
  • 许可证: 图表的明文许可证。
  • README.md: 包含图表用户信息的自述文件。
  • Requirements s.yaml: 列出图表依赖关系的YAML文件。
  • values.yaml: 图表默认配置值的YAML文件。

helm命令可以从本地目录或此目录结构的.tar.gz打包版本安装图表。这些打包的图表也可以从图表存储库或_repos_自动下载和安装。

接下来,我们将查看图表存储库。

图表存储库

Helm图表Repo是一个简单的HTTP站点,提供index.yaml文件和.tar.gz打包的图表。helm命令提供了一些子命令来帮助打包图表并创建所需的index.yaml文件。这些文件可以由任何Web服务器、对象存储服务或静态站点主机(如GitHub Pages)提供。

Helm预配置了一个默认的海图库,称为稳定 。** 稳定** Repo的源代码可以在GitHub.上的Helm/Chats Git存储库]中找到

可以使用helm repo add命令添加备用存储库。一些流行的替代存储库是:

无论您是安装本地开发的图表,还是安装来自Repo的图表,都需要为您的特定设置进行配置。接下来,我们将研究一下配置。

图表配置

图表通常在其values.yaml文件中附带默认配置值。某些应用程序可能完全可以使用缺省值进行部署,但您通常需要覆盖某些配置以满足您的需求。

为配置公开的值由图表的作者决定。有些用于配置Kubernetes原语,有些可能会传递到底层容器来配置应用程序本身。

以下是一些示例值的片段:

1[label values.yaml]
2service:
3  type: ClusterIP
4  port: 3306

这些是配置Kubernetes_Service_resource的选项。您可以使用helm检查值图表名称来转储图表的所有可用配置值。

可以通过编写您自己的YAML文件并在运行helm install时使用它,或者通过在命令行上使用--set标志单独设置选项来覆盖这些值。您只需指定要从默认设置更改的值。

使用特定配置部署的Helm图表称为_Release_。接下来我们将讨论发布。

发布版本

在图表安装过程中,Helm会将图表模板与用户指定的配置和value.yaml中的默认配置组合在一起。这些内容被呈现为Kubernetes清单,然后通过Kubernetes API进行部署。这将创建_Release_,这是特定图表的特定配置和部署。

这个版本的概念很重要,因为您可能希望在一个集群上多次部署相同的应用程序。例如,您可能需要多个具有不同配置的MySQL服务器。

您可能还希望单独升级图表的不同实例。也许一个应用程序已经为更新的MySQL服务器做好了准备,但另一个还没有。使用Helm,您可以单独升级每个版本。

您可能会升级某个版本,因为它的图表已更新,或者您想要更新该版本的配置。无论哪种方式,每次升级都会创建一个版本的新版本,Helm将允许您轻松回滚到以前的版本,以防出现问题。

创建图表

如果找不到正在部署的软件的现有图表,您可能需要创建自己的图表。Helm可以使用helm create chart-name输出图表目录的scaffold。这将创建一个文件夹,其中包含我们在上面的[Charts](# charts)部分中讨论的文件和目录。

然后,您需要在Chart.yaml中填写图表的元数据,并将您的Kubernetes清单文件放入temples目录中。然后,您需要从清单中提取相关配置变量并将其放入values.yaml中,然后使用模板system.]将它们包含回清单模板中

helm命令有许多子命令可用来帮助您测试、打包和服务图表。有关更多信息,请阅读关于开发charts.的官方Helm文档

总结

在本文中,我们回顾了Kubernetes的包管理器Helm。我们概述了Helm体系结构以及各个helmtiller组件,详细介绍了Helm图表格式,并查看了图表存储库。我们还研究了如何配置Helm图表,以及如何在Kubernetes集群上组合和部署配置和图表作为版本。最后,我们讨论了在没有合适的图表时创建图表的基础知识。

有关Helm的更多信息,请查看Helm官方文档.要查找Helm的官方图表,请查看GitHub上的官方Helm/图表Git库.

Published At
Categories with 技术
comments powered by Disqus