Cómo desplegar Elasticsearch en Kubernetes en minutos

Elasticsearch (ES) es una base de datos que proporciona análisis y búsquedas distribuidas casi en tiempo real para diferentes tipos de datos. Está basado en Apache Lucene y fue desarrollado en Java. En cuanto a los datos se trabaja estructura, datos no estructurados, numéricos y geoespaciales.

Características de Elasticsearch

  • Escalabilidad y resiliencia. Clustering y alta disponibilidad. Recuperación automática de nodos …
  • Administración. Gestión del ciclo de vida del indice. …
  • Seguridad. Gestión de la seguridad de elasticsearch. …
  • Alertas. Alta disponibilidad y facilmente escalable …
  • REST APIs. Documentación de las APIs. …
  • Integración. Elasticsearch-Hadoop. …
  • Despliegue. Sencillo, descarga e instalación.

Ahora se va a explicar como se debería de realizar la instalación de Elasticsearch en Kubernetes

Desplegar Elasticsearch con helm-charts

El primer paso es tener acceso al proyecto de Elasticsearch en Github.

https://github.com/elastic/helm-charts/tree/master/elasticsearch

  • Crear un nameserver para elasticsearch
$ kubectl create ns elasticsearch
  • Añadir el Elastic Helm charts repo: helm repo add elastic https://helm.elastic.co

Ahora es el paso de realizar la instalación:

  • with Helm 2: helm install --name elasticsearch elastic/elasticsearch -n elastiscsearch
  • with Helm3 helm install elasticsearch elastic/elasticsearch -n elasticsearch

Ver el estatus del deployment: kubectl get all -n elasticsearch

NAME                         READY   STATUS    RESTARTS   AGE
pod/elasticsearch-master-0   1/1     Running   0          3m28s
pod/elasticsearch-master-1   1/1     Running   0          3m28s
pod/elasticsearch-master-2   1/1     Running   0          3m28s

NAME                                    TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
service/elasticsearch-master            ClusterIP   172.20.34.223   <none>        9200/TCP,9300/TCP   3m28s
service/elasticsearch-master-headless   ClusterIP   None            <none>        9200/TCP,9300/TCP   3m28s

NAME                                    READY   AGE
statefulset.apps/elasticsearch-master   3/3     3m28s

Ahora exponemos el servicio y creamos un LoadBalancer para tener acceso a Elasticsearch (acceso a Internet).

kubectl expose service/elasticsearch-master --name=expose-elastic --type=LoadBalancer -n elasticsearch

service/expose-elastic exposed

Ahora si accedemos al recurso somos capaz de conseguir una respuesta 200

curl -i a77e9607d1db545339048ecb8599762f-1719033866.eu-central-1.elb.amazonaws.com:9200
HTTP/1.1 200 OK
content-type: application/json; charset=UTF-8
content-length: 550

{
  "name" : "elasticsearch-master-2",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "nN_1IzXFQcKwtsPZhsHJaQ",
  "version" : {
    "number" : "7.9.1",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "083627f112ba94dffc1232e8b42b73492789ef91",
    "build_date" : "2020-09-01T21:22:21.964974Z",
    "build_snapshot" : false,
    "lucene_version" : "8.6.2",

Si todavía no sabes como crear un cluster de kubernetes, sigue el link

Accede a nuestros CURSOS ONLINE! ⬇️ ⬇️ ⬇️ ⬇️ ⬇️

Docker & Networking

Master en crear tus propias aplicaciones desde cero y entender el funcionamiento de docker

docker cristiancasis.com
Comprar Acceso de por vida

Kubernetes in AWS

Aprende todo lo necesario para enterder el funcionamiento y saber como desplegar aplicaciones

amazoneks cristiancasis.com
Comprar Acceso de por vida