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

ArgoCD同步cert-manager证书资源因metav1.Duration始终不同步的配置问询

问题:ArgoCD部署cert-manager证书因Duration格式不一致导致OutOfSync

我尝试通过ArgoCD部署cert-manager.io/Certificate资源,清单内容如下:

spec:
  duration: 4567h

该资源被ArgoCD同步到集群后,ClusterIssuer会自动将其修改为:

spec:
  duration: 4567h0m0s

查看ClusterIssuer代码后发现,这是因为它将该字段反序列化为metav1.Duration类型导致的格式转换。这使得ArgoCD应用始终处于OutOfSync状态。

我想知道能否配置ArgoCD将spec.duration字段映射为Kubernetes内置的metav1.Duration类型?我在ArgoCD的已知内置类型文档中未找到匹配项,并且不想使用ignoreDifferences来解决这个问题。

解决方案

目前ArgoCD不支持手动将自定义资源的字段映射为Kubernetes内置的metav1.Duration类型。ArgoCD的资源字段类型识别依赖于CRD的OpenAPI定义自动解析,而cert-manager的Certificate资源spec.duration字段在CRD定义中可能未明确标记为metav1.Duration,或者ArgoCD的类型对比逻辑未覆盖这种格式兼容场景。

你可以尝试以下替代方案:

  • 直接使用完整Duration格式编写清单:将spec.duration的值写成4567h0m0s,和ClusterIssuer处理后的格式保持一致,从根源上消除差异,这是最简便且无额外成本的解决方案。
  • 自定义ArgoCD类型解析逻辑:如果你有能力维护ArgoCD的自定义分支,可以扩展它的字段类型识别逻辑,让它将cert-manager Certificate的spec.duration字段识别为metav1.Duration,在同步对比时自动兼容两种格式。但这种方式需要持续维护自定义代码,成本较高,仅适合有特殊需求的场景。
  • 向ArgoCD社区提交需求:如果该场景具备普遍性,可以向ArgoCD官方提交Feature Request,请求支持手动配置字段到Kubernetes内置类型的映射,或者优化对metav1.Duration类型的自动识别与格式兼容逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 23:22:12