转载请注明出处
Helm是什么?
到目前为止,K8s的生态系统已非常庞大而且仍在不断增长中。Helm作为K8s生态的一员,是一款开源的K8s包管理器,类似于apt,yum和homebrew。使用Helm 能够从Chart repository(Helm应用仓库)快速查找、下载安装软件包并通过与K8s API Server交互构建应用,如图
为什么要使用Helm?
对于K8s来说,应用资源配置可以定义为K8s API对象,包括Deployment,Namespace,Service, PV(Persistent Volumes)和PVC(PersistentVolumeClaims)等等。通常一个应用的部署会涉及很多资源的共同协作,用户会定义这些API对象到一系列Yaml文件中,然后通过kubectl来逐一进行部署。
Helm,避免了我们去完成这些繁琐配置和维护过程。它能够把这些零零散散的应用资源文件放在一起进行统一配置,极大方便了开发人员对K8s集群应用的管理
Helm基础
Helm中有一些自定义的概念和术语:
- Charts: Helm使用的打包格式,一个Chart包含了一组K8s资源集合的描述文件。Chart有特定的文件目录结构,如果开发者想自定义一个新的 Chart,只需要使用 Helm create 命令生成一个目录结构即可进行开发。
- Release: 通过Helm将Chart部署到 K8s集群时创建的特定实例,包含了部署在容器集群内的各种应用资源。
- Tiller: Helm 2.x版本中,Helm采用Client/Server的设计,Tiller就是Helm的Server部分,需要具备集群管理员权限才能安装到K8s集群中运行。Tiller与Helm client进行交互,接收client的请求,再与K8s API Server通信,根据传递的Charts来生成Release。而在最新的Helm 3.x中,据说是为了安全性考虑移除了Tiller。
- Chart Repository: Helm Chart包仓库,提供了很多应用的Chart包供用户下载使用,官方仓库的地址是 https://artifacthub.io/,可以在上面发现很多有意思的项目。之后我们会在官方hub找一个应用做个简单的Demo。
Helm安装
官方文档 https://helm.sh/zh/docs/intro/install/
官方文档中提供了多种安装方式, 我们这里参考官方文档, 采用 二进制文件的方式 进行安装
1.环境说明
- Centos 7.9
- Docker 24.0.7
- Kubernetes 1.23.5
2.下载
# 访问 https://github.com/helm/helm/releases 下载对应版本
# 这里我们下载的是 v3.14.2
wget https://get.helm.sh/helm-v3.14.2-linux-amd64.tar.gz
3.解压并移动
# 执行以下命令解压后生成 linux-amd64 目录(其他操作系统可能不一样)
tar -xf helm-v3.14.2-linux-amd64.tar.gz
# 将helm移动到需要的目录(官方文档默认的目录是/usr/local/bin/helm)
mv linux-amd64/helm /usr/local/bin/helm
# 查看版本信息
helm version
# 顺利的话, 命令执行完出现以下信息
# version.BuildInfo{Version:"v3.14.2", GitCommit:"c309b6f0ff63856811846ce18f3bdc93d2b4d54b", GitTreeState:"clean", GoVersion:"go1.21.7"}
4.添加一个稳定仓库
官方文档: https://helm.sh/zh/docs/intro/quickstart/#%e5%88%9d%e5%a7%8b%e5%8c%96
# 添加chart仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
# 顺利的话出现以下信息
# "bitnami" has been added to your repositories
# 查找charts
helm search repo bitnami
# 顺利话的出现以下可被安装的charts列表
# NAME CHART VERSION APP VERSION DESCRIPTION
# bitnami/airflow 16.8.3 2.8.2 Apache Airflow is a tool to express and execute...
# bitnami/apache 10.6.2 2.4.58 Apache HTTP Server is an open-source HTTP serve...
# bitnami/apisix 2.9.0 3.8.0 Apache APISIX is high-performance, real-time AP...
# bitnami/appsmith 2.7.3 1.14.0 Appsmith is an open source platform for buildin...
# bitnami/argo-cd 5.9.1 2.10.1 Argo CD is a continuous delivery tool for Kuber...
# bitnami/argo-workflows 6.7.1 3.5.4 Argo Workflows is meant to orchestrate Kubernet...
# bitnami/aspnet-core 5.6.2 8.0.2 ASP.NET Core is an open-source framework for we...
# bitnami/cassandra 10.11.2 4.1.4 Apache Cassandra is an open source distributed ...
# ...
# ...