在这篇博客中,我们将学习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
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来安装你的图表。