前言
在没有使用Helm之前,向kubernetes部署应用,我们依次需要编写deployment、service、ingress等yaml文件,然后还需要依次进行部署,步骤比较繁琐。
随着项目的微服务化,复杂的应用在容器中部署以及管理显得较为复杂。因此Helm通过打包的方式生成Char模板,然后install Char模板生成release,支持发布的版本管理和控制,很大程度上简化了kubernetes应用的部署和管理。
Helm简介
Helm的本质就是让k8s的应用管理(Deployment、Service)可配置,能够动态生成。通过动态生成k8s资源清单文件,然后调用kubectl命令自动执行k8s资源部署。
我们可以将Helm看作Kubernetes下的apt-get/yum。Helm是Deis 开发的一个用于kubernetes的包管理器。
每个包称为一个Chart,一个Chart是一个目录(一般情况下会将目录进行打包压缩,形成name-version.tgz格式的单一文件,方便传输和存储)。
对于应用发布者而言,可以通过Helm打包应用,管理应用依赖关系,管理应用版本并发布应用到软件仓库。
对于使用者而言,使用Helm后不用需要了解Kubernetes的yaml语法并编写应用部署文件,可以通过Helm下载并在kubernetes上安装需要的应用,同时进行少量的配置即可。
除此以外,Helm还提供了kubernetes上的软件部署,删除,升级,回滚应用的强大功能。
Helm还可以结合Jenkins进行CI、CD进行自动化、流水线构建项目,可以将我们大量重复的步骤省略,节约时间。
Helm的作用有以下几点:
- 快速安装常用应用:许多大公司都有helm仓库,为我们提供了许多优质的应用,可以直接拉取安装,如快速部署Redis集群、安装Jenkins等。
- 多环境部署:通常我们需要多套环境,如开发环境、测试环境、生产环境等,helm可以通模板+变量的形式实现快速部署。
- 运维与开发隔离:运维人员治理k8s资源,写部署模板及默认设置;开发职员只需要提供少量设置即可,把精力主要集中在开发上。
Helm的基本原理
Helm中有四大基本概念:helm客户端、Char、Repository、Release
- helm客户端:主要是命令行,负责管理本地的Charts、repositories,发送Chart,实例安装、查询、卸载等操作。
- Chart:是创建一个应用的信息集合,包括各种Kubernetes对象的配置模板、参数定义、依赖关系、文档说明等,形成一个压缩包.tar。
- Char是应用部署的自包含逻辑单元。可以将Chart想象成apt、yum中的软件安装包,同时Char模板可以发布到专门的repository。
- Repository: Chart仓库。类似于docker的镜像仓库,可以使用Harbor作为Chart的仓库。
- Release:release是Chart运行的实例,使用helm install命令在Kubernetes集群中部署的Chart就生成了一个Release。一个Chart能够多次安装到同一个集群,每次安装都是一个Release。Release基于名称空间进行隔离。
Helm安装
方法 1:通过脚本自动安装(推荐)
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 二进制文件并安装到
/usr/local/bin目录。适用于 Linux/macOS 系统。
方法 2:手动下载二进制文件
- 从 Helm GitHub Release 下载对应系统的二进制包(如
helm-v3.x.x-linux-amd64.tar.gz)。 - 解压并移动到可执行路径:
tar -zxvf helm-v3.x.x-linux-amd64.tar.gz
sudo mv linux-amd64/helm /usr/local/bin/helm- 验证安装:
helm version,输出类似version.BuildInfo{Version:"v3.x.x"}表示成功。
配置 Helm 仓库(添加一个就行,阿里云就好)
添加官方仓库:
helm repo add stable https://charts.helm.sh/stable国内镜像加速
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts- 更新仓库索引
helm repo update验证Helm功能
搜索 Chart 包:
helm search repo nginx # 查找 Nginx 相关 Chart
注意事项
- 权限要求:确保 kubectl 已配置并具有集群管理员权限,Helm 通过 kubeconfig 文件与集群通信
- 版本兼容性:Helm v3 支持 Kubernetes 1.20+,建议使用最新稳定版
- 离线安装:若服务器无法访问 GitHub,可手动下载二进制文件并复制到 /usr/local/bin
卸载 Helm
sudo rm /usr/local/bin/helm # 删除二进制文件
# 清除 Helm 配置
rm -rf ~/.helm