Miguel Ángel Chuecos, Site Reliability Engineer de Devoteam, nos cuenta cómo conectar un dashboard externo de OpenSearch a AWS Opensearch domain con Helm.
En el siguiente artículo, veremos cómo funciona un dominio de OpenSearch, los requisitos del entorno y de la cuenta de AWS, y finalmente los pasos que deberás realizar para hacer la conexión.
El año pasado, AWS anunció el cambio de Amazon ElasticSearch Service a Amazon OpenSearch Service. Convirtiéndose en el sucesor del servicio de clúster de búsqueda y análisis distribuido.
Razones para el cambio
El 21 de enero de 2021, Elastic NV anunció que cambiaría su estrategia de licencias de software y no lanzaría nuevas versiones de Elasticsearch y Kibana bajo la licencia permisiva ALv2.
En su lugar, se está lanzando Elasticsearch y Kibana bajo la licencia Elastic, con el código fuente disponible bajo la licencia de Elastic o la licencia pública del lado del servidor (SSPL). Estas licencias no son de código abierto.
Debido a esto, Amazon decidió crear y mantener un fork de la última versión ALv2 de Elasticsearch y Kibana. El fork se llama OpenSearch y está disponible bajo ALv2.
La política de actualización está disponible en la documentación oficial.
¿Cómo funciona?
Cuando se crea un dominio de OpenSearch, se está creando un clúster. Este clúster se compone de varias instancias EC2, que equivalen a un nodo. Cada nodo almacena los datos y procesa las solicitudes de consulta.
Para los entornos productivos, existen nodos maestros que gestionan las operaciones de los nodos. Estos gestionan el estado, la salud de cada nodo, la distribución de shards…
Sin embargo, no verás ninguna instancia EC2 en el servicio EC2. Esto se debe a que el servicio OpenSearch es un servicio gestionado (SaaS) por AWS por lo que sólo podrás editar la configuración del clúster (número de nodos, tipos de instancia…).
Requisitos para conectar un dashboard externo de OpenSearch a AWS OpenSearch Domain con Helm
Hay dos tipos de requisitos para realizar la conexión.
Requisitos en tu entorno
- Git.
- Visual Studio Code u otra herramienta de edición de código similar.
- kubectl y kubeconfig del cluster EKS configurado. Puedes consultar más sobre esto en la documentación de Kubernetes.
- Helm.
Requisitos en tu cuenta AWS
- Debe crearse un dominio OpenSearch.
- La conexión HTTPS tiene que estar habilitada entre los SGs del dominio OpenSearch y los nodos EKS de las diferentes VPCs.
Pasos a seguir
Una vez establecidos los requisitos para la conexión, estos son los pasos a realizar.
El primer paso es clonar el repositorio de gráficos de OpenSearch Helm.
A continuación, abriremos el proyecto con Visual Studio Code e iremos al directorio helm-charts/charts/opensearch-dashboards/ para editar el archivo values.yaml.
Antes de entrar en los detalles de la configuración del gráfico helm, es importante crear un secreto en el espacio de nombres donde se desplegará el dashboard de OpenSearch que contendrá el usuario y la contraseña para acceder al portal.
kubectl create secret generic opensearchdashboards-auth --from-literal=username="myfirstuser" --from-literal=password="myfirstpasswd" [OPTIONAL: -n opensearch]
Una vez realizado, abre el archivo values.yaml y aplica la siguiente configuración:
Establece el endpoint del dominio del servicio Amazon OpenSearch como valor del parámetro opensearchHosts.
Puedes obtenerlo en el panel de información general tal y como te mostramos en la imagen.
opensearchHosts: "https://vpc-dump-domain-xvu6q2qt7vjs2ueaipnotcpyui.eu-north-1.es.amazonaws.com/_dashboards"
A continuación, establece el nombre y la versión de la imagen de docker en el dashboard de OpenSearch.
El siguiente ejemplo utiliza la imagen oficial obtenida de Docker Hub, pero puedes utilizar una de un repositorio privado (ECR, Artifactory, NexusOSS…).
image: "opensearchproject/opensearch-dashboards"
imageTag: "1.2.0"
imagePullPolicy: "IfNotPresent"
Define el nombre del secreto que contiene las credenciales de nombre de usuario/contraseña creadas en los pasos anteriores para vincularlo al dashboard:
opensearchAccount:
secret: "opensearchdashboards-opensearch-auth"
keyPassphrase:
enabled: false
Finalmente, como paso opcional, podemos configurar el acceso para habilitar el servicio externo al pod. En el siguiente ejemplo, se ha utilizado Traefik como proxy inverso y balanceador en el clúster.
ingress:
enabled: true
annotations:
external-dns.alpha.kubernetes.io/target: traefik-int.cloud.myprivatedomain.com
kubernetes.io/ingress.class: traefik
hosts:
- host: opensearchdashboard.cloud.myprivatedomain.com
paths:
- path: /
En caso de que no queramos configurar esta parte, podemos habilitar el acceso desde su entorno local utilizando el siguiente comando.
Después de ejecutarlo, podremos comprobar el acceso al cuadro de mando desde localhost:8080 (debe ser desplegado primero).
kubectl port-forward -n opensearch [OS_DASHBOARD_POD_NAME] 8080:5601
Una vez configurado el dashboard de helm con los valores correctos, es el momento de abrir un terminal al mismo nivel que el archivo values.yaml y ejecutar helm install para desplegar el cuadro de mando OpenSearch en el cluster EKS.
helm install opensearchdashboards . -n opensearch [OPTIONAL: --create-namespace]
Tras unos segundos, veremos que se ha desplegado con éxito y podremos acceder al panel de control de OpenSearch desde el navegador:
Ahora, será el momento de sincronizar con los índices del dominio y empezar a visualizar y procesar los datos.
¿Tienes alguna pregunta?
Te animamos a que te pongas en contacto con nosotros a través de nuestra página de contacto o mediante el siguiente formulario.
¡Esperamos que este artículo te resulte útil!