kubernetes helm:在模板中检索插件的版本

oipij1gg  于 2023-08-03  发布在  Kubernetes
关注(0)|答案(1)|浏览(106)

我想在helm模板文件中以编程方式检索给定插件的apivversion,例如certmanager.基本上是输出的第三列:

[xx@xx-bnng5g3 test]$ kubectl api-resources -o wide | grep certificates      
certificates                      cert,certs       cert-manager.io/v1         true    Certificate

字符串
我在考虑使用(lookup ...)实现结果,但我发现比预期的要困难。有没有更简单的方法?

w7t8yxp5

w7t8yxp51#

该列显示将在Kubernetes资源中使用的apiVersion:值。在Kubernetes API术语中,它是 groupversion 的组合。
在Helm中,有一个built-in .Capabilities object,其中包含有关可用API版本的详细信息。您可以测试特定版本:

{{- if .Capabilities.APIVersions.Has "cert-manager.io/v1" }}
apiVersion: cert-manager.io/v1
kind: Certificate
...
{{- end }}

字符串
查找特定API组的当前版本更具挑战性。.Capabilities.APIVersions看起来是一个简单的字符串列表,你可以使用任何标准的listlist-of-string functions来搜索它。这并不包括任何类似Unixgrep(1)的东西,它可以找到以特定前缀开始的字符串。
(This技术对于从Kubernetes API的测试版升级到发布版本非常有用。例如,当apps/v1beta1 Deployment对象从Kubernetes中删除时,一些较旧的集群还不支持apps/v1 Deployment。这样就可以说,如果有v1版本,就使用它,如果没有,就使用旧的v1beta1版本。)

相关问题