了解功能.API版本.掌舵

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

我有一个关于.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 -}}

kubectl api-versions 显示:

cert-manager.io/v1
cert-manager.io/v1alpha2
cert-manager.io/v1alpha3
cert-manager.io/v1beta1

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

kubernetes-helm cert-manager
2个回答
10
投票

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

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

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


4
投票

您的集群需要一个首选版本。

$ kubectl get --raw /apis/cert-manager.io | python -m json.tool
{
    "apiVersion": "v1",
    "kind": "APIGroup",
    "name": "cert-manager.io",
    "preferredVersion": {
        "groupVersion": "cert-manager.io/v1",
        "version": "v1"
    },
    "versions": [
        {
            "groupVersion": "cert-manager.io/v1",
            "version": "v1"
        },
        {
            "groupVersion": "cert-manager.io/v1beta1",
            "version": "v1beta1"
        },
        {
            "groupVersion": "cert-manager.io/v1alpha3",
            "version": "v1alpha3"
        },
        {
            "groupVersion": "cert-manager.io/v1alpha2",
            "version": "v1alpha2"
        }
    ]
}
© www.soinside.com 2019 - 2024. All rights reserved.