在Kubernetes中,helm是什么?如何使用?
在Kubernetes(K8S)生態(tài)系統(tǒng)中,Helm是一個強大程序部署和管理的包管理工具的工具,它可以簡化應用程序的部署、管理和升級過程。本文將介紹Helm的基本概念、作用以及如何在Kubernetes集群中使用它。
一、什么是Helm?
Helm[1]是一個Kubernetes的包管理器,類似于Linux系統(tǒng)中的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應用程序的資源模板文件,以及一些可配置的參數(shù)。Chart可以被認為是一個可復用的應用程序模板,它可以快速部署到Kubernetes集群中。
(2) Release
Release是Chart的一個特定實例,它在Kubernetes集群中運行。每個Release都有一個唯一的名稱,它可以通過Helm進行部署、升級或刪除。
(3) Repository
Repository是一組打包好的Chart的存儲位置,類似于軟件包管理系統(tǒng)中的軟件源。Helm允許您從一個或多個倉庫中查找、下載和安裝Chart。
二、如何使用Helm?
現(xiàn)在讓我們來看一下如何使用Helm來管理Kubernetes應用程序。
1.安裝Helm
Helm提供了不通的安裝方式,其中包括二進制方式、腳本安裝、包管理器安裝等。本案例中,我采用腳本方式安裝,執(zhí)行如下命令,其他方式安裝方式,請查閱官網(wǎng)文檔[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
執(zhí)行上述代碼后,通過執(zhí)行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,您可以執(zhí)行:
helm search repo mysql
執(zhí)行上述的命令,它會在倉庫中查找關鍵為mysql的Chart。然后把結果返回給終端,如下圖
一旦找到您想要的Chart,您可以使用helm install命令將其部署到Kubernetes集群中:
helm install <release-name> <repository-name>/<chart-name>
例如,安裝一個MySQL服務,執(zhí)行如下命令:
helm install my-mysql bitnami/mysql
執(zhí)行上述命令后,成功部署會輸入如下信息:
可以根據(jù)提示,執(zhí)行下面的命令獲取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]官網(wǎng)文檔:https://helm.sh/zh/docs/intro/install/