自去年年初开始放风Helm v3将要开始开发,到去年年底KubeConn 上海被一堆人追问到底啥时候发版本。今年五月份,Helm v3 终于发布了第一个alpha版本,让我们来一窥新版本的Helm 到底带来了什么。

Removal of Tiller

Helm 3最大的期待莫过于移除掉Tiller。很难想象一个开源项目,移除其中的一个核心组件会受到如此巨大的欢迎,其实毫不吝啬的说,Helm v3 alpha 1最大的功能就是去除了tiller。

由于历史原因,tiller 在集群应用版本管理和查询上扮演了重要的角色。但是随着RBAC等权限控制体系的组件完善,多租户和安全的需求日益兴起,tiller变得越来越不安全,社区在权限控制领域遇到了极大的阻碍。

移除tiller的好处主要有一下几点:

  • 更加简单和灵活的架构
  • 可以直接使用Kubernetes API交互
  • 客户端渲染Chart, 在Kubernetes集群中存储release信息
  • 客户使用壁垒更加的降低

CLI changes

  • helm delete ---> helm uninstall: 曾经完全删除一个release需要helm delete xxx --purge, 现在只需要uninstall就可以,purge会作为一个默认的行为
  • helm inspect ---> helm show: 这里可以查看Chart的具体信息
  • helm fetch ---> helm pull: 与docker pull看齐,为下一步兼容registry 做铺垫,像拉取镜像一样拉取Chart部署

Breaking Changes (Warning)

  • Namespaces changes

    Helm v2 只使用tiller 的namespace 作为release信息的存储,这样全集群的release名字都不能重复。Helm v3只会在release安装的所在namespace记录对应的信息,这样不同的namepsace就可以出现相同名字的release。

    同样的原因,如果已经使用Helm v2创建了release,那么就无法使用helm v3来进行升级操作,因为无法将原来的单一namespace信息迁移到所属namespace 下。这一块的迁移功能,社区正在紧锣密鼓的开发中

  • Chart dependency management

    • 老版本通过requirements.yaml和requirements.lock 来管理Chart的依赖,一个requirements.yaml 一般长相如下
    dependencies:
    - name: mariadb
    version: 5.x.x
    repository: https://kubernetes-charts.storage.googleapis.com/
    condition: mariadb.enabled
    tags:
    - database

    • 新版本直接使用Chart.yaml 来记录依赖信息,新的Chart.yaml格式和requirements.yaml 基本相同
      dependencies:
    - name: mariadb
    version: 5.x.x
    repository: https://kubernetes-charts.storage.googleapis.com/
    condition: mariadb.enabled
    tags:
    - database

  • Generate Name

    老版本Helm 可以直接安装chart 并不需要指定名称,Helm v3需要指定名称

Try

我们来试用一下Helm v3, 下载地址在这里https://github.com/helm/helm/releases/tag/v3.0.0-alpha.1。 为了防止与已经安装的Helm v2冲突,我们需要设置一下
$HELM_HOME set an alternative location for Helm files. By default, these are stored in ~/.helm,比如放到/tmp目录下。安装完毕后,helmv3 init初始化一下就可以使用。

我们使用wordpress为例子

[root@iZ8vbbnhdit552y4lytxpiZ ~]# ./helmv3 install stabel/wordpress

[root@iZ8vbbnhdit552y4lytxpiZ ~]# ./helmv3 ls
NAME NAMESPACE REVISION UPDATED STATUS CHART
test-v3 default 1 2019-05-27 16:50:46.100265945 +0800 CST deployed wordpress-0.6.13

可以看到,目前已经存在的Chart可以完全无缝迁移到helmv3 ,完全兼容。只是不需要tiller 来协助安装。以前Helm v2存储的release 都在tiller 所在的namespace。

[root@iZ8vbbnhdit552y4lytxpiZ ~]# kubectl get cm -n kube-system -l OWNER=TILLER
NAME DATA AGE
wordpress-default.v1 1 26h
wordpress-default.v2 1 26h
wordpress-default.v3 1 26h

这就是Helm v2存储release 信息的地方,可以看到都在kube-system命名空间下。

[root@iZ8vbbnhdit552y4lytxpiZ ~]# kubectl get secret | grep word
test-v3-wordpress Opaque 2 26h
wordpress-default-mariadb Opaque 2 26h
wordpress-default-wordpress Opaque 2 26h

在看Helm v3,所有的信息都存储在release对应的namespace 下,而且以secret存储。这是v2和v3很不相同的地方。

Migrate from v2 to v3

  • 针对目前已经存在的chart, helm v3可以无缝安装,无需迁移
  • v2与v3可以共存,tiller 可以继续存在
  • 已经使用v2安装的release,不能通过v3来升级,查看

Pushing Charts to OCI Registries

在如何远程托管Chart这件事上,经历了很多次的发展。最初是保存在本地,然后是打成压缩包,上传到oss 等远程存储,然后社区出现了Chartmuseum 这样的开源工具,提供公共的Chart托管。但是关于权限认证等方便并没有很好的解决方案。同时在后端存储方面,也没有能像Docker Registry 那样很好的节省空间避免重复存储的功能。

因此所有的目光都转向了Docker Registry,毕竟目前各大厂商都已经提供了镜像托管功能,能否复用这个能力来托管Chart是一个很好的方向。由此微软推出了 OCI Registry As Storage。根据镜像 OCI 标准规范,复用Registry 来存储Chart。这个目前已经集成到Helm v3试验版本里面。

我们来试用一下这个功能.
首先本地启动一个registry
docker run -dp 5000:5000 --restart=always --name registry registry:2

然后下载一个chart包helm fetch stable/wordpress

[root@iZ8vbbnhdit552y4lytxpiZ ~]# ./helmv3 chart save wordpress localhost:5000/wordpress:latest
Name: wordpress
Version: 0.6.13
Meta: sha256:83c48dd3c01a2952066ead67023ea14963a88db4287650baad5ea1ddd8ff9590
Content: sha256:248c8c68f4f614003c8b1a9d78787e5f07e979e9b996981df993cf380f498c97
latest: saved [root@iZ8vbbnhdit552y4lytxpiZ ~]# ./helmv3 chart list
REF NAME VERSION DIGEST SIZE CREATED
localhost:5000/wordpress:latest wordpress 0.6.13 248c8c6 12.0 KiB 11 seconds [root@iZ8vbbnhdit552y4lytxpiZ ~]# ./helmv3 chart push localhost:5000/wordpress:latest
The push refers to repository [localhost:5000/wordpress]
Name: wordpress
Version: 0.6.13
Meta: sha256:83c48dd3c01a2952066ead67023ea14963a88db4287650baad5ea1ddd8ff9590
Content: sha256:248c8c68f4f614003c8b1a9d78787e5f07e979e9b996981df993cf380f498c97
latest: pushed to remote (2 layers, 12.6 KiB total)

这样就完成了将Chart 推送到Registry的功能。这个功能目前处于实验性质,社区还是希望未来大家能够都转到这种存储方式上来。

What's Next

  • alpha1: 移除Tiller, 提供Library charts, 存储格式改成secret, 开始OCI集成工作
  • alpha2: 更好的 OCI 集成,Lua 模板支持
  • alpha3: 重构更新策略(可能是客户端侧进行,也可能是服务端侧进行)

容器服务 Kubernetes 版(ACK)

阿里云容器服务是 Kubernetes 认证服务提供商(KCSP),国内唯一进入 Gartner 竞争格局的公有云容器平台。容器服务 Kubernetes 版(ACK)是安全稳定的企业级容器平台,支持高性能网络和存储,提供面向应用的异构资源统一管理,为企业上云提供最佳云原生支持。

本文作者:xianlubird

原文链接

本文为云栖社区原创内容,未经允许不得转载。

深度解读Helm 3: 犹抱琵琶半遮面的更多相关文章

  1. 我就是认真:Linux SWAP 深度解读(必须收藏)

    我就是认真:Linux SWAP 深度解读(必须收藏) http://mp.weixin.qq.com/s?__biz=MzA4Nzg5Nzc5OA==&mid=2651660097& ...

  2. AI 新技术革命将如何重塑就业和全球化格局?深度解读 UN 报告(上篇)

    欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 张钦坤 腾讯研究院秘书长蔡雄山 腾讯研究院法律研究中心副主任祝林华 腾讯研究院法律研究中心助理研究员曹建峰 腾讯研究院法律研究中心高级研究员 ...

  3. 如何用区块链技术解决信任问题?Fabric 架构深度解读

    阿里妹导读:区块链技术,随着比特币的兴起而为大家所知.但是具体到技术本身,大家相对熟悉的几个词可能是“数据不可篡改”.“公开链”.“分布式数据”.“共识机制”等. 这篇文章将抛砖引玉,通过深度解读Hy ...

  4. 深度解读 AlphaGo 算法原理

    http://blog.csdn.net/songrotek/article/details/51065143 http://blog.csdn.net/dinosoft/article/detail ...

  5. 重写equal()时为什么也得重写hashCode()之深度解读equal方法与hashCode方法渊源

    今天这篇文章我们打算来深度解读一下equal方法以及其关联方法hashCode(),我们准备从以下几点入手分析: 1.equals()的所属以及内部原理(即Object中equals方法的实现原理) ...

  6. SQL Server 2019 深度解读:微软数据平台的野望

    本文为笔者在InfoQ首发的原创文章,主要利用周末时间陆续写成,也算近期用心之作.现转载回自己的公众号,请大家多多指教. 11 月 4 日,微软正式发布了其新一代数据库产品 SQL Server 20 ...

  7. 【转载】深度解读 java 线程池设计思想及源码实现

    总览 开篇来一些废话.下图是 java 线程池几个相关类的继承结构: 先简单说说这个继承结构,Executor 位于最顶层,也是最简单的,就一个 execute(Runnable runnable) ...

  8. Appium+python自动化(七)- 初识琵琶女Appium(千呼万唤始出来,犹抱琵琶半遮面)- 上(超详解)

    简介 “千呼万唤始出来,犹抱琵琶半遮面”,经过前边的各项准备工作,终于才把appium这位琵琶女请出来.那么下边就由宏哥给各位看官.小伙伴们和童鞋们来引荐这位美女(帅哥).这一篇主要是对前边的内容做一 ...

  9. 深度解读Facebook刚开源的beringei时序数据库——数据压缩delta of delta+充分利用内存以提高性能

    转自:https://yq.aliyun.com/topic/58?spm=5176.100239.blogcont69354.9.MLtp4T 摘要: Facebook最近开源了beringei时序 ...

随机推荐

  1. PuTTy linux下tomcat服务的相关命令

    一:Linux下tomcat服务的启动.关闭与错误跟踪,使用PuTTy远程连接到服务器以后,通常通过以下几种方式启动关闭tomcat服务:切换到tomcat主目录下的bin目录(cd usr/loca ...

  2. oracle习题练习-表空间-用户-表-约束

    题一 1.       创建名字为hy_tablespace的表空间,默认大小为10M;@@ 2.       创建一个用户,用户名以自己名字命名,并指定命名空间为hy_tablespace;@@@@ ...

  3. 系统日志和内核消息 $ dmesg$ less /var/log/messages$ less /var/log/secure$ less /var/log/auth

    查看错误和警告消息,比如看看是不是很多关于连接数过多导致? 看看是否有硬件错误或文件系统错误? 分析是否能将这些错误事件和前面发现的疑点进行时间上的比对.

  4. Nacos Committers 团队首亮相,发布 0.9.0 版本

    223 天,发布 14 个版本,19 位 Committers,39 位 Contributors. 在宣布开源后的第 223 天,Nacos 发布了其第14个版本 - 0.9.0,该版本提升了 Na ...

  5. Vue--vue中的生命周期

    Vue的生命周期: 在理解vue生命周期前要把握它的三个重点: 创建-> 改变 -> 销毁 创建: 1.执行beforeCreate 2.监控data 3.注册事件 4.执行create ...

  6. Hdu 4751(2-SAT)

    题目链接 Divide Groups Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  7. NFS客户端挂载目录后无写入权限的解决方案

    转载至:https://blog.csdn.net/younger_china/article/details/52089337 在客户机通过 mount -o rw -t nfs 192.168.1 ...

  8. Oracle操作XML各种场景介绍

    版权声明:凭栏处.潇潇雨歇. https://blog.csdn.net/IndexMan/article/details/28130961 近期在研究Oracle PLSQL中对于XML的系列操作. ...

  9. KiCad EDA 如何修改 Pcbnew 线路板的背景色?

    KiCad EDA 如何修改 Pcbnew 线路板的背景色? 关于背景色,传统的原理图是白色,线路板是黑色. EDA 软件 类型 颜色 Protel 原理图 浅黄色 Protel PCB 黑色 Orc ...

  10. iOS 检测耳机插入/拔出

    http://www.verydemo.com/demo_c134_i28481.html 开发过程中录音和播放这块碰到了一些问题,麻烦的主要有三个: 检测是否有声音输入设备 当有多个声音输出设备时, ...