最近给部门的小伙伴做了一个关于helm
的入门介绍,收到了不错的反响,于将资料整理分享给博客的读者们。 本文第一部分介绍helm
是做什么的以及能解决什么问题。第二部分介绍helm
的核心概念及安装使用helm
的教程, 第三部分介绍helm
使用的核心即chart
的开发,这一章节通过一个示例给大家演示基本的开发步骤。最后一部分, 简单说明如何搭建私有模板仓。在读完后,相信你会对Helm
及生态有一个简单的了解。
如标题所示,官方给Helm
的定义是 kubernetes 的包管理器。那么什么是包管理器呢?
包管理器一组软件工具,它们以一致的方式自动安装、升级、配置和删除计算机操作系统的计算机程序 -维基百科
helm 帮助用户管理 kubernetes 程序,helm chart 帮助用户定义、安装和升级最复杂的 Kubernetes 应用程序,Charts 很容易 创建,版本管理,共享和发布,所以停止 copy-and-paste,开始使用 helm -helm 官方
helm
的官方文档中的描述更加详细,这里只列出一些重要的概念:
Helm Concept | 描述 | 重点 |
---|---|---|
Chart(unpackaged) | 一个文件夹的文件,遵循 chart 的准则 | 可以直接部署到集群 |
Chart(packaged) | 上述文件的压缩包 tar.gz | 可以直接部署到集群 |
Chart name | Chart.yaml 定义包的名称 | 部分标识 chart |
Templates | 构成应用程序的一组 Kubernetes 清单 | Golang 模板引擎 |
Values | 可以在 Kubernetes 清单中参数化的设置 | 用于 template 渲染 |
Chart version | chart 版本 | 部分标示 chart |
App Version | chart 中包含的应用程序版本 | 与 chart 版本独立 |
Release | kubernetes 集群中部署的 chart | 同一个 chart 可能部署多个 release |
Release name | release 任意名称 | 独立于 chart name |
Release Revision | 每次部署/升级应用程序时递增的数字 | 于 chart 版本无关 |
每个月超过百万次下载
CNCF Incubating project
繁荣的社区
helm3
剔除了服务 Tiller,直接与kubernetes apiserver
通信,所以安装相比helm2
更加简单。
# mac通过homebrew安装
brew install helm
# 二进制文件
wget https://github.com/helm/helm/releases/helm-v3.0.0-linux-amd6
tar -zvxf helm-v3.0.0-linux-amd6
mv linux-amd64/helm /usr/local/bin/helm
对于需要从 Helm2 升级到 helm3 的用户,官方提供了升级插件,我是使用插件进行升级的,没有遇到问题。
chart
:一个包含足够信息的 Helm 包,用于将一组 Kubernetes 资源安装到 Kubernetes 集群中。
helm 命令行工具能够自动生成一个 chart 结构:helm create myapp
templates
包含了所有所需 kubernetes 各个资源的模板文件,Value.yaml
文件存储chart
的默认值, 这些值可以通过helm install ,helm upgrade
更新,Chart.yaml
包含了chart
的描述信息,如版本,名称等。 charts
目录存储其依赖的第三方chart
。
在根据正在运行的 Kubernetes 集群进行身份验证的环境中,使用 Helm 从本地 chart 目录或 chart repo 安装。
chart
的开发是Helm
的核心,也比较复杂。Helm
使用Go
模板对资源文件进行模板化,除了Go
附带的几个内置函数,还添加了许多其他函数。
以下列举了helm chart
开发中几个核心知识点,这里只简单罗列,如果你需要使用,还是建议参考官方文档。
内置对象:Release,Values,Chart,Files
;
Values 文件,--set
>-f customValue
> default file;
模板函数及流水线:对传入 template 的值进行轻度处理,helm 内置了 60 多个常见函数;
控制语句的使用;
变量;
命名模版;
访问 templates 中的文件;
帮助文件 NOTS.Txt 如何编写;
subcharts 与全局变量;
.helmignore 文件忽略不需要的文件;
chart 开发如何进行调试:helm lint
,helm install --dry-run --debug
,helm get manifest
;
我们通过一个Go
web 程序iim
,来演示开发一个 chart 的完整流程。web 应用镜像已经推送到镜像仓中。
首先在项目中创建 chart 目录,我们使用helm create iim
工具生成。其中templates
会自动生成 deployment,service ,serviceaccount 资源文件,以及自定义帮助文件模板。我们可以移除一些不必要的文件,如 serviceaccount,因为这里不需要使用这些 kubernetes 资源; _ NOTES.txt
:关于应用的帮助信息,如访问地址 _ _helpers.tpl
: 放置 chart 帮助程序的地方,便于后续重用
containers:
- name: { { .Chart.Name } }
securityContext: { { - toYaml .Values.securityContext | nindent 12 } }
image: "{{ .Values.image.repository }}:{{ .Chart.AppVersion }}"
imagePullPolicy: { { .Values.image.pullPolicy } }
command: ["./iimserver"]
args:
[
"-c",
"/app/config.toml",
"-m",
"/app/model.conf",
"-menu",
"/app/menu.json",
]
修改 deployment.yaml,添加入口程序参数。
replicaCount: 1
image:
repository: daocloud.io/daocloud/iim-backend
pullPolicy: IfNotPresent
修改程序默认配置,即 Value.yaml 文件
apiVersion: v2
name: iim
description: 工业机理模型冲刺项目
type: application
version: 0.1.0
appVersion:文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/127931.html
kubeadm介绍kubeadm概述Kubeadm 是一个工具,它提供了 kubeadm init 以及 kubeadm join 这两个命令作为快速创建 kubernetes 集群的最佳实践。 kubeadm 通过执行必要的操作来启动和运行一个最小可用的集群。kubeadm 只关心启动集群,而不关心其他工作,如部署前的节点准备工作、安装各种Kubernetes Dashboard、监控解决方案...
摘要:与或等流行工具结合或集成在当今的混合云管理提供商中很常见。如果中止混合云管理合同,那么它只是策略的一部分,而加入现有资源则需要模板转换为混合云管理格式。实际上,组织不必选择最好的混合云管理产品。混合云管理(HCM)市场的发展如今有些停滞不前,但最近这一切发生了变化。很多企业开始解决云计算管理挑战,在采用云计算策略的企业中,超过一半的基础设施决策者正在积极监控使用情况,并创建有效的云计算策略。...
摘要:的包使用软件包管理系统进行管理。超过万人使用发行版本,并且拥有超过个适用于和的数据科学软件包。提供了大部分功能,并且大多数情况下两个可以同时使用。 Anaconda Anaconda简介 Anaconda是一个免费开源的Python和R语言的发行版本,用于计算科学(数据科学、机器学习、大数据处理和预测分析),Anaconda致力于简化包管理和部署。Anaconda的包使用软件包管理系统...
摘要:的开发环境有很多,可以在上搭建,也可以使用管理工具搭建,也可以直接在本机中安装。例如创建开发环境点击左下角,弹出创建开发环境框,输入环境名和选择类型即可。以上内容是我们需要搭建开发环境的全部内容。 tensorflow的开发环境有很多,可以在Docker上搭建,也可以使用Anaconda管理工具搭建,也可以直接在本机中安装tensorflow。在这里为了工具包的方便管理,我选择使用An...
摘要:但是在与此同时出现了然后随着的出现,又更名为,真的是百家争鸣那。采用文件来追踪依赖,而不是的和文件。然而他们并不想提交大量的文件,因为链码程序仅仅是个小的代码库。想必在年会逐渐替换以及中的,希望可以终结混乱的包管理机制。 作者: TopJohn原文连接:https://www.xuanzhangjiong.to... Fabric与dep 个人感受 接触Golang有2年时间了,从最...
阅读 314·2024-11-07 18:25
阅读 130468·2024-02-01 10:43
阅读 883·2024-01-31 14:58
阅读 847·2024-01-31 14:54
阅读 82816·2024-01-29 17:11
阅读 3103·2024-01-25 14:55
阅读 2003·2023-06-02 13:36
阅读 3061·2023-05-23 10:26