最近我为部门的朋友创建的《Helm 简介》反响很好,所以我整理了一下资料,分享给博客的读者。 本文第一部分介绍了helm的作用以及它可以解决的问题。 第二部分介绍了helm的核心概念,并提供了安装和使用helm的教程。 第三部分介绍helm的核心charts的开发。 本章通过示例来讲解基本的开发步骤。 最后部分简单讲解了如何搭建私有模板仓库。 读完本文,您将能够轻松了解 Helm 及其生态。
什么是 helm?
如标题所示,Helm的官方定义是kubernetes的包管理器,那么什么是包管理器?
什么是包管理工具?
Package Manager 自动一致安装的一套软件用于升级、配置和删除计算机操作系统的工具 - 维基百科 helm 帮助用户管理 Kubernetes 程序。 Charts 帮助用户定义、安装和升级最复杂的 Kubernetes 应用程序 Charts,因此您可以轻松创建、版本化、共享和发布它们,因此停止复制和粘贴开始使用 -helm 官方
核心概念
Helm 官方文档有比较详细的解释,这里只展示了一些重要的概念。
Helm Concepts Expanded Key Chart(打包文件夹中的文件(不包含) )可以按照图表指南直接部署到集群图表(打包),上述文件的压缩包为tar.gz。 可以直接部署到图表中。 nameChart.yaml 定义了包的名称部分的标识。chartTemplate 为应用程序配置了 Kubernetes 清单中的一组 Golang 模板引擎值,用于模板渲染。 。Dyed Chart versionchart 版本部分标识图表 App Versionchart 图表中包含的应用程序的版本与图表的版本无关 Releasekubernetes 部署到集群的图表 同一个图表可以部署在多个版本中 版本名称 release Any 的名称版本独立于图表名称 每当部署/升级应用程序时,版本修订都会递增 数量独立于图表版本 helmdevelopment
每月 100 下载量超过10,000次
CNCF孵化项目
社区丰富
头盔 如何使用安装<p style="box-sizing: border-box; margin-top: 0px; margin-bottom: 0.8rem; color: rgb(76, 73, 72); font - 系列:-apple-system、BlinkMacSystemFont、“Segoe UI”、“Helvetica” Neue", Lato, Roboto, "PingFang SC", "微软雅黑", sans-serif; white-space: 正常;
# mac 通过 homebrew install helm 安装brew # 二进制文件 wget. https://github.com/helm/helm/releases/helm-v3.0.0-linux-amd6tar -zvxf helm-v3.0.0-linux-amd6mv linux-amd64/helm /usr/local/bin/helm
对于需要从 Helm2 升级到 Helm3 的用户提供了官方升级插件。我使用该插件进行升级,没有出现任何问题。 边框-框;边距-顶部:0px;颜色:rgb(76,73,72);字体-系列:-苹果-系统,BlinkMacSystem字体,“Segoe UI”、“Helvetica Neue”、Lato、Roboto、“PingFang SC”、“Microsoft YaHei”、Sans Serif。 白色-space: 正常; 背景-颜色: rgb(255, 255, 255);">图表:包含足够信息的 Helm 包,用于将一组 Kubernetes 资源安装到集群中的 Kubernetes 中。
helm命令行工具可以自动生成图表结构:helm create myapp
模板包含所有必需的 Kubernetes 资源的模板文件。 Value.yaml 文件存储图表的默认值。 这些值可以传递给helm install、helm update更新。 Chart.yaml 包含图表的描述信息,例如版本、名称等。 图表目录存储依赖的第三方图表。
安装图表
<p style="box-sizing: border-box; 边距-顶部: 0px; 边距-底部: 0.8rem; 颜色: rgb(76, 73, 72);k4]系列:-apple-system、BlinkMacSystemFont、“Segoe UI”、“Helvetica Neue”、Lato、Roboto、“PingFang SC”、“Microsoft YaHei”、sans-serif 白色-空格; :正常;
使用自定义值
查看发布状态
显示所有正在运行的版本
升级版本
回滚版本
删除释放
如何开发舵图
图表开发是 Helm 的核心,相对复杂。Helm 使用 Go 模板来模板化资源文件。Go 自带了几个内置函数。除了
的核心功能图表开发
下面我们列出了Helm Chart开发中的一些核心知识点,这里是一个简短的列表,如果是的话,建议您参考官方的
内置对象:发布。值、图表、文件;
值文件、--set>-f CustomValue>默认文件;
模板函数和管道:传入模板值是轻量级的处理,helm 包含 60 多个常用函数。
使用控制语句。
变量。
命名模板;
访问模板文件;
如何创建帮助文件 NOTS.Txt;
子图和全局变量;
.helmignore 文件忽略不必要的文件。
如何调试图表开发:helm lint、helm install --dry-run --debug、获取 helm 清单;
图表演示开发
我们使用Goweb程序iim来演示图表完整性的开发。过程。 Web应用镜像已推送至镜像仓库。
首先,在项目中创建一个图表目录。 使用 helm create iim 工具生成它。 其中,模板自动生成部署、服务、服务帐号资源文件以及定制的帮助文件模板。 这里不需要这些 Kubernetes 资源,因此可以删除一些不必要的文件,例如 serviceaccount。 _NOTES.txt:应用程序的帮助信息,包括访问地址_ _helpers.tpl:在哪里放置图表助手,以方便后续复用
容器:- name: { { .Chart.Name } } securityContext : { { - toYaml .Values.securityContext | nindent 12 } } 图片:“{{ .Values.image.repository }}:{{ .Chart.AppVersion }}" imagePullPolicy: { { .Values.image.pullPolicy } } 命令: ["./ iimserver"] 参数: [ "-c"," /app/config.toml", "-m";, "/app/model.conf", "-menu", "/app/menu.json", ]
修改deployment.yaml,添加入口程序参数。
replicaCount: 1image: Repository: daocloud.io/daocloud/iim-backend pullPolicy: IfNotPresent
更改程序的默认设置,即 Value.yaml 文件
apiVersion: v2name : iimdescription :产业机制模型冲刺项目类型:应用版本:0.1.0app版本:
评论前必须登录!
注册