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

Pulumi部署cert-manager首次创建ClusterIssuer提示apiVersion不存在问题问询

问题根因

你遇到的问题本质是CRD注册的时间差问题:

  • Pulumi的Helm Chart资源默认仅会确认Kubernetes API Server接收了Chart提交的所有资源清单,就标记为部署完成,不会等待CRD完成集群内的注册同步、也不会等待cert-manager的控制器Pod就绪。
  • 你虽然给ClusterIssuer配置了DependsOn = certManagerChart,但只是保证ClusterIssuer在Chart提交完成后再创建,此时cert-manager的ClusterIssuer CRD还没被API Server完全注册,因此首次创建时会报apiVersion不存在的错误。
  • 第二次执行pulumi up时,CRD已经完成注册,因此可以正常创建ClusterIssuer。
解决方案

1. 核心修复

做两处配置调整即可解决单次执行失败的问题:

  • 给cert-manager的Chart添加Wait = true参数,强制Pulumi等待Helm Release的所有资源(包括CRD、控制器Pod)完全就绪后,才标记Chart部署完成,从根源上消除时间差。
  • 修正installCRDs的参数类型,你当前配置的字符串"true"不符合cert-manager Helm Chart的参数要求,该参数为布尔类型,改为true避免解析异常。

修改后的Chart部署代码如下:

// Install cert-manager using Helm
var certManagerChart = new Chart("cert-manager", 
    new ChartArgs
    {
        Chart = "cert-manager",
        Version = "1.5.3",
        Namespace = certManagerNamespace.Metadata.Apply(m => m.Name),
        Values =
        {
            // 改为布尔类型true
            ["installCRDs"] = true
        },
        FetchOptions = new ChartFetchArgs
        {
            Repo = "https://charts.jetstack.io"
        },
        // 新增:等待所有Chart资源完全就绪
        Wait = true
    },
    options);

2. 可选增强

如果需要更严格的依赖校验,可以额外显式等待ClusterIssuer CRD注册完成后再创建ClusterIssuer资源,进一步避免偶发的集群同步延迟问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:27:03