KubeCon 参会记录之 -- Helm 3 Deep Dive

简介:

KubeCon 第一天有很多Sig Introduce 就是K8s 社区对应的Maintainer来对应的社区兴趣小组大家见见面,聊一聊目前社区此小组关注的事情,正在开发的进展,以及社区此方向下一步进展。第一天一般都是介绍性质的,第二天就会有Deep Dive xxx,一般就是各个maintainer 来深入的讲一下本sig 将要进行的大feature 或者深入的和参会者聊一聊大家有啥意见或者想法。参加此次大会发现,一般关于分论坛的topic,热门领域比如AI,区块链,大厂分享几乎都是会议室爆满,对于这样的sig 特别兴趣小组讨论,第一天介绍性的时候人就很少,第二天deep dive的可能就屈指可数。举个例子,我参加了第一天和第二天的sig app讨论,第一天会议室大约有15个人去听,第二天deep dive sig app 讨论,整个会议室,加上工作人员一共7个人,maintainer 说,我也不准备啥 ppt 了,咱们坐下来聊聊吧。其实作为一个一线开发者,这样的maintainer面对面能了解到更多社区的发展意图,目前社区正在进行的事情,已经如何与社区互动,相比一些介绍性的topic,坐下来聊一聊,更能受益匪浅。

闲话说的有点多,下面进入正题。本篇主要介绍Helm v3下一步的发展,已经目前开发进度情况。此场topic属于deep dive sig 议题,主讲人是Helm core maintainer Taylor Thomas。按理说应该参会人员极少,但是等我到达会场的时候发现座位已经几乎满员,后来陆陆续续来的人塞满了会议室的过道与讲台,甚至会议室的门口都排了一些人探着头,maintainer应该也没预料到会有这么多人关心helm v3的进展,让大家多挤一挤。

Helm 3 啥时候发布

想必主讲者也知道,大家最想问的一个问题就是,helm 3到底啥时候发布,进展情况如何。开篇maintainer就丢出来一个地址 https://github.com/helm/helm/projects/1,这是第一个helm project tracker,里面包含了所有目前helm v3正在进行的工作以及将要进行的工作,同时branch https://github.com/helm/helm/tree/dev-v3 也能跟踪到目前 v3版本正在进行的所有工作,大家可以在这里看到他们正在提交的代码。

helm-v3-1.jpg

这里回顾了一下Helm的发展历史,可以看到最终Helm 3发布的时间是 Soon. 主讲者说每个session都可以进行提问互动,这里就有一位哥们问了一个问题,soon 到底是啥时候。 maintainer回答的也比较风趣,他表示我不能说这个版本将在某一天某一日发布,我只能说这一个版本 comming very soon.全场爆笑,但是他也表示了此版本的alpha release将在明年的第一季度发布。

Embedded Lua engine

Helm 3将会集成Lua 引擎,在chart.yaml 里面可以使用 lua代替yaml template。这带来的好处主要有以下几点。

  • Treat Kubernetes resources as objects, not strings
  • Intercept lifecycle events, modify chart on-the-fly
  • Develop and import reusable “library charts”
  • Helm plugins will have access to the Lua runtime

基本理解为,使用Lua后,yaml资源描述就由原来的yaml字符串变为lua对象,这样整个资源的生命周期就变为lua对象的生命周期管理。同时这样能够复用很多基本的chart,使用import来复用。同时helm client也提供了定制,能够让helm plugin 接触 lua 运行时。其实这么说大家是有一点懵逼的,在场的同志们也是一脸懵逼,下面我们看一下helm 2与helm 3 chart 对比图。

helm-v3-2.jpg
helm-v3-3.jpg

是不是满脸惊讶。这还是我认识的那个 Helm 吗?在场的同学问了第一个问题是,Helm3还能兼容Helm 2的chart吗? 估计大家被Helm 3 Chart的样子惊呆了。粗粗来看,基本上 Helm3就把chart 由原来的 yaml 描述变成了lua描述,这样能够以一个对象的形式去描述 k8s 资源,也能够实现复用,不过看起来怪怪的,一切等helm3出来才能明白。

Removal of Tiller

这个应该是 Helm3最令人期待的特性了。当Maintainer show 出这个页面的时候,现场响起来掌声。可见tiller是一个大家公认不应该存在的玩意。Maintainer很尴尬的也跟着象征性的鼓鼓掌。去掉Tiller后主要有以下几个变化。

  • Shrinks the security model for Helm, now client-only
  • Auth is delegated to Kubernetes RBAC
  • “Release” CRD will store instance of an application
  • “ReleaseVersion” CRD will store version of release

helm-v3-4.jpg

可以通过这个架构图看到,tiller 没有后,最大的好处就是多租户的权限控制,一切都重归k8s的 RBAC,这样可以很好的进行多租户的权限控制。Helm会创建两个 CRD,一个是Release记录应用的源信息,另一个ReleaseVersion 记录历史版本信息。现在 k8s 官方也是如此建议,所有的新功能都先以 CRD 的方式扩展,不要对主干代码有太多变更。Helm client不用再通过gPRC和 tiller 通信,其实这还有一个好处,写过使用自己的Helm client代码的同学应该都有一个痛苦点,那么就是使用gPRC通信,每次都得通过tunnel和tiller连接,网络消耗极大,代码写起来也很麻烦,一切都 HTTP 后,世界就清静了。

Chart repo auth & upload

Helm 社区终于意识到 chart 存储也是很重要的一件事,helm3将默认集成chart repo的授权与推送命令。这里的改变主要有如下几处:

  • “helm push” command to upload chart to a repo
  • Plugins can supply custom protocols (e.g. s3://)
  • “helm login” command to authenticate against a repo
  • Limit which users can upload/install which charts

主要概括一下就是可以helm login登录chart repo服务,然后 push 自己的chart,同时也可以pull 一些公开的chart。这里其实有一个类似docker hub的概念,后面应该也会有chart hub,这些会由第三方来实现,当然maintainer由于现在在微软工作,他们也表示微软也会提供chart托管服务。

New chart.yaml

新的chart 版本将在helm 3提供,主要由一下几点:

  • Current chart.yaml files will not be broken
  • The requirements file will no longer exist
  • Requirements will now be part of the charts.yaml

举个例子很好理解。

helm-v3-5.jpg

可以看到所有依赖项都直接在chart.yaml里面展现,这样比较一目了然。

Other Helm 3 changes

  • “Managed” hooks - if Helm creates something, it will delete it
  • index.yaml will move to index.json, and be partitioned for performance
  • Schematize your values by including a values.schema.yaml file
  • Helm client libraries will be much better

现在Helm 2使用hooks创建的 k8s 资源在删除release的时候不会被连带删除。index.yaml被替换为index.json,maintainer表示这是为了增加性能。对于开发者最好的消息莫过于helm 3将要提供client library,再也不用为了引用helm client代码,而去翻看它的源码一点点找依赖了,不得不吐槽,k8s vendor真的很可怕。

In the end

从参会者的积极性来看,Helm依然是社区以及线下生产公认的通用包管理器。自从Helm 进入到CNCF社区项目后,估计后面社区会把所有关于包管理器的功能都放到Helm中,Helm后面在社区的发展应该会越来越火热。这里穿插一下sig app讨论的一个小故事,sig app开发了一个Application kind,其实就是定义了一个应用级别的 spec,描述了一些 k8s 子资源的聚合体,并不具备update等功能,当时sig app成员就表示,helm v3将会默认支持application kind,由此可见,关于包管理与资源管理社区会把资源越来越多的投入到Helm这一边。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
数据挖掘
深入分析:ERP系统的优势与劣势
深入分析:ERP系统的优势与劣势
1075 3
|
存储 缓存 Unix
微信小游戏制作工具中实现计时功能
微信小游戏制作工具中实现计时功能
629 0
|
供应链 BI
SaaS观察:餐饮SaaS
什么是餐饮SaaS很多人有个误区,即SaaS一定是公司内部角色使用,其实大量的SaaS服务日常消费者也时时刻刻参与,比如消费者去餐厅吃饭经常用到的餐厅订单管理软件。通常来说,SaaS软件定位为企业服务工具,即SaaS本质上为组织提高生产力或者改善生产关系的工具,因此一切为提升组织生产力或改善生产关系的软件服务都可以定义为SaaS服务。企业核心业务基本上可以概括为:人财物产供销存七大要素,分别是人力
1461 0
SaaS观察:餐饮SaaS
|
移动开发 安全 Java
钉钉企业应用网关了解一下
通过企业应用网关,即便该服务器完全在互联网上运行,我们也能够实现“零信任”访问。
2767 1
钉钉企业应用网关了解一下
|
SQL 数据采集 BI
Quick 引擎-抽取性能提升
本文介绍了一种通过并发抽取方案提升 Quick BI 数据抽取性能的方法,利用 DataX 进行二次开发,实现数据同步至高性能 OLAP 引擎。通过指定分区键或配置多条 SQL 实现任务拆分,显著减少了数据抽取时间,优化效果得到客户认可。
407 0
Quick 引擎-抽取性能提升
|
自然语言处理
学生党打工人救星,GPT一句话生成精美PPT
学生党打工人救星,GPT一句话生成精美PPT
694 1
|
人工智能 Python
Python asyncio 的 Future 和 Task
Python asyncio 的 Future 和 Task
293 1
|
人工智能 关系型数据库 分布式数据库
AI与云数据库的深度结合:黄铭钧院士点赞PolarDB,引领云数据库2.0时代
最近,阿里云PolarDB开发者大会的举办引起了广泛关注,中国科学院外籍院士、世界级数据库专家黄铭钧在阿里云PolarDB开发者大会上表示,AI与云数据库的深度结合是数据库发展的必然趋势。他点赞以PolarDB为代表的中国数据库正在引领全球云原生数据库的发展。那么本文就来简单聊聊AI与云数据库的深度结合,引领云数据库2.0时代,以及院士点赞国产数据库的意义和数据库产业突破的重要性和前景。
715 2
AI与云数据库的深度结合:黄铭钧院士点赞PolarDB,引领云数据库2.0时代
|
开发框架 前端开发 .NET
【C#】LIMS实验室信息管理系统源码
LIMS(Laboratory Information Management System)即实验室信息管理系统,是通过对样品检验流程、分析数据及报告、实验室资源和客户信息等要素的综合管理,按照标准化实验室管理规范,建立符合实验室业务流程的质量体系,实现实验室信息化管理。是实验室提高分析水平、规范样品检测过程和降低实验成本,为客户提供优秀服务的信息平台。
450 1
|
存储
WWW服务
WWW服务
15853 0