在Kubernetes(K8S)生态系统中,Helm是一个强大程序部署和管理的包管理工具的工具,它可以简化应用程序的部署、管理和升级过程。本文将介绍Helm的基本概念、作用以及如何在Kubernetes集群中使用它。
什么是Helm?
Helm是一个Kubernetes的包管理器,类似于Linux系统中的APT或YUM。它允许您定义、安装和升级Kubernetes应用程序的预定义包,这些包通常称为charts
。Helm旨在简化Kubernetes应用程序的部署和管理过程,使其更加可重复和可维护。
Helm架构
Helm 架构由 Helm 客户端、Tiller 服务器端和 Chart 仓库组成。Tiller 部署在 Kubernetes 中,Helm 客户端通过与 Tiller 通信来管理 Chart 的部署和升级。它从 Chart 仓库中获取 Chart 安装包,并将其安装到 Kubernetes 集群中。
Helm的核心概念
在深入了解如何使用Helm之前,我们需要了解几个Helm的核心概念:
Chart
Chart是Helm的打包格式,它包含了一组描述Kubernetes应用程序的资源模板文件,以及一些可配置的参数。Chart可以被认为是一个可复用的应用程序模板,它可以快速部署到Kubernetes集群中。
Release
Release是Chart的一个特定实例,它在Kubernetes集群中运行。每个Release都有一个唯一的名称,它可以通过Helm进行部署、升级或删除。
Repository
Repository是一组打包好的Chart的存储位置,类似于软件包管理系统中的软件源。Helm允许您从一个或多个仓库中查找、下载和安装Chart。
如何使用Helm?
现在让我们来看一下如何使用Helm来管理Kubernetes应用程序。
安装Helm
Helm提供了不通的安装方式,其中包括二进制方式、脚本安装、包管理器安装等。本案例中,我采用脚本方式安装,执行如下命令,其他方式安装方式,请查阅官网文档
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh
执行上述代码后,通过执行helm version
,输出如下图,说明Helm安装成功了。
添加Chart仓库
Helm使用Chart仓库来查找可用的Chart。您可以使用以下命令添加一个Chart仓库:
helm repo add <repository-name> <repository-url>
而Artifact Hub 是一个用于查找、安装和共享 Helm 图表的在线仓库。要在 Helm 中添加 Artifact Hub 作为仓库,你可以使用helm repo add
命令,如下:
helm repo add bitnami https://charts.bitnami.com/bitnami helm repo update
bitnami:是为该仓库起的一个名字
然后,再次通过下面的命令查看仓库情况,如下:
controlplane $ helm repo list NAME URL bitnami https://charts.bitnami.com/bitnami controlplane $
搜索并安装Chart
一旦您添加了仓库,您可以使用helm search
命令搜索可用的Chart:
helm search repo <keyword>
不知道helm命令的具体用法可以通过helm -h
查看帮助文档
例如,如果您想要查找MySQL的Chart,您可以执行:
helm search repo mysql
执行上述的命令,它会在仓库中查找关键为mysql的Chart。然后把结果返回给终端,如下图
一旦找到您想要的Chart,您可以使用helm install
命令将其部署到Kubernetes集群中:
helm install <release-name> <repository-name>/<chart-name>
例如,安装一个MySQL服务,执行如下命令
helm install my-mysql bitnami/mysql
执行上述命令后,成功部署会输入如下信息:
可以根据提示,执行下面的命令获取MySQL的root密码
kubectl get secret --namespace default my-mysql -o jsonpath="{.data.mysql-root-password}" | base64 -d
管理Release
一旦Chart被部署为Release,您可以使用Helm来管理它。例如,您可以使用helm list命令列出所有已部署的Releases:
controlplane $ helm list NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION my-mysql default 1 2024-04-08 12:00:44.864307773 +0000 UTC deployed mysql-10.1.1 8.0.36
您还可以使用helm upgrade
和helm uninstall
命令来升级和删除Release
controlplane $ helm uninstall my-mysql release "my-mysql" uninstalled controlplane $
写到最后
在Kubernetes中,Helm是一个极其有用的工具,它简化了应用程序的部署和管理过程。通过使用预定义的Chart,您可以快速、可重复地部署应用程序,并轻松进行升级和管理。希望本文能够帮助您了解Helm的基本概念,并开始在Kubernetes集群中使用它来简化您的工作流程。