How to configure Google Cloud Kubernetes Elasticsearch Cluster with internal load balancer
Google Cloud offers a convenient way of installing an ElasticSearch cluster on top of a Google Cloud Kubernetes cluster. However, the documentation tells you to expose the ElasticSearch instance using
kubectl patch service/"elasticsearch-elasticsearch-svc" \
--namespace "default" \
--patch '{"spec": {"type": "LoadBalancer"}}'
However this command will expost ElasticSearch to an external IP which will make it publically accessible in the default configuration.
Here’s the equivalent command that will expose ElasticSearch to an internal load balancer with an internal IP address that will only be available from Google Cloud.
kubectl patch service/"elasticsearch-elasticsearch-svc" \
--namespace "default" \
--patch '{"spec": {"type": "LoadBalancer"}, "metadata": {"annotations": {"cloud.google.com/load-balancer-type": "Internal"}}}'
You might need to replace the name of your service (elasticsearch-elasticsearch-svc
in this example) and possibly your namespace.