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

Helm-k8s包管理工具(一)核心概念、helm工作目录

介绍

在这里插入图片描述

Helm是什么

  • Helm本质是k8s的包管理工具,类似于Linux中的apt或者yum
  • Helm可以将k8s yaml抽象成chart,用于管理k8s应用的安装升级回滚等生命周期操作

为什么使用Helm

  • 没有helm时部署k8s应用的问题

    • yml文件编辑繁琐

      • 为了在k8s部署一个应用需要编辑大量的yml文件,而且这些yml一般都是静态模板文件。比如deployment、service、configmap、secret等yml文件
    • yml一致性难以保证

      • 一般使用git仓库来保存这些yml文件,yml在k8s环境生效时,git仓库中的yml文件和实际k8s环境中的yml文件一致性难以保证,运维困难
    • yml历史版本难以管理

      • 原生k8s没有提供yml历史版本的功能
      • 有些场景下需要做yml版本回退等操作

Helm的优势

  • k8s中,很多情况下需要在多个环境部署多个应用,特别是微服务的项目。如果每个应用都需要kubectl apply来执行的话,运维人员操作会非常繁琐困难

  • Helm的优势在于拥有一键式部署所有应用的能力,有以下好处

    • 简化部署
      • 允许单个命令部署和管理应用程序,简化了整个部署过程
      • 可以智能识别资源的部署顺序,比如service和configmap需要在deployment部署前创建出来
    • 参数化配置
      • 提供了高度可配置的选项,可以自定义修改应用程序的部署配置
    • 版本控制
      • 可以管理应用程序的多个版本,实现版本控制和回滚
    • 模板化
      • 将k8s的yaml抽象成Helm Chart模板,提高了重用性和扩展性
    • 应用程序库
      • Helm应用程序库可以共享和重用Helm Charts
    • 插件系统
      • 拥有强大的插件系统,允许扩展和定制Helm的功能

核心概念

  • Chart

    • 一个Helm应用包,包含一组描述k8s资源yaml模板,定义应用程序的资源配置部署逻辑
    • 结构一般包含Chart.yamlvalues.yamltemplates/charts/
  • Release

    • 某次chart安装后的运行实例多次安装同一个chart是多个release,且每个release对应不同的名称
  • Repository

    • 存储Chart的仓库服务器或路径,一般使用Git仓库。可以是公开仓库或自建私有仓库
  • Value

    • Helm Chart的参数,用来配置k8s对象。通过 values.yaml 或 --set 注入变量值

工作目录

  • helm标准的目录结构(chart根目录命名示例:mychart/)
    mychart/
    ├── Chart.yaml              # 必需:Chart 元信息(名称、版本、描述等)
    ├── values.yaml             # 必需:默认配置参数(可被用户覆盖)
    ├── charts/                 # 可选:子 Chart(依赖包)
    ├── crds/                   # 可选:自定义资源定义(CRDs)
    ├── templates/              # 必需:模板目录,存放所有 Kubernetes YAML 模板
    │   ├── deployment.yaml
    │   ├── service.yaml
    │   ├── ingress.yaml
    │   ├── hpa.yaml
    │   ├── serviceaccount.yaml
    │   ├── _helpers.tpl        # 辅助模板(函数、变量等)
    │   ├── NOTES.txt           # 安装后提示信息
    │   └── tests/
    │       └── test-connection.yaml
    ├── LICENSE                 # 可选:许可证信息
    ├── README.md               # 可选:使用说明文档
    └── values.schema.json      # 可选:values.yaml 的 JSON Schema 校验文件
    
  • 目录详解
文件/目录说明
Chart.yaml定义 Chart 名称、版本、描述、图标、维护者、依赖等元数据。
values.yaml提供模板中使用的默认值,用户可通过 --set-f 覆盖。
templates/所有 Kubernetes 资源模板文件存放目录,支持 Go 模板语法。
_helpers.tpl定义可复用的模板片段(如标签、命名规范),供其他模板引用。
charts/存放子 Chart(依赖),Helm 会自动解析 Chart.yaml 中的依赖。
crds/放置 CRD YAML 文件,Helm 安装时先部署这些资源。
NOTES.txt安装完成后输出的提示信息,如访问地址、用户名密码等。
tests/定义测试 Pod,用于验证 Chart 安装是否成功(如连接测试)。
LICENSE开源协议说明,可选。
README.mdChart 使用说明,可选。
values.schema.jsonvalues.yaml 的结构进行校验,防止配置错误。

Helm的工作流程

  1. 构建chart

    • 开发者创建并编辑chart配置
  2. 打包发布至git仓库

    • 打包发布至helm仓库repository
  3. helm命令安装

    • 管理员使用helm命令安装时,相关依赖会从仓库下载
  4. helm自动部署资源到k8s

    • helm会根据下载的配置自动部署k8s资源
http://www.dtcms.com/a/285028.html

相关文章:

  • 搞清MVCC
  • SpringMVC @ResponseBody注解详解
  • Postman接口测试实现UI自动化测试
  • 巧用 Golang 函数特性实现单元测试中的数据库操作 Mock
  • 使用Jmeter进行http接口性能测试
  • 可获得的最大点数
  • https与DNS的运行流程
  • 在ubuntu系统上搭建svn服务器的做法
  • 【分治思想解题框架】【分解、求解、合并】
  • 用图片生成高保真3D模型!Hi3DGen以法线为桥,为高清三维几何生成另辟蹊径
  • 记录timesfm2.0复现及调优
  • CAD model dataset 下载
  • 云徙科技----一面(全栈开发)
  • 学生信息管理案例
  • Linux操作系统之线程:线程概念
  • 常用API
  • 通过nginx 解决跨域问题
  • Selector的用法
  • 现在遇到一个问题 要使用jmeter进行压测 jmeter中存在jar包 我们还要使用linux进行发压,这个jar包怎么设计使用
  • 《错误记录》java: 警告: 源发行版 17 需要目标发行版 17
  • C++11新特性(上)——右值引用,移动语义,引用折叠,完美转发,初始化列表,可变参数模版,lambda,包装器
  • 通过轮询方式使用LoRa DTU有什么缺点?
  • CMake综合学习2: 构建高效可靠的C++中型服务项目以及现代CMake全链条指南
  • 【CodeTop】每日练习 2025.7.17
  • 面试Redis篇-深入理解Redis缓存雪崩
  • 关于vector中的erase的强调
  • 从一到无穷大 #48:Vector Bucket,S3如何把向量玩成新范式?
  • imx6ull-系统移植篇9——bootz启动 Linux 内核
  • Spark 之 HashJoin
  • Langchain和Faiss搭建本地知识库对比