当前位置: 首页 > 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.xdnf.cn/news/1138825.html

相关文章:

  • 【Servo】伺服驱动器扫频功能方案文档
  • 有痛呻吟!!!
  • Redis面试相关问题总结
  • 离散与组合数学 杂记
  • 学习设计模式《十八》——备忘录模式
  • AI安全威胁之MCP Server投毒攻击实践
  • 深入理解进程等待:wait的简化与waitpid的灵活性
  • centos中新增硬盘挂载文件夹
  • 【FFmpeg 快速入门】本地播放器 项目
  • 林曦词典|文质彬彬
  • 物联网主机在化工园区安全风险智能化管控平台中的应用
  • mongodb 入门级别操作
  • 搞清MVCC
  • 优化 CSS 性能
  • 面试Redis篇-深入理解Redis缓存击穿
  • Selenium 启动的浏览器自动退出问题分析
  • 全面升级!WizTelemetry 可观测平台 2.0 深度解析:打造云原生时代的智能可观测平台
  • 杭州卓健信息科技有限公司 Java 面经
  • web前端渡一大师课 CSS属性计算过程
  • 损失函数的等高线与参数置零的关系
  • 从AWS MySQL数据库下载备份到S3的完整解决方案
  • Linux操作系统之线程:线程概念
  • mongodb-org-mongos : Depends: libssl1.1 (>= 1.1.1) but it is not installable
  • Java使用FastExcel实现Excel文件导入
  • 镁合金汽车零部件市场报告:行业现状、发展趋势与投资前景分析
  • 集群聊天服务器各个类进行详解
  • Docker国内镜像
  • 关于用git上传远程库的一些常见命令使用和常见问题:
  • RuoYi-Cloud 定制微服务
  • Java集合框架中List常见问题