Helm入门(一篇就够了)

¥0.00 库存: 999
立即购买

商品详情



  来自:CSDN作者:杨林伟链接:https://blog.csdn.net/qq_20042935/article/details/130558912

  一、前言

  在 k8s 中,我们很多时候需要部署很多个应用,特别是微服务的项目,如果每个服务部署都需要使用依次执行,这将是一件很痛苦的事。

  这个时候,如果一键部署所有应用,使用 Helm (https://helm.sh)是一个很不错的选择,它具备如下的能力:简化部署 :Helm允许使用单个命令轻松部署和管理应用程序,从而简化了整个部署过程;高度可配置:Helm Charts提供了高度可配置的选项,可以轻松自定义和修改应用程序的部署配置;版本控制 :Helm允许管理应用程序的多个版本,从而轻松实现版本控制和回滚;模板化:Helm Charts使用YAML模板来定义Kubernetes对象的配置,从而简化了配置过程,并提高了可重复性和可扩展性;应用程序库:Helm具有应用程序库的概念,可以轻松地共享和重用Helm Charts,从而简化了多个应用程序的部署和管理;插件系统:Helm拥有一个强大的插件系统,允许您扩展和定制Helm的功能,以满足特定的需求和要求。Helm本质就是一个k8s的包管理器。

  二、Helm工作流程

  以下是Helm的工作流程(注意:这里使用的是Helm的v3版本,该版本没有了而是用更加简单和灵活的架构,直接通过连接,简化安全模块,降低了用户的使用壁垒):

  

  如上图所示,Helm的工作流程总结如下:开发者首先创建并编辑chart的配置;接着打包并发布至Helm的仓库(Repository);当管理员使用helm命令安装时,相关的依赖会从仓库下载;接着helm会根据下载的配置部署资源至k8s。

  三、Helm概念

  在使用Helm的过程中,需要理解如下的几个核心的概念:概念描述Chart一个Helm包,其中包含了运行一个应用所需要的镜像、依赖和资源定义等,还可能包含Kubernetes集群中的服务定义,类似Homebrew中的formula、APT的dpkg或者Yum的rpm文件Repository存储Helm Charts的地方ReleaseChart在k8s上运行的Chart的一个实例,例如,如果一个MySQL Chart想在服务器上运行两个数据库,可以将这个Chart安装两次,并在每次安装中生成自己的Release以及Release名称ValueHelm Chart的参数,用于配置Kubernetes对象Template使用Go模板语言生成Kubernetes对象的定义文件NamespaceKubernetes中用于隔离资源的逻辑分区

  四、Helm的使用

  下面简单讲下Helm的使用。

  4.1 安装Helm

  首先需要在本地机器或Kubernetes集群上安装Helm。可以从Helm官方网站下载适合自己平台的二进制文件,或使用包管理器安装Helm,安装教程参考 https://helm.sh 。

  4.2 创建Chart

  使用helm create命令创建一个新的Chart,Chart目录包含描述应用程序的文件和目录,包括Chart.yaml、values.yaml、templates目录等;

  例如:在本地机器上使用命令创建一个名为的:

  

  在当前文件夹,可以看到创建了一个wordpress的目录,且里面的内容如下:

  

  4.3 配置Chart

  使用编辑器编辑Chart配置文件,包括Chart.yaml和values.yaml。

  Chart.yaml:包含的元数据和依赖项

  Chart.yaml的模板及注释如下:

  举例:10T学习资源大放送,涵盖Linux、虚拟化、容器、云计算、网络、Python、Go等书籍和视频

  Values.yaml:

  包含应用程序的默认配置值,举例:

  templates:

  在模板中引入values.yaml里的配置,在模板文件中可以通过 .VAlues对象访问到,例如

  :

  4.4 打包Chart

  使用helm package命令将Chart打包为一个tarball文件,例如在wordpress目录中使用helm package命令将Chart打包为一个tarball文件,这将生成一个名为的文件:

  4.5 发布Chart

  将打包好的Chart发布到一个Helm Repository中。可以使用 helm repo add 命令添加一个Repository,然后使用helm push命令将Chart推送到Repository中,例如:

  4.6 安装Release

  使用helm install命令安装Chart的Release,可以通过命令行选项或指定values.yaml文件来配置Release,例如:

  这将在集群中创建一个名为的,包含应用程序和数据库。

  4.7 管理Release

  使用helm ls命令查看当前运行的Release列表,例如:

  这将升级 的应用程序镜像版本为。

  可以使用命令回滚到先前版本,例如:

  这将回滚的版本到1。

  4.8 更新Chart

  在应用程序更新时,可以更新Chart配置文件和模板,并使用helm package命令重新打包Chart。然后可以使用helm upgrade命令升级已安装的Release,可以按照以下步骤更新Chart:在本地编辑Chart配置或添加新的依赖项;使用helm package命令打包新的Chart版本;使用helm push命令将新的Chart版本推送到Repository中;使用helm repo update命令更新本地或远程的Helm Repository;使用helm upgrade命令升级现有Release到新的Chart版本。

  例如,可以使用以下命令更新WordPress的Chart版本:

  这将升级mywordpress的Chart版本到0.2.0,其中包括新的配置和依赖项。

  如果需要删除一个Release,可以使用helm uninstall命令。例如:

  这将删除名为mywordpress的Release,同时删除WordPress应用程序和MySQL数据库。

  如果需要删除与Release相关的PersistentVolumeClaim,可以使用helm uninstall命令的--delete-data选项,例如:

  这将删除名为mywordpress的Release,并删除与之相关的所有PersistentVolumeClaim。

  五、Helm的执行安装顺序

  Helm按照以下顺序安装资源:NamespaceNetworkPolicyResourceQuotaLimitRangePodSecurityPolicyPodDisruptionBudgetServiceAccountSecretSecretListConfigMapStorageClassPersistentVolumePersistentVolumeClaimCustomResourceDefinitionClusterRoleClusterRoleListClusterRoleBindingClusterRoleBindingListRoleRoleListRoleBindingRoleBindingListServiceDaemonSetPodReplicationControllerReplicaSetDeploymentHorizontalPodAutoscalerStatefulSetJobCronJobIngressAPIService

  Helm 客户端不会等到所有资源都运行才退出,可以使用 helm status 来追踪 release 的状态,或是重新读取配置信息:

  六、Helm命令汇总

  在最后,附上所有helm的命令,直接控制台使用 即可查看:10T学习资源大放送,涵盖Linux、虚拟化、容器、云计算、网络、Python、Go等书籍和视频

  七、文末

  本文主要讲解了Helm的一些概念及用法,希望能帮助到大家,谢谢大家的阅读,本文完!

  附参考资料:https://zhuanlan.zhihu.com/p/434249526https://helm.sh/docs/

  最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等,免费共享给大家!

  给大家整理的视频资料:

  给大家整理的电子书资料:

  资料已经打包好了哦。无任何套路,访问领取优质Linux学习资料,涵盖视频、电子书、PPT等,免费共享给大家!

  欢迎关注我! @开源Linux

  我的个人网站,满满的都是干货:开源之家

  如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!