You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Helm误判K8s版本:v1.23.0被识别为v1.20.0致ArgoCD部署失败

问题:Pulumi部署ArgoCD Helm Chart时误判Kubernetes版本

实际AWS EKS集群版本为v1.23.0,但Pulumi执行时提示集群版本为v1.20.0,不符合ArgoCD Chart要求的>=1.22.0-0。

错误诊断信息

kubernetes:helm.sh/v3:Release (argocd):
    error: failed to create chart from template: chart requires kubeVersion: >=1.22.0-0 which is incompatible with Kubernetes v1.20.0

代码示例

...

cluster = eks.Cluster("argo-example") # version="1.23"

# Cluster provider
provider = k8s.Provider(
    "eks",
    kubeconfig=cluster.kubeconfig.apply(lambda k: json.dumps(k))
    #kubeconfig=cluster.kubeconfig
)

ns = k8s.core.v1.Namespace(
    'argocd',
    metadata={
        "name": "argocd", 
    },
    opts=pulumi.ResourceOptions(provider=provider)
)

argo = k8s.helm.v3.Release(
    "argocd",  
    args=k8s.helm.v3.ReleaseArgs(
        chart="argo-cd",
        namespace=ns.metadata.name,
        repository_opts=k8s.helm.v3.RepositoryOptsArgs(
            repo="https://argoproj.github.io/argo-helm"
        ),
        values={
            "server": {
                "service": {
                    "type": "LoadBalancer",
                }
            }
        },
    ),
    opts=pulumi.ResourceOptions(provider=provider, parent=ns),
)

已尝试方案

  • 删除所有资源后重新部署
  • 更新至最新版ArgoCD安装YAML

解决方案

1. 显式指定Kubernetes版本给Helm Release

在ReleaseArgs中添加kube_version参数,直接声明集群实际版本,跳过Helm的自动版本检测:

argo = k8s.helm.v3.Release(
    "argocd",  
    args=k8s.helm.v3.ReleaseArgs(
        chart="argo-cd",
        namespace=ns.metadata.name,
        repository_opts=k8s.helm.v3.RepositoryOptsArgs(
            repo="https://argoproj.github.io/argo-helm"
        ),
        values={
            "server": {
                "service": {
                    "type": "LoadBalancer",
                }
            }
        },
        kube_version="1.23.0"  # 指定集群实际版本
    ),
    opts=pulumi.ResourceOptions(provider=provider, parent=ns),
)

2. 修复K8s Provider的kubeconfig配置

Pulumi的K8s Provider可直接接受kubeconfig对象,无需转成JSON字符串。修改Provider初始化代码,避免版本信息丢失:

provider = k8s.Provider(
    "eks",
    kubeconfig=cluster.kubeconfig  # 移除apply和json.dumps处理
)

3. 指定兼容的ArgoCD Chart版本

若最新Chart版本的版本检查逻辑异常,可指定一个明确兼容v1.23的稳定版本(示例版本5.45.0需确认对应kubeVersion要求):

argo = k8s.helm.v3.Release(
    "argocd",  
    args=k8s.helm.v3.ReleaseArgs(
        chart="argo-cd",
        version="5.45.0",  # 指定兼容的Chart版本
        namespace=ns.metadata.name,
        repository_opts=k8s.helm.v3.RepositoryOptsArgs(
            repo="https://argoproj.github.io/argo-helm"
        ),
        values={
            "server": {
                "service": {
                    "type": "LoadBalancer",
                }
            }
        },
    ),
    opts=pulumi.ResourceOptions(provider=provider, parent=ns),
)

内容的提问来源于stack exchange,提问作者LeStackOverflow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 06:35:19