helm3是helm发布的最新一次大版本变化,本次更新主要变化如下
https://github.com/helm/helm/releases/tag/v3.0.0-alpha.1
1.移除Tiller
Helm2时期,添加了Tiller组件和GRPC来处理Helm chart的安装和管理,呈现chart并将它们推送到Kubernetes API服务器
Tiller允许团队共享一个Kubernetes集群,多个operator可以使用同一组版本,但是随着Kubernetes API的发展,Tiller没有跟上,这导致了一些人担心授予任何可以访问Tiller的人的权限过于宽泛。
在Kubernetes 1.6中默认启用基于
角色的访问控制(RBAC)后,锁定Tiller以用于生产场景变得更加难以管理。由于可能的安全策略数量众多,我们的立场是提供允许的默认配置。这使首次使用的用户可以开始试用Helm和Kubernetes,而不必先深入研究安全控件。不幸的是,这种宽松的配置可能会授予用户他们原本不希望拥有的各种权限。
文章图片
2.release名字在不同namespace下可以重复
Helm2中release的相关信息都被保存在与Tiller相同的命名空间下,所以此时release的名称必须是唯一的。
Helm3中release的相关信息保存在应用自己对应的命名空间下,所以此时可以在不同的命名空间下使用相同的release名称,而且不会相互干扰。
3.go代码中导入路径进行了修改
在Helm 3中,Helm将Go导入路径从k8s.io/helm切换到了helm.sh/helm。 如果打算升级到Helm 3 Go客户端库,请确保更改导入路径。
4.简化模板对象 .Capabilities
Capabilities:提供了关于 Kubernetes 集群支持的功能的信息,包含有关Kubernetes版本信息的map-like对象(.Capabilities.KubeVersion),Tiller(.Capabilities.TillerVersion)和支持的Kubernetes API版本(.Capabilities.APIVersions.Has “batch/v1″)
Capabilities.APIVersions 是一组版本信息。
Capabilities.APIVersions.Has $version 指示是否在群集上启用版本(batch/v1)。
Capabilities.KubeVersion 提供了查找 Kubernetes 版本的方法。它具有以下值:Major,Minor,GitVersion,GitCommit,GitTreeState,BuildDate,GoVersion,Compiler,和 Platform。
Capabilities.TillerVersion 提供了查找 Tiller 版本的方法。它具有以下值:SemVer,GitCommit,和 GitTreeState。
5.将requirements.yaml合并到Chart.yaml中
6.helm install 时需要指定 Release Name
在Helm 2中,如果未提供名称,将给出一个自动生成的名称。 在Helm 3中,如果Helm安装未提供名称,Helm将引发错误。
对于仍然希望自动生成一个名称的用户,可以使用--generate-name标志为您创建一个名称。
7.支持将chart push到远程仓库
Chart Repository是可以存储和共享chart。 Helm客户端将Helm Charts打包并运送到Chart Repository。简而言之,Chart Repository可以是一个基本的HTTP服务器,其中包含index.yaml文件和一些打包的chart
满足最基本的存储要求的Chart Repository API有许多优点,但一些缺点已开始显现:
Chart Repository很难覆盖生产环境中所需的大多数安全性实现。在生产场景中,具有用于身份验证和授权的标准API非常重要。
在多租户方案中,另一位租户可以上载相同的图表,而存储相同内容的存储成本要高出一倍。使用单个索引文件进行搜索,元数据信息和获取Charts使得在安全的多租户实现中进行设计变得困难或笨拙
现在已经有许多更智能的Chart Repository,Docker的Distribution项目(也称为Docker Registry v2)是Docker Registry项目的后继项目。许多主要的云供应商都提供了基于 Distribution project的差产品,并且有这么多供应商提供了类似产品,Distribution 项目受益于多年的强化,安全性最佳实践和测试
8.移除helm serve
helm serve 运行了一个本地Chart信息库以用于开发。 但是,它没有被开发工具接受,并且在设计方面存在许多问题。 最后,我们决定将其删除。
9.支持library chart
Helm 3可以支持一类chart,称为“library chart”。 这是一个可以由其他chart 共享的chart,但是本身不会创建任何应用组件。 library chart只能声明定义元素。 全局范围内的非定义内容将被忽略。 这使用户可以重复使用和共享可在许多chart中重复使用的代码段,从而避免了冗余并chart保持简介。
10.CLI命令重命名
为了更好地调整与其他软件包管理器的联系,将helm delete重命名为helm uninstall。 helm delete仍保留为helm卸载的别名,因此可以使用任何一种形式。
在Helm 2中,为了清除release的各种资源 ,必须提供--purge标志。 现在默认情况下启用此功能。 要保留以前的行为,请使用helm uninstall --keep-history。
此外,其他几个命令也被重命名以适应相同的约定:
helm inspect -> helm show
helm fetch -> helm pull
【Helm3版本新变化】这些命令还保留了它们较旧的命令作为别名,因此您可以继续以任何一种形式使用它们。