初试 Helm 3

640?wx_fmt=png

经过了长时间的开发,Helm 3 终于发布了第一个 alpha 版本。本文将简单介绍 Helm 3 新特性。
移除 Tiller

640?wx_fmt=png


Helm 2 是 C/S 架构,主要分为客户端 helm 和服务端 Tiller; 与之前版本相同,Helm 3 同样在 Release(https://github.com/helm/helm/releases)页面提供了预编译好的二进制文件。差别在于原先的二进制包下载下来你会看到 helm 和 tiller 。而 Helm 3 则只有 Helm 的存在了。
Tiller 主要用于在 Kubernetes 集群中管理各种应用发布的版本,在 Helm 3 中移除了 Tiller, 版本相关的数据直接存储在了 Kubernetes 中。
现在我们直接在一个新创建的集群上来使用 Helm。测试集群的创建可以参考我之前的文章 使用 Kind 搭建你的本地 Kubernetes 集群。
与之前版本相同,我们需要先执行 helm init 来进行初始化。但现在的初始化就简单了很多,不再需要给集群中部署 Tiller 了。
(MoeLove) ➜  ~ export HELM_HOME=/tmp/helm3	
(MoeLove) ➜  ~ helm3 init	
Creating /tmp/helm3/repository	
Creating /tmp/helm3/repository/cache	
Creating /tmp/helm3/plugins	
Creating /tmp/helm3/starters	
Creating /tmp/helm3/cache/archive	
Creating /tmp/helm3/repository/repositories.yaml	
Adding stable repo with URL: https://kubernetes-charts.storage.googleapis.com	
$HELM_HOME has been configured at /tmp/helm3.	
Happy Helming!

原先,由于有 RBAC 的存在,我们在开始使用时,必须先创建一个 ServiceAccount 而现在 Helm 的权限与当前的 Kubeconfig 中配置用户的权限相同,非常容易进行控制。
这样也大大增强了使用 Helm 的安全性。
Release 名称可在不同 ns 间重用

640?wx_fmt=png


这是 Helm Release 中提到的功能。 但此功能目前并不直接可用 相关 issue 也已经创建。
 
 
  1. (MoeLove) ~ helm3 list

  2. NAME NAMESPACE REVISION UPDATED STATUS CHART

  3. redis1 default 1 2019-05-17 00:21:06.686127031 +0800 CST deployed redis-7.1.0

  4. redis default 1 2019-05-17 00:19:28.234013017 +0800 CST deployed redis-7.1.0

  5. (MoeLove) ~ helm3 -n moelove install redis1 stable/redis

  6. Error: cannot re-use a name that is still in use}}}

  7. 根源在于 Namespace 参数的获取实现上。


  8. 对应代码为:

  9. {{{func getNamespace() string {

  10. if ns, _, err := kubeConfig().ToRawKubeConfigLoader().Namespace(); err == nil {

  11. return ns

  12. }

  13. return "default" }



直接使用 Kubeconfig 中的 Namespace 了,所以,我们可以做以下操作以使用此特性。
 
 
  1. (MoeLove) ~ kubectl config current-context

  2. kubernetes-admin@moelove

  3. (MoeLove) ~ kubectl config set-context kubernetes-admin@moelove --namespace moelove

  4. Context "kubernetes-admin@moelove" modified.

  5. (MoeLove) ~ helm3 -n moelove install redis stable/redis

  6. ...# 省略输出

  7. (MoeLove) ~ helm3 list

  8. NAME NAMESPACE REVISION UPDATED STATUS CHART

  9. redis moelove 1 2019-05-17 00:26:44.572578745 +0800 CST deployed redis-7.1.0



可以看到,Redis 这个 Release 名称可以在 Moelove 这个 Namespace 中重复使用了。
必须指定 Release 名称

640?wx_fmt=png


在 Helm 2 中,如果没有指定 Release 的名称,则会自动随机生成一个名称。但是在 Helm 3 中,则必须主动指定名称,或者增加 --generate-name 的参数。比如:
 
 
  1. (MoeLove) ~ helm3 install stable/redis

  2. Error: must either provide a name or specify --generate-name

  3. (MoeLove) ~ helm3 install stable/redis --generate-name

  4. ...# 省略输出

  5. (MoeLove) ~ helm3 list

  6. NAME NAMESPACE REVISION UPDATED STATUS CHART

  7. redis1 default 1 2019-05-17 00:21:06.686127031 +0800 CST deployed redis-7.1.0

  8. redis-1558024567 default 1 2019-05-17 00:36:09.294632336 +0800 CST deployed redis-7.1.0

  9. redis default 1 2019-05-17 00:19:28.234013017 +0800 CST deployed redis-7.1.0



支持将 Chart 推送至 Docker 镜像仓库中

640?wx_fmt=png


简而言之就是使用镜像仓库同时存储 Docker 镜像和 Helm 3 Chart 不过这个功能我暂时还没验证。之后有空再验证。
移除掉了 helm serve

640?wx_fmt=png


在 Helm 2 中,可以简单的通过 helm serve 来启动一个本地简单的 HTTP 服务,用于托管本地 local repo 中的 Chart 信息。
不过这个功能在 Helm 3 中被移除了。可能是使用场景有限。
总结

640?wx_fmt=png


Helm 3 的改动还是比较大的,但是去除掉 Tiller 的选择是非常正确的,这让集群权限的管理更加简单清晰。更多关于 Helm 3 的信息请关注 ReleaseNote(https://github.com/helm/helm/releases/tag/v3.0.0-alpha.1)。
本文转载自公众号:MoeLove, 点击查看原文
获取更多 Helm 相关资料,扫描下方二维码加微信好友,备注『加群』。
640?wx_fmt=jpeg
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值