如何通过使用Helmfile来管理你的Helm图表

397 阅读4分钟

在这篇博客中,我们将学习Helm和Helmfile的概念,所以,请继续关注!

首先,让我们了解什么是Helm?


Helm是Kubernetes的软件包管理器。因此,可以把它看作是Kubernetes的Apt、Yum和Homebrew,它是一种打包和收集Kubernetes YAML文件并将其发布到公共和私人仓库的便捷方式。

例子:你想在Kubernetes集群上部署你的应用程序。现在,你想把Elastic Search也部署在你的集群中,这样你的应用程序就可以用它来收集日志。

因此,为了在Kubernetes集群中部署弹性堆栈,你需要一些组件:

  • 首先,有状态的集合(用于有状态的应用程序,如数据库)。
  • 第二,configMap(用于外部配置)。
  • 第三,secrets(用于凭证)等。

现在,如果你手动创建这些文件,在互联网上搜索并应用它们是一项繁琐的工作。如果有人将这些YAML文件制作一次,并将其打包,以便其他人可以使用它们,那就更好了。因此,这个YAML文件包或捆绑包被称为HELM CHARTS

你可以创建你自己的HELM图表,把它们推送到HELM仓库,让其他人可以使用,你也可以下载和使用现有的图表。

例如:数据库应用和监控应用,它们非常复杂,所以已经有了图表。

使用案例

当你在不同的环境中部署同一组应用程序。

例如:你在Kubernetes集群中有你的微服务应用,你想把它部署在开发、暂存和生产环境。

因此,与其在每个集群中分别部署一个YAML文件,你可以将它们打包在你自己的图表中。

该图表将拥有特定部署所需的所有必要YAML文件。

Helm图表结构

图表是由一些目录结构组成的,其中我们有:

  • CHARTS图表会有图表(文件夹)的依赖关系。
  • CHARTS.YAML CHARTS.YAML包含关于图表的元信息(如版本、名称、依赖关系等)。
  • HELPERS.TPL它包含了模板中的值和配置,可以被命名空间、服务或任何其他清单反复使用。
  • TEMPLATE模板是一个模板目录,与数值结合后,将生成有效的Kubernetes清单文件。
  • VALUES.YAMLVALUES.YAML是你去更新和修改配置的地方,这样,舵手就可以获取这些值并在DEPLOYMENT.YAML中更新。

Helm 2和Helm 3的区别

第二版分为两部分,我们有:

每当你使用Helm install [chartname]部署Helm图表时,Helm客户端会将YAML文件发送给运行在Kubernetes集群中的Tiller。

Tiller将执行这个请求,并在Kubernetes集群内从这些YAML文件中创建组件。

每当你创建或改变部署时,tiller将存储客户端发送的每个配置的副本,以供将来参考。

发布管理会对所有图表的执行情况进行跟踪:

  • 当你做舵手安装时,舵手会升级应用于现有部署的变化,而不是创建一个新的部署。此外,我们还可以在Helm中进行回滚。

缺点:

  • 首先,舵手在Kubernetes集群中拥有太多的权力
  • 第二,它可以创建、更新和删除组件,并且有太多的权限
  • 第三,它成为一个很大的安全问题,这就是为什么舵手被从Helm 3中删除。

Helmfile是如何管理Helm图表的?

Helmfile是一个非常简单的YAML或配置文件,你只需要在其中提到你的舵手图。通过Helmfile,我们将管理我们的Helmfile,这意味着我们将安装、卸载以及进行多个Helm图表的部署。

需要的是:

使用helmfile,我们可以用这个YAML文件安装多个图表,而不是一个一个的安装图表。

现在,让我们转到演示部分

1.下载Helmfile

链接 -helmfile_linux_amd64

2.改变文件的名称

mv helmfile_linux_amd64 helmfile

3.改变文件的权限

chmod 777 helmfile

4.将文件移至/usr/local/bin

mv helmfile /usr/local/bin

5.检查版本

helmfile --version

6.创建一个图表

helm create [chartname]

helm create dev-chart

7.现在,为Helm图表创建Helmfile

--- 
releases:

  - name: devops

    chart: ./dev-chart

    installed: true

在这个文件中,你必须为你的图表指定发布名称,同样,你要安装的图表,以及安装:true意味着使用helmfile安装图表。

8.安装图表

helmfile sync

OUTPUT:

为了验证输出,请使用kubectl get pods, deployments等。

9.验证安装

helm list

OUTPUT:

如何使用Helmfile部署多个图表?

1.创建图表

helm create kubernetes

helm create revision

helm create docker

2.现在,创建Helmfile

---
releases: 

  - name: kube

    chart: ./kubernetes

    installed: true

  - name: notes

    chart: ./revision

    installed: true

  - name: container

    chart: ./docker

    installed: true

OUTPUT:

正如你所看到的,所有的图表都只用一个文件就能成功安装。

3.为了验证

helm list

4.因此,要使用该文件卸载图表

---
releases:
 
  - name: kube

    chart: ./kubernetes

    installed: false

*只需在 "true "的位置上写上"false"

结论:

为了减少你的时间,请使用helmfile来安装你的图表。