了解 Capability.APIVersions.Has 掌舵

ere*_*rez 6 kubernetes-helm cert-manager helm3

我有一个关于.Capability.APIVersions.Has 的问题 - 我不确定它是如何工作的我有以下功能:

{{- define "fybrik.certManagerApiVersion" -}}
{{- if .Capabilities.APIVersions.Has "cert-manager.io/v1beta1" -}}
cert-manager.io/v1beta1
{{- else if .Capabilities.APIVersions.Has "cert-manager.io/v1alpha2" -}}
cert-manager.io/v1alpha2
{{- else if .Capabilities.APIVersions.Has "certmanager.k8s.io/v1alpha1" -}}
certmanager.k8s.io/v1alpha1
{{- else -}}
cert-manager.io/v1
{{- end -}}
Run Code Online (Sandbox Code Playgroud)

kubectl api-versions 显示:

cert-manager.io/v1
cert-manager.io/v1alpha2
cert-manager.io/v1alpha3
cert-manager.io/v1beta1
Run Code Online (Sandbox Code Playgroud)

但当使用 helm install 命令生成资源时,我总是将 cert-manager.io/v1 作为 api。我希望 api 是 cert-manager.io/v1beta1,我想知道缺少什么?谢谢

Tho*_*aux 9

这取决于您使用的 Helm 命令。

helm template将使用 kubectl 编译的 apiVersions(请查看此处https://github.com/helm/helm/blob/main/go.mod#L43)。

helm install将使用 k8s 服务器提供的 apiVersions,用于helm install --dry-run --debug查看渲染结果。

  • 现在也可以将 api 版本传递给 helm 模板:`helm template 。--api-版本 cert-manager.io/v1` (5认同)