通过 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
我们正在使用 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