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
相关产品推荐
相关产品推荐

