k8sday18 HELM

发布于:2025-09-01 ⋅ 阅读:(21) ⋅ 点赞:(0)

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 搜索采用的是模糊字符串匹配算法
  # 在当前配置的仓库内查找 Charts
  helm search repo <keyword>
  # 在官方的大仓库内查找 Charts(范围更广)
  helm search hub <keyword>
  ​
  # 安装一个 Helm Chart
  helm install <release-name> <chart-name>
  ​
  # 列出当前集群中所有已安装的 Helm Releases
  helm list
  ​
  # 查看 Helm Chart 的默认配置文件
  helm show values <chart-name>
  ​
  # 查看已安装的 Helm Release 的所有信息,包括配置和状态
  helm get all <release-name>
  ​
  # 创建一个新的 Helm Chart
  helm 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/charts
  helm 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.3
  helm 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文件的过程。


网站公告

今日签到

点亮在社区的每一天
去签到