通过 terraform/helm 的 Elasticsearch 集群 - 有没有办法检索或设置集群 IP?

Elasticsearch Cluster through terraform/helm - is there a way to retrieve or set the Cluster IP?

我们正在使用 Azure,我正在通过以下代码片段在托管 AKS 集群上使用 terraform 创建 Elasticsearch 实例:

resource "helm_release" "elasticsearch" {
  name       = "elasticsearch"
  repository = "https://helm.elastic.co"
  chart      = "elasticsearch"
  version    = "7.12.1"
  timeout    = 900

  set {
    name  = "volumeClaimTemplate.storageClassName"
    value = "elasticsearch-ssd"
  }

  set {
    name  = "volumeClaimTemplate.resources.requests.storage"
    value = "5Gi"
  }

  set {
    name  = "imageTag"
    value = "7.12.1"
  }

  ...
}

到目前为止没问题。 Elasticsearch 启动并准备好使用。一切都在虚拟网络中。所以Elasticsearch的节点都获得了一个Cluster IP。

现在,要在我的 Kubernetes 集群上部署一些实际使用 Elasticsearch 的东西,我需要将 Elasticsearch 的集群 IP 传递给它。

有人知道自动检索集群 IP 的方法吗?这样我就可以将它传递给配置中的以下 terraform 模块?我想我扫描了 helm 版本的所有输出,但我找不到集群 IP...

在下面的示例中,它将是“10.0.169.174”:

ppaulis@ppaulis-sb3:~/PhpstormProjects/baywa/infra/terraform-final/5_tms-api$ kubectl get services -o wide
NAME                            TYPE           CLUSTER-IP     EXTERNAL-IP    PORT(S)             AGE   SELECTOR
elasticsearch-master            ClusterIP      10.0.169.174   <none>         9200/TCP,9300/TCP   25h   app=elasticsearch-master,chart=elasticsearch,release=tms-dv-elasticsearch
elasticsearch-master-headless   ClusterIP      None           <none>         9200/TCP,9300/TCP   25h   app=elasticsearch-master
kubernetes                      ClusterIP      10.0.0.1       <none>         443/TCP             28h   <none>

感谢任何帮助! 谢谢, 帕斯卡

首先,依赖服务 IP 地址而不是 DNS 名称是一种不好的做法。如果你试图访问 Kubernetes 之外的 ES,那么你可能希望使用 external-dns 为它自动创建 DNS 记录。我认为这是最好的方法。

但是,没有什么能阻止您根据需要调整 ES Helm 图表。只需在此处修改 YAML:https://github.com/elastic/helm-charts/blob/master/elasticsearch/templates/service.yaml