k8sday18 HELM
Helm 是 Kubernetes 的包管理工具,类似于 Ubuntu 的 apt
或 Python 的 pip
,用于简化 Kubernetes 应用的部署、升级和管理。它的核心功能是定义、安装和升级复杂的 K8s 应用,通过模板化(Charts)实现可重复部署,即可动态生成k8s的资源配置文件。
一、核心概念
1、Chart
-
Helm 的软件包格式,包含预配置的 K8s 资源(Deployment、Service 等)。
-
本质是一个文件目录,可理解为Helm这个包管理器中的安装包
类似容器的镜像
2、Release
-
Chart 的运行实例。同一个 Chart 可多次安装到集群,每次安装都会生成独立的 Release
类似按镜像生成的容器
3、Repository(Repo)
-
Chart 的存储库,类似 Docker Hub。官方仓库为 Artifact Hub。
4、Helm 版本
-
Helm 2:已废弃,依赖 Tiller(服务端组件,存在安全风险)。
-
Helm 3(推荐):移除 Tiller,纯客户端架构,更安全。
下载v3版本的Helm(提供一种方法):
1、手动下载二进制包(适合自定义版本)
# 下载指定版本的 Helm(例如 v3.12.3)wget https://get.helm.sh/helm-v3.12.3-linux-amd64.tar.gz# 解压tar -zxvf helm-v3.12.3-linux-amd64.tar.gz# 将 helm 移动到可执行路径sudo mv linux-amd64/helm /usr/local/bin/helm# 清理临时文件rm -rf linux-amd64 helm-v3.12.3-linux-amd64.tar.gz
2、验证安装
helm version --short# 得到类似输出:v3.12.3+g3a31588
3、配置Helm仓库
# 添加常用仓库(如 Bitnami)helm repo add bitnami https://charts.bitnami.com/bitnami# 查看当前已下载的仓库helm repo ls# 更新仓库索引helm repo update# 搜索 Chart ,查看已下载的包helm search repo bitnami
二、Helm常见命令
# Helm 搜索采用的是模糊字符串匹配算法# 在当前配置的仓库内查找 Chartshelm search repo <keyword># 在官方的大仓库内查找 Charts(范围更广)helm search hub <keyword># 安装一个 Helm Charthelm install <release-name> <chart-name># 列出当前集群中所有已安装的 Helm Releaseshelm list# 查看 Helm Chart 的默认配置文件helm show values <chart-name># 查看已安装的 Helm Release 的所有信息,包括配置和状态helm get all <release-name># 创建一个新的 Helm Charthelm create <chart-name>
三、Chart 目录结构
mychart/├── Chart.yaml # 包含 Chart 的元数据├── values.yaml # 包含默认配置值├── .helmignore # 包含应该忽略的文件├── templates/ # 包含 Kubernetes 资源模板│ ├── NOTES.txt # 包含安装后显示的说明信息│ ├── _helpers.tpl # 包含模板助手函数│ ├── deployment.yaml # 包含 Deployment 资源定义│ ├── service.yaml # 包含 Service 资源定义│ └── ingress.yaml # 包含 Ingress 资源定义└── charts/ # 包含依赖的子 Chart
-
Chart.yaml
这是 Helm Chart 的元数据文件,包含 Chart 的基本信息,例如名称、版本、描述等
-
values.yaml
这是 Helm Chart 的默认配置文件,包含默认的配置值。这些值可以在安装或升级时被覆盖。
-
helmignore
这是一个类似于
.gitignore
的文件,用于指定在打包时应该忽略的文件。 -
templates/
这个目录包含 Kubernetes 资源的模板文件。这些文件在安装或升级时会被渲染成实际的 Kubernetes 资源。
-
charts/
这个目录用于存放依赖的子 Chart。如果你的 Chart 依赖其他 Helm Chart,可以将它们放在这个目录下。
-
NOTES.txt
这个文件包含安装后显示的说明信息,例如如何访问应用等。
-
_helpers.tpl
这个文件包含模板助手函数,可以在模板中重复使用。
四、Redis主从模式搭建
1、修改helm源
# 查看已配置的仓库列表helm repo list# 增加阿里云等仓库(可选)helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/chartshelm repo add aliyunmirror https://mirrors.aliyun.com/bitnami-charts/# 更新本地仓库索引helm repo update
2、查找并安装 redis chart
# 搜索 redis chart,选择合适的版本helm search repo redis# 查看安装说明(可选)helm show readme bitnami/redis# 将 redis chart 拉取到本地 helm pull bitnami/redis# 查看是否拉取成功ls# 找到拉取的 chart 包即拉取成功
3、解压并修改配置
# 解压下载的 chart 包tar -xvf <你下载的 chart 包># 查看是否解压成功ls# 找到解压缩出来的 redis 文件夹即解压缩成功# 删除压缩包rm -rf <你下载的 chart 包># 进入解压缩出来的文件cd redis# 编辑 values.yaml 文件vi values.yaml# 按自己的需求配置,以下给出配置例子# storageClass 修改为自己已创建的# redis 的密码是否需要设置,如果需要则将 password 改为自己要设置的密码,比如123456# 诸如此类有很多可进行修改的,根据自己情况选择修改即可,改好之后:wq即可# 为了之后操作方便,我们可以单独为redis设置一个命名空间kubectl create ns redis
4、安装redis release
# 基于当前目录下的 redis 文件在名为 redis 的命名空间创建一个叫 redis 的 release# 如果 redis 文件不是在当前目录,可以修改至导入 redis 文件的路径helm install redis ./redis/ -n redis
5、回滚与升级
# 将你的 chart 升级为你想设置的版本,如1.2.3helm upgrade <你的chart名> bitnami/my-chart --version 1.2.3# 或通过指定文件升级helm upgrade <你的chart名> bitnami/my-chart -f <指定文件># 查看升级历史helm history <你的chart名># 回滚到之前的版本helm rollback <你的chart名> <之前的版本># 如:将我的一个名为 my-release 的 chart 升级到之前的1.2.2版本# helm rollback my-release 1.2.2
总结:Helm无非就是一个整合了大量不同软件的yaml文件的工具包,我们可以直接下载其中的软件,下载下来的是chart,我们需要将其解压并按自己环境需求配置对应的 values.yaml 文件,只需要修改你要修改的部分即可,和Helm给我们的相同的部分不需要动,修改完之后便可按照你配置的文件进行安装,安装出来的就是release,他会自动按照你修改后的配置文件帮你创建一些svc、pod等等。
Helm就是简化了我们配置多个软件写多份yaml文件的过程。