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 ...
随机推荐
- 【C#】C#中使用GDAL3(二):Windows下读写Shape文件及超详细解决中文乱码问题
转载请注明原文地址:https://www.cnblogs.com/litou/p/15035790.html 本文为<C#中使用GDAL3>的第二篇,总目录地址:https://www. ...
- P2014选课
洛谷P2014选课 一道树形DP题. f[i][j]表示i个点选j门课程的最大学分. 递推方程: for(int a=n;a>0;a--)//总共选择多少 for(int b=0;b<a; ...
- wait()、notify()、notifyAll()(三)
有新理解持续更新 轮询 线程本身是操作系统中独立的个体,但是线程与线程之间不是独立的个体,因为它们彼此之间要相互通信和协作. 想像一个场景,A线程做int型变量i的累加操作,B线程等待i到了10000 ...
- odoo14--odoo前端框架owl【odoo web library】
原文链接:https://www.alanhou.org/odoo-14-owl-todolist/ 1.组件树 Root / \ A B / \ ...
- Redis挂了,流量把数据库也打挂了,怎么办?
你好呀,我是歪歪. 是这样的,前几天有个读者给我发消息,说面试的时候遇到一个场景题: 他说他当时,一时间竟然找不到回答问题的角度,感觉自己没有回答到点子上. 我仔细想了一下,确实是感到这个问题有一丝丝 ...
- 《Android原生整合虹软SDK开发uniapp插件》
1.项目背景 应公司要求,需要开发一套类似人脸打卡功能的app,但是因为我们公司没有很强的原生android开发者,所以根据现状选择了第三方跨平台的uniapp,想必目前大多人都了解这个平台了,我也就 ...
- 创建型-单例模式 SingletonPattern
单例模式 Singleton 保证一个类只有一个实例的实现方法 给其他类提供一个全局的访问点. 由自己创建自己的唯一实例 实现 实现方法分为饿汉式(线程安全).懒汉式(线程不安全).懒汉式(lock+ ...
- a href="tel" 拨打电话
电话号码是固定的: <a href="'tel:10086">10086</a> 电话号码是动态获取时: 走默认的方式失败 <a href=" ...
- ms17-010
永恒之蓝和ms17-010简介: 永恒之蓝(EternalBLUE)"是Shadow Brokers(影子经纪人)黑客组织公布的一款黑客工具,该工具利用的漏洞也被称为MS17-010漏洞,M ...
- 【剑指offer】59 - I. 滑动窗口的最大值
剑指 Offer 59 - I. 滑动窗口的最大值 知识点:队列:滑动窗口:单调 题目描述 给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值. 示例 输入: nums = [ ...