Helm on K8S
前言
容器的出现,标志着云原生的到来,Docker 基于 Linux 隔离、虚拟化等能力封装了应用;Kubernetes 的出现,建立了云原生时代的技术基础设施,它基于对容器的编排封装了集群;Kubernetes 可以说是云原生的操作系统,它解决了容器之间隔离与协助的问题、解决了分布式系统可靠性的问题;而云原生发展的脚步并没有停下来,这就是 Helm,它封装了应用(Kubernetes 应用的定义、安装和升级)。
Kubernetes应用部署的挑战
通过 Kubernetes 部署一个应用,我们需要写很多的 yml 文件来描述服务,包括 Pod,Service,Volume,Namespace,ReplicaSet,Deployment,Job 等等。然后需要通过 Kubernetes 命令行工具 kubeclt 去逐个 apply。

在这个过程中,我们遇到了以下问题:
- 通常这些 yml 文件被维护在 git 仓库中,一般 kubectl apply 是在自己的主机上进行,没有纳入 CR 流程,git 仓库的更新也面临挑战。
- 这些 yml 配置无法复用
Helm 是什么?
Helm 是一个 Kubernetes package manager,Chart 是它定义的格式,类比 Linux 系统下的包管理工具,就像是 Debian 系统的 apt-get 命令与 dpkg 格式、REHL 系统的 yum 命令与 rpm 格式。

Chart的格式如下:
filebeat/
templates/
NOTES.txt
clusterrole.yaml
clusterrolebinding.yaml
configmap.yaml
daemonset.yaml
deployment.yaml
serviceaccount.yaml
Chart.yaml
requirements.yaml
values.yml
- Chart.yaml给出了应用自身的详细信息(名称、版本、许可证、自述、说明、图标,等等)
- requirements.yaml给出了应用的依赖关系,依赖项指向的是另一个应用的坐标(名称、版本、Repository地址)
- values.yaml给出了所有可配置项目的预定义值。
部署应用时,Helm会先将管理员设置的值覆盖到values.yaml的默认值上,然后以字符串替换的形式传递给templates目录的资源模板,最后生成要部署到Kubernetes的资源文件。由于Chart封装了足够丰富的信息,所以Helm除了支持命令行操作外,也能很容易地根据这些信息自动生成图形化的应用安装、参数设置界面。
Chart 定义统一的应用配置格式,并通过社区的力量号召大量开发者贡献常用应用的 Chart。并建立了类似 Docker hub
的 Chart 存储仓库,建立了应用发布者与使用者之间责任分明的关系。
应用发布者通过 Helm 打包应用到 Helm Hub 仓库。
使用者通过 Helm 下载应用并安装在 Kubernetes 上。
总结
Helm 的思想与 Docker 一致,通过封装与打包,隐藏与使用者无关的细节,解放使用者双手。但 Helm 也并非银弹,它无法很好的管理有状态服务的依赖关系。云原生还在继续~
Helm on K8S的更多相关文章
- helm istio k8s docker
helm https://hub.helm.sh/ k8s https://www.kubernetes.org.cn/k8s istio 微服务 https://istio.io/
- kubernetes(k8s) helm安装kafka、zookeeper
通过helm在k8s上部署kafka.zookeeper 通过helm方法安装 k8s上安装kafka,可以使用helm,将kafka作为一个应用安装.当然这首先要你的k8s支持使用helm安装.he ...
- k8s之helm入门
1.概述 helm是k8s的另外一个项目,相当于linux的yum,在yum仓库中,yum不光要解决包之间的依赖关系,还要提供具体的程序包,helm仓库里面只有配置清单文件,而没有镜像,镜像还是由镜像 ...
- k8s结合helm部署
一.安装Helm helm教程以及安装可以参考这篇文章 二.Heml说明 常见的helm模板如下 myapp - chart 包目录名 ├── charts - 依赖的子包目录,里面可以包含多个依赖的 ...
- ASP.NET Core 借助 Helm 部署应用至K8S
前言 玩K8S也有一段时间了,借助云服务提供商的K8S控制台,已经可以很方便的快速部署应用至K8S.通过简单的点击,可以一次性帮忙创建K8S 对象:Deployment.Service.Ingress ...
- 容器编排系统K8s之包管理器helm基础使用(二)
前文我们介绍了helm的相关术语和使用helm安装和卸载应用,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14305902.html:今天我们来介绍下自定义 ...
- k8s的应用包管理工具helm的部署和使用
1.概述 我们一般是在k8s里面部署一些简单的应用,比如用deployment,daemonset,statefuleset的方式来部署应用,但是如果要部署一些复杂的应用,那么整个配置的编写.部署的过 ...
- Helm安装和项目使用
整体架构 1.为什么要用? 首先在原来项目中都是基于yaml文件来进行部署发布的,而目前项目大部分微服务化或者模块化,会分成很多个组件来部署,每个组件可能对应一个deployment.yaml,一个s ...
- Helm神器,让管理Kubernetes像yum安装包一样简单
目录 一.什么是Helm 二.安装 1.安装helm客户端 2.安装Tiller 3.创建服务端 4.给Tiller授权 5.为 Tiller 设置帐号 6.验证Tiller是否安装成功 三.Helm ...
随机推荐
- 前端开发入门到进阶第五集【安装SublimeServer】
参考:https://www.cnblogs.com/jf-67/p/8031614.html 1.我们可以直接在sublime text里面安装,Ctrl+shift+p进入命令模式,输入insta ...
- swagger是什么(十六)
前言: swagger:神气十足,大摇大摆 在用Springboot进行开发时,有的实体类上用到了注解@ApiModelProperty("接受人代码"),特此整理此注解的出处及作 ...
- informix常用函数
一.常用函数 1.decimal decimal(14,2):14位数,小数占两位:decimal(26,8),有效长度为26,小数位占8位. 2.cast cast:Oracle中的数据类型转换函数 ...
- 跨域jsonp+jQuery+json+html动态生成表格
1.什么是跨域 浏览器对于javascript的同源策略的限制,例如a.cn下面的js不能调用b.cn中的js,对象或数据(因为a.cn和b.cn是不同域),所以跨域就出现了. 凡是拥有scr这个属性 ...
- 鸿蒙轻内核定时器Swtmr:不受硬件和数量限制,满足用户需求
摘要:本文通过分析鸿蒙轻内核定时器模块的源码,掌握定时器使用上的差异. 本文分享自华为云社区<鸿蒙轻内核M核源码分析系列十四 软件定时器Swtmr>,作者:zhushy . 软件定时器(S ...
- [WinError 10013]以一种访问权限不允许的方式做了一个访问套接字的尝试
Django报错截图如下: 原因分析:出现这种情况在Windows中很常见,就是端口被占用 解决步骤: 1:进入windows中的命令行窗口(win+R之后输入cmd就可以进去) 2:输入 net ...
- 最短路径问题 Dijkstra ——Python实现
# 最短路径算法 Dijkstra # 输入:含权有向图 G=(V,E),V={1,2,3...n} # 输出:G中顶点 1 到各个顶点地最短距离 Dijkstra算法各点权值变化情况: 1 ...
- noip模拟测试22
考试总结:这次考试题,有好多部分分,导致了我在考试过程中一心想拿到这些部分分,对于正解没有留出时间进行思考,这是一个教训,在以后的考试中我一定要留出足够的思考时间,不要被部分分限制.还有,我的部分分也 ...
- 免费,好用的天气预报API
不多说直接上! 一.API服务,天气API 网站:http://api.help.bj.cn/api/ 怎么使用网站有很详细的解释 $.ajax({ type: "GET", // ...
- PHP-Audit-Labs-Day1 - in_array函数缺陷
函数缺陷原理分析 先看一段简单的源代码 class Challenge{ const UPLOAD_DIRECTORY = './solutions/'; private $file; private ...