使用Terraform在AKS部署Jaeger Operator时遇CRDs缺失错误
解决Terraform部署Jaeger Operator时cert-manager CRD缺失的问题
问题原因
Jaeger Operator的Helm Chart默认会创建cert-manager.io/v1组下的Certificate和Issuer资源,但你的AKS集群中尚未安装cert-manager的Custom Resource Definitions(CRDs)及组件,导致Kubernetes无法识别这些资源类型。
解决方案
方案1:安装cert-manager(推荐)
通过Terraform部署cert-manager,确保其CRD被安装到集群中,再部署Jaeger Operator:
- 添加cert-manager的Helm部署配置:
# 部署cert-manager组件及CRD resource "helm_release" "cert_manager" { name = "cert-manager" repository = "https://charts.jetstack.io" chart = "cert-manager" version = "v1.13.0" # 版本需与Jaeger Operator 2.46.2兼容 namespace = "cert-manager" create_namespace = true set { name = "installCRDs" value = "true" } }
- 修改Jaeger Operator的Terraform配置,添加对cert-manager的依赖:
resource "helm_release" "jaeger_operator" { name = "jaeger-operator" repository = "https://jaegertracing.github.io/helm-charts" chart = "jaeger-operator" version = "2.46.2" depends_on = [helm_release.elastic, helm_release.cert_manager] }
方案2:禁用Jaeger Operator的cert-manager集成(不推荐)
如果不需要cert-manager提供的证书管理功能,可以通过Chart参数关闭相关资源创建:
resource "helm_release" "jaeger_operator" { name = "jaeger-operator" repository = "https://jaegertracing.github.io/helm-charts" chart = "jaeger-operator" version = "2.46.2" depends_on = [helm_release.elastic] set { name = "certmanager.enabled" value = "false" } }
操作步骤
- 将上述配置添加到你的Terraform代码中
- 执行
terraform init初始化配置 - 执行
terraform apply部署资源
内容的提问来源于stack exchange,提问作者Navid Sadeghi
相关产品推荐
相关产品推荐

