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 ...
随机推荐
- pagehelper插件使用时查询不到数据
刚用mybatis 的分页插件时,老项目中分页封装的分页类起始为( pageno-1)* pagesize 于是直直接在pagehelper.start(start,pagesize)来进行分页.结 ...
- C#中使用jieba.NET、WordCloudSharp制作词云图
目录 词云简介 准备工作 基本算法 算法实现 运行测试 参考资料 词云简介 "词云"由美国西北大学新闻学副教授.新媒体专业主任里奇·戈登(Rich Gordon)于2006年最先使 ...
- NOIp 2020
游记 Day-1 我已经开始慌了. 不知道前路如何.不想回文化课.唯一一次机会,可是这几天却一直在颓,不颓就慌. 没心思写题,导致这几天看的题啥都不会.不知道考试当天又会出什么幺蛾子. 啊啊啊,烦. ...
- 搭建kerberos和NTP服务器以及安全的NFS服务
说明:这里是Linux服务综合搭建文章的一部分,本文可以作为单独搭建Kerberos和NTP时钟服务的参考. 注意:这里所有的标题都是根据主要的文章(Linux基础服务搭建综合)的顺序来做的. 如果需 ...
- 注解@ConfigurationProperties使用方法(二十)
前言 最近在思考使用java config的方式进行配置,java config是指基于java配置的spring.传统的Spring一般都是基本xml配置的,后来spring3.0新增了许多java ...
- Maven作用及应用
1.简介 Maven是一个项目管理的Java 工具,在JavaEE中,我们可以使用Maven方便地管理团队合作的项目,现在我们在学习JavaEE框架,使用Maven可以管理类库,有效方便地供团队中的其 ...
- WebAssembly正逐渐成为FaaS的主力
相信很多人都知道PaaS(平台即服务)和IaaS(基础设施即服务).而随着云计算时代的发展,逐渐出现了大量的XaaS形式的概念,这些技术从原先的硬件服务器,虚拟化服务,再到容器化逐渐转变.使得软件发布 ...
- tomcat与springmvc 结合 之---第19篇(下,补充) springmvc 加载.xml文件的bean标签的过程
writedby 张艳涛,上一篇写了springmvc对<mvc:annoXXXX/>标签的解析过程,其实是遗漏重要的细节,因为理解的不深入吧 今天接着解析<bean>标签 & ...
- 通过jstack日志分析和问题排查
简介 jstack用于生成java虚拟机当前时刻的线程快照.线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁.死循环 ...
- Appium使用inspactor开始session报"Could not connect to server; are you sure it's running?"
appium在使用inspactor start session时提示:Could not connect to server; are you sure it's running?如下图 解决方案为 ...