在Kubernetes中,helm是什么?如何使用?

云计算 云原生
Helm是一个强大程序部署和管理的包管理工具的工具,本文将介绍Helm的基本概念、作用以及如何在Kubernetes集群中使用它。

在Kubernetes(K8S)生态系统中,Helm是一个强大程序部署和管理的包管理工具的工具,它可以简化应用程序的部署、管理和升级过程。本文将介绍Helm的基本概念、作用以及如何在Kubernetes集群中使用它。

一、什么是Helm?

Helm[1]是一个Kubernetes的包管理器,类似于Linux系统中的APT或YUM。它允许您定义、安装和升级Kubernetes应用程序的预定义包,这些包通常称为charts。Helm旨在简化Kubernetes应用程序的部署和管理过程,使其更加可重复和可维护。

1.Helm架构

Helm 架构由 Helm 客户端、Tiller 服务器端和 Chart 仓库组成。Tiller 部署在 Kubernetes 中,Helm 客户端通过与 Tiller 通信来管理 Chart 的部署和升级。它从 Chart 仓库中获取 Chart 安装包,并将其安装到 Kubernetes 集群中。

2.Helm的核心概念

在深入了解如何使用Helm之前,我们需要了解几个Helm的核心概念:

(1) Chart

Chart是Helm的打包格式,它包含了一组描述Kubernetes应用程序的资源模板文件,以及一些可配置的参数。Chart可以被认为是一个可复用的应用程序模板,它可以快速部署到Kubernetes集群中。

(2) Release

Release是Chart的一个特定实例,它在Kubernetes集群中运行。每个Release都有一个唯一的名称,它可以通过Helm进行部署、升级或删除。

(3) Repository

Repository是一组打包好的Chart的存储位置,类似于软件包管理系统中的软件源。Helm允许您从一个或多个仓库中查找、下载和安装Chart。

二、如何使用Helm?

现在让我们来看一下如何使用Helm来管理Kubernetes应用程序。

1.安装Helm

Helm提供了不通的安装方式,其中包括二进制方式、脚本安装、包管理器安装等。本案例中,我采用脚本方式安装,执行如下命令,其他方式安装方式,请查阅官网文档[2]

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安装成功了。

2.添加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 $

3.搜索并安装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

4.管理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集群中使用它来简化您的工作流程。

Reference:

  • [1]Helm:https://helm.sh/zh/
  • [2]官网文档:https://helm.sh/zh/docs/intro/install/
责任编辑:赵宁宁 来源: 攻城狮成长日记
相关推荐

2021-11-11 09:01:01

Helm Chart Kubernetes

2023-11-03 13:20:13

Kubernetes

2024-02-29 08:02:27

KubernetesDaemonSet集群

2020-05-06 22:20:48

Kubernetes边缘计算

2021-09-30 08:00:00

Kubernetes容器工具

2020-08-21 07:18:21

KubernetesDocker

2018-07-30 08:20:39

编程语言Python集合

2021-12-21 15:17:53

Kubernetes缓存Linux

2024-10-29 09:20:01

2019-03-29 09:00:31

Kubernetes开发者工具

2022-03-18 08:48:35

Kubernetes临时容器运维

2024-11-26 07:37:22

2024-01-29 01:15:11

HelmKubernetesKustomize

2022-06-23 09:47:50

混沌工程系统Kubernetes

2018-03-26 14:25:55

KubernetesSkaffold命令

2020-01-14 10:57:39

内存泄漏虚拟机

2023-09-18 08:00:00

Kubernetes容器集群

2019-09-18 15:30:00

开发者技能开源

2021-10-26 10:28:41

开发架构Kubernetes

2020-08-16 08:34:15

Helm图表Kubernetes Kubernetes
点赞
收藏

51CTO技术栈公众号