当前位置: 首页 > backend >正文

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文件的过程。

http://www.xdnf.cn/news/18852.html

相关文章:

  • AI编写测试用例
  • 【微服务】SpringBoot 整合 Easy-Es 实战操作详解
  • 深入探索Vue:前端开发的强大框架
  • 字母异位词分组,leetCode热题100,C++实现
  • 嵌入式学习day38
  • 搭建域服务器
  • spring-ai-alibaba使用
  • 第18章|变量:把数据装进“盒子”的正确方式
  • 机器学习 TF-IDF方法
  • 【docker apoc 部署的neo4j安装apoc插件】
  • MySQL 面试题系列(五)
  • 【Kafka】重点概念和架构总结
  • Python 入门操作指南
  • 如何在 Docker 和AKS上使用 IIS
  • iOS技术之通过Charles抓包http、https数据
  • 【Linux】基本指令学习3
  • opencv+yolov8n图像模型训练和推断完整代码
  • Clerk 用户认证系统集成文档
  • ollama离线部署+大语言模型
  • AI-调查研究-62-机器人 机械臂五大应用场景详解:从焊接到手术,从农田到太空
  • 4步用代码拆解数学建模中的TOPSIS评价决策! ! !
  • Apache Commons Lang 3
  • 野火STM32Modbus主机读取寄存器/线圈失败(二)-解决CRC校验错误
  • uC/OS-III 队列相关接口
  • 数据分析与数据挖掘
  • 企业如何构建全面的高防IP防护体系?
  • Teams Workflows 业务流程搭建与Linux自动化运维拓展应用全解析
  • 状态设计模式
  • 构建面向人工智能决策的世界模型引擎所需的基本知识体系
  • 如何在GitHub找到10k+个stars的仓库