资讯专栏INFORMATION COLUMN

初试 Helm 3

superPershing / 844人阅读

摘要:但此功能目前并不直接可用相关也已经创建。根源在于参数的获取实现上。省略输出可以看到,这个名称可以在这个中重复使用了。比如省略输出支持将推送至镜像仓库中简而言之就是使用镜像仓库同时存储镜像和不过这个功能我暂时还没验证。

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

Helm 2 是 C/S 架构,主要分为客户端 helm 和服务端 Tiller; 与之前版本相同,Helm 3 同样在 Release 页面提供了预编译好的二进制文件。差别在于原先的二进制包下载下来你会看到 helmtiller 。而 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 间重用

这是 Helm Release 中提到的功能。 但此功能目前并不直接可用 相关 issue 也已经创建。

(MoeLove) ➜  ~ helm3 list                                   
NAME    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART      
redis1  default         1               2019-05-17 00:21:06.686127031 +0800 CST deployed        redis-7.1.0
redis   default         1               2019-05-17 00:19:28.234013017 +0800 CST deployed        redis-7.1.0
(MoeLove) ➜  ~ helm3 -n moelove install redis1 stable/redis 
Error: cannot re-use a name that is still in use

根源在于 namespace 参数的获取实现上。

对应代码为:

func getNamespace() string { 
     if ns, _, err := kubeConfig().ToRawKubeConfigLoader().Namespace(); err == nil { 
         return ns 
     } 
     return "default" 
} 

直接使用 Kubeconfig 中的 Namespace 了,所以,我们可以做以下操作以使用此特性。

(MoeLove) ➜  ~ kubectl config current-context
kubernetes-admin@moelove
(MoeLove) ➜  ~ kubectl config set-context kubernetes-admin@moelove --namespace moelove
Context "kubernetes-admin@moelove" modified.
(MoeLove) ➜  ~ helm3 -n moelove install redis stable/redis
...# 省略输出
(MoeLove) ➜  ~ helm3 list
NAME    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART
redis   moelove         1               2019-05-17 00:26:44.572578745 +0800 CST deployed        redis-7.1.0

可以看到,redis 这个 release 名称可以在 moelove 这个 Namespace 中重复使用了。

必须指定 release 名称

在 Helm 2 中,如果没有指定 release 的名称,则会自动随机生成一个名称。但是在 Helm 3 中,则必须主动指定名称,或者增加 --generate-name 的参数。比如:

(MoeLove) ➜  ~ helm3 install stable/redis
Error: must either provide a name or specify --generate-name
(MoeLove) ➜  ~ helm3 install stable/redis --generate-name
...# 省略输出
(MoeLove) ➜  ~ helm3 list
NAME                    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART
redis1                  default         1               2019-05-17 00:21:06.686127031 +0800 CST deployed        redis-7.1.0
redis-1558024567        default         1               2019-05-17 00:36:09.294632336 +0800 CST deployed        redis-7.1.0
redis                   default         1               2019-05-17 00:19:28.234013017 +0800 CST deployed        redis-7.1.0
支持将 Chart 推送至 Docker 镜像仓库中

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

移除掉了 helm serve

在 Helm 2 中,可以简单的通过 helm serve 来启动一个本地简单的 HTTP 服务,用于托管本地 local repo 中的 Chart 信息。

不过这个功能在 Helm 3 中被移除了。可能是使用场景有限。

总结

Helm 3 的改动还是比较大的,但是去除掉 Tiller 的选择是非常正确的,这让集群权限的管理更加简单清晰。更多关于 Helm 3 的信息请关注 ReleaseNote


可以通过下面二维码订阅我的文章公众号【MoeLove】

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27836.html

相关文章

  • K8S 生态周报| 2019-05-20~2019-05-26

    摘要:微软本次提出的主要是为服务网格提供通用接口,以便能让有更加通用的规范就像当初那样子这里我不想引起其他问题,但生态中还是存在着各种各样的选择,希望大家理性选择,同时需要注意的是这个中公布的厂商中唯独没有的存在。 「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」。 KubeCon EU 举办 2019 年第一个 Kube...

    Tangpj 评论0 收藏0
  • K8S 生态周报| 2019-05-20~2019-05-26

    摘要:微软本次提出的主要是为服务网格提供通用接口,以便能让有更加通用的规范就像当初那样子这里我不想引起其他问题,但生态中还是存在着各种各样的选择,希望大家理性选择,同时需要注意的是这个中公布的厂商中唯独没有的存在。 「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」。 KubeCon EU 举办 2019 年第一个 Kube...

    lauren_liuling 评论0 收藏0
  • Helm 3 使用 harbor 作为仓库存储 charts

    摘要:简介本文讲述的是调教和的经验,从更新到并且将推送到中进行存储,移除了原先的在讲述怎么操作之前先来看一下和的新特性。按时安装这里为了简化测试操作,我关闭了数据卷的挂载并使用的是方式进行访问。 简介 本文讲述的是调教 Helm 3 和 harbor 1.6+ 的经验,从 helm2 更新到 helm 3 并且将 charts 推送到 harbor 中进行存储,移除了原先的 helm ser...

    Richard_Gao 评论0 收藏0
  • Openshift环境安装K8S软件管理工具Helm

    摘要:参考中文指南使用管理应用参考官方文档,环境安装时其指向安装客户端,版本参考。如下所示,在主机安装当前最新文档版可选。 参考: Make a Kubernetes Operator in 15 minutes with Helm; Deploy Monocular on OpenShift; Helm中文指南; 使用Helm管理kubernetes应用; https://he...

    Vultr 评论0 收藏0
  • Openshift环境安装K8S软件管理工具Helm

    摘要:参考中文指南使用管理应用参考官方文档,环境安装时其指向安装客户端,版本参考。如下所示,在主机安装当前最新文档版可选。 参考: Make a Kubernetes Operator in 15 minutes with Helm; Deploy Monocular on OpenShift; Helm中文指南; 使用Helm管理kubernetes应用; https://he...

    ISherry 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<