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

使用OpenTofu在K8s中部署Elastic Stack时遭遇Helm Chart未找到错误

使用OpenTofu在K8s中部署Elastic Stack时遭遇Helm Chart未找到错误

看起来你在通过OpenTofu用Helm部署Elastic Stack时踩了个小坑——找不到elastic/eck-stack这个chart对吧?我来帮你捋清楚问题出在哪,以及怎么解决:

问题根源

你遇到的错误核心原因很简单:Elastic官方的Helm仓库里从来就没有过eck-stack这个Chart。你通过helm search repo看到的结果也能佐证这一点——只有eck-agent、apm-server这类单一组件的Chart,以及被截断的eck-operator(就是你搜索结果里elastic/eck-agent旁边的e...)。

ECK(Elastic Cloud on Kubernetes)的设计逻辑是通过Operator来统一管理K8s上的所有Elastic栈组件(Elasticsearch、Kibana、Logstash、APM Server等),而不是提供一个打包好的stack Chart一次性部署所有东西。

具体解决步骤

1. 确认并更新Helm仓库

首先确保你的Helm已经正确添加了Elastic官方仓库,并且缓存是最新的:

  • 检查现有仓库:
    helm repo list
    
    如果看不到elastic仓库,就添加它:
    helm repo add elastic https://helm.elastic.co
    
  • 强制更新仓库缓存,避免旧缓存导致的搜索结果不全:
    helm repo update
    
  • 再次搜索确认,这时候应该能看到完整的elastic/eck-operator:
    helm search repo elastic/eck-operator
    

2. 修正OpenTofu的helm_release配置

把你原来的helm_release.elastic资源里的chart字段从elastic/eck-stack改成elastic/eck-operator,示例配置如下:

resource "helm_release" "elastic_operator" {
  name               = "eck-operator"
  repository         = "https://helm.elastic.co"
  chart              = "eck-operator"
  version            = "2.12.1" # 替换成你需要的稳定版本,比如最新版
  namespace          = "elastic-system"
  create_namespace   = true

  # 可选:如果需要自定义Operator配置,这里引入values文件
  values = [
    file("${path.module}/eck-operator-values.yaml")
  ]
}

3. 用CRD部署具体的Elastic栈组件

部署完ECK Operator之后,你需要通过Kubernetes CRD(自定义资源定义)来创建Elasticsearch、Kibana等具体组件。比如你可以在OpenTofu里用kubernetes_manifest资源来定义:

# 部署一个单节点Elasticsearch实例
resource "kubernetes_manifest" "elasticsearch" {
  manifest = {
    apiVersion = "elasticsearch.k8s.elastic.co/v1"
    kind       = "Elasticsearch"
    metadata = {
      name = "my-elasticsearch"
    }
    spec = {
      version = "8.12.0"
      nodeSets = [
        {
          name  = "default"
          count = 1
          config = {
            "node.store.allow_mmap" = false # 适合测试环境的配置,避免内存限制问题
          }
        }
      ]
    }
  }
}

# 部署对应的Kibana实例
resource "kubernetes_manifest" "kibana" {
  manifest = {
    apiVersion = "kibana.k8s.elastic.co/v1"
    kind       = "Kibana"
    metadata = {
      name = "my-kibana"
    }
    spec = {
      version = "8.12.0"
      count   = 1
      elasticsearchRef = {
        name = "my-elasticsearch"
      }
    }
  }
  depends_on = [kubernetes_manifest.elasticsearch]
}

这样Operator就会自动帮你创建并管理这些Elastic组件的Pod、Service等资源了。

备注:内容来源于stack exchange,提问作者user3465651

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 12:38:04