helm2如何使用类似于helm3的semverCompare函数

问题描述 投票:0回答:1

我有一个使用helm2部署的项目,但是随着k8s版本的升级,

apiVersion
rbac
发生了变化。然而,并不是所有的k8s集群都会一起升级,所以它们需要与不同的版本兼容

我搜索了

信息,发现可以使用Helm的semverCompare

功能。

我通过引用修改了

Role

资源的apiVersion。

{{- if semverCompare ">=1.22-0" .Capabilities.KubeVersion.GitVersion }} apiVersion: rbac.authorization.k8s.io/v1 {{- else }} apiVersion: rbac.authorization.k8s.io/v1beta1 {{- end }} kind: Role ... ...
但是 semverCompare 似乎是 

Helm3 semvercompare 的函数。我在helm2中没有找到这个函数的任何描述。

想问helm2中是否有类似

semvercompare

的功能,或者用其他方式实现semvercompare的功能。期待您的回复。

kubernetes kubernetes-helm
1个回答
0
投票
Helm 文档中的模板函数列表是最近才出现的。旧版本的

文档包含如下文本:

Helm 有 60 多个可用功能。其中一些是由

Go 模板语言 本身定义的。其他大多数都是 Sprig 模板库的一部分。随着示例的进展,我们将看到其中的许多内容。

事实上,

语义版本函数是 Sprig 的一部分。

下一个问题是,这个非常旧的 Helm 版本包含这些功能吗?

Helm 2.17 源代码 引用了 Sprig 2.20.0。该版本的 Sprig 似乎确实包含 semver 函数。因此,即使是在 4 年前未维护的 Helm 工具版本上,您也可能会很好地使用这些工具。

Helm(包括

这个旧版本)还有一个 .Capabilities

 对象,可让您检查集群支持的 API 版本。与其限制 Kubernetes 版本,不如直接询问是否存在较新的 API 版本可能更容易

{{- if .Capabilities.APIVersions.Has "rbac.authorization.k8s.io/v1" }} apiVersion: rbac.authorization.k8s.io/v1 {{- else }} apiVersion: rbac.authorization.k8s.io/v1beta1 {{- end }} kind: Role
    
© www.soinside.com 2019 - 2024. All rights reserved.