Elastic Cloud: La API de Elasticsearch Service ahora está a disposición del público en general
La consola de Elastic Cloud te brinda un único lugar para crear y administrar tus despliegues, ver información de facturación y mantenerte informado sobre los lanzamientos nuevos. Proporciona una interfaz de usuarios (UI) fácil e intuitiva para las tareas comunes de administración y gestión.
Si bien una UI de administración es excelente, muchas organizaciones también desean una API que automatice flujos de trabajo y tareas comunes, en especial para administrar sus despliegues. Nos complace anunciar la disponibilidad para el público en general de la API de Elasticsearch Service que permite estos flujos de trabajo.
Además de la integración directa con la API, puedes usar Elastic Cloud Control (ecctl), la interfaz de línea de comando de Elastic Cloud que ahora soporta la API de Elasticsearch Service. También puedes usar la biblioteca cloud-sdk-go o generar un SDK en otro lenguaje de programación.
Antes de demostrar un ejemplo de cómo crear y escalar un despliegue usando la API de Elasticsearch Service, estas son algunas situaciones comunes en las que puedes beneficiarte de una API:
Integración con pipelines de CI/CD
Para muchos usuarios, el Elastic Stack es una parte crítica de su pila de producción. Podrías introducir cambios en tu aplicación que afecten Elasticsearch, como optimizar búsquedas o probar versiones nuevas del Elastic Stack.
Un cloud de pipeline de CI/CD, por ejemplo, activa automáticamente un despliegue según tus especificaciones exactas, potencialmente restaurando desde un snapshot para usar con facilidad un conjunto de datos de tu cluster de producción. Esto brinda comentarios inmediatos sobre un cambio de código dado en tu aplicación en un entorno de desarrollo u organización antes de actualizar el entorno de producción.
Incorporación de equipos nuevos y casos de uso
Además de ser parte de la pila de producción, el Elastic Stack puede usarse para observabilidad de la aplicación y la infraestructura. En lugar de un solo despliegue para varios propósitos, recomendamos separar los casos de uso y equipos mediante un despliegue específico cuando sea posible. Esto reduce en gran medida la fricción en torno a potenciales efectos aledaños ruidosos donde el caso de uso de recursos intensivos de un equipo (o incluso errores no intencionales) puede afectar a otros equipos.
Elasticsearch Service hace que sea muy sencillo manejar cualquier cantidad de despliegues. Y ahora puedes integrar con facilidad tu administrador de configuración o herramienta de infraestructura como código favoritos, como Ansible, Chef, Puppet y Terraform (o el portal interno de tu empresa) con nuestra API. Cuando un equipo nuevo se registra y solicita crear una pila de desarrollo nueva, puedes crearle un despliegue usando la plantilla adecuada para el trabajo y dimensionarlo y configurarlo conforme a sus necesidades, todo sin intervención manual.
Escalado de despliegues
Muchos de nuestros usuarios necesitan una forma para aumentar la escala de sus despliegues de modo programático que permita soportar un incremento en el uso o para disminuirla y reducir el costo durante períodos inactivos. Estos eventos pueden ser predecibles, como un aumento de tráfico en un sitio web de comercio electrónico debido a un día festivo nacional, o menos anticipados, como un cambio en el uso de recursos cuando hay una oferta no planificada de último minuto. Los clientes pueden implementar con una API estos flujos de trabajo de escalado basado en el uso o el tiempo.
Si el objetivo es un escalado basado en métricas (espacio en disco, CPU o RAM), siempre hay consideraciones para tener en cuenta. Por ejemplo, asegurarse de que haya suficiente espacio en disco disponible después de disminuir la escala para soportar el uso de espacio en disco actual.
Cómo dar los primeros pasos con la API de Elasticsearch Service
Estos ejemplos son solo una pequeña muestra de cómo aprovechar nuestra API puede eliminar la necesidad de iniciar sesión en nuestra consola de usuarios para administrar el despliegue, y hay muchos más. Ahora nos enfocaremos en proporcionar un recorrido rápido para demostrar cómo puedes crear y escalar un despliegue usando ecctl, nuestra herramienta de línea de comando, o curl directamente en la API REST.
1. Crea una clave de API
Para autenticarte, primero debes generar una clave de API que se usará para identificarte como propietario de la cuenta. Para generar una clave de API, inicia sesión en la consola de usuarios y navega hasta la página de administración de claves de API en la sección Account (Cuenta).
Puedes generar varias claves de API para administrar con más facilidad el acceso desde varias aplicaciones y revocar una clave sin afectar las demás.
Cuando crees una clave nueva, se te solicitará volver a ingresar tu contraseña, asignarle un nombre a la clave y copiar o descargar la clave. Es importante tener en cuenta que es el único momento en el que verás la clave, por lo que debes asegurarte de almacenarla en un lugar seguro.
2. Configura ecctl
Si es la primera vez que usas ecctl, necesitarás instalarlo en tu máquina local. (Puedes ver las instrucciones de instalación aquí). Si ya instalaste ecctl en tu máquina, asegúrate de estar usando la versión 1.0.0-beta3 o superior para garantizar que se soporten todos los comandos descritos aquí. También proporcionaremos ejemplos usando curl, aunque recomendamos usar ecctl debido a que ofrece una forma de interacción con nuestra API mucho más fácil de usar.
Una vez instalado, puedes ejecutar el comando ecctl init
y usar el asistente de configuración. Cuando se solicite elegir el producto, selecciona Elasticsearch Service, selecciona texto o formato JSON como salida predeterminada, la clave de API como mecanismo de autenticación e introduce la clave de API guardada en el paso anterior.
Para probar la configuración y asegurarte de que sea correcta, ejecuta el comando ecctl deployment list
, que devolverá la lista de despliegues activos.
3. Crea tu primer despliegue
Ahora que tenemos todo lo que necesitamos, puedes crear tu primer despliegue. Elasticsearch Service soporta plantillas de despliegue, que rápidamente crean un despliegue con los componentes y el hardware que mejor se adapten a tu caso de uso.
Cuando crees un despliegue usando nuestra API, deberás especificar la plantilla que deseas usar, y la carga debe alinearse con la carga esperada de la plantilla. Puedes encontrar una lista de plantillas disponibles en tu Proveedor Cloud y región que elijas en nuestra guía de usuario.
En este ejemplo, usemos GCP Iowa (us-central1) y la plantilla optimizada de E/S. Copia la carga de JSON a continuación y guárdala como un archivo create-deployment.json.
Carga de JSON:
{ "name": "created-via-api", "resources": { "elasticsearch": [ { "region": "gcp-us-central1", "ref_id": "main-elasticsearch", "plan": { "cluster_topology": [ { "node_type": { "master": true, "data": true, "ingest": true }, "instance_configuration_id": "gcp.data.highio.1", "zone_count": 2, "size": { "resource": "memory", "value": 2048 } } ], "elasticsearch": { "version": "7.6.2" }, "deployment_template": { "id": "gcp-io-optimized" } } } ], "kibana": [ { "region": "gcp-us-central1", "elasticsearch_cluster_ref_id": "main-elasticsearch", "ref_id": "main-kibana", "plan": { "cluster_topology": [ { "instance_configuration_id": "gcp.kibana.1", "zone_count": 1, "size": { "resource": "memory", "value": 1024 } } ], "kibana": { "version": "7.6.2" } } } ], "apm": [ { "region": "gcp-us-central1", "elasticsearch_cluster_ref_id": "main-elasticsearch", "ref_id": "main-apm", "plan": { "cluster_topology": [ { "instance_configuration_id": "gcp.apm.1", "zone_count": 1, "size": { "resource": "memory", "value": 512 } } ], "apm": { "version": "7.6.2" } } } ] } }
Hay disponibles opciones de configuración adicionales, como un cluster de monitoreo y la restauración desde snapshot. Pero en este ejemplo, no nos complicaremos y crearemos un despliegue nuevo con un cluster de Elasticsearch de alta disponibilidad desplegado en dos zonas de disponibilidad, una instancia única de Kibana y un servidor de APM único. Ahora todo lo que queda por hacer es ejecutar el comando ecctl siguiente, y la creación del despliegue estará en marcha.
Además, conoce la API en un instante mediante la consola del usuario de Elastic Cloud para generar la solicitud de API equivalente que coincida con lo que configuraste en la interfaz de usuario.
ecctl:
ecctl deployment create -f create-deployment.json
Para monitorear el progreso, usa el indicador --track
tanto en este como en otros comandos. En general, el indicador --help
es muy útil para conocer las opciones disponibles.
Si usas curl, el comando siguiente hará lo mismo.
curl:
curl -XPOST https://api.elastic-cloud.com/api/v1/deployments \ -H "Authorization: ApiKey <API_KEY>" \ -d @create-deployment.json
La respuesta indicará que la solicitud se envió correctamente y devolverá el ID de despliegue. Cópiala porque la necesitarás cuando escales tu cluster en el paso siguiente. También incluirá la contraseña generada aleatoriamente para el usuario elastic
para que puedas usarla de inmediato para iniciar sesión en Kibana o usar la API REST de Elasticsearch para configurar más y comenzar a usar tu despliegue.
4. Escala tu despliegue
Ahora que nuestro despliegue está en funcionamiento, veamos cómo puedes escalarlo. En este ejemplo, aumentarás el tamaño de nuestros nodos de datos de 4096 a 8192 MB. Es importante observar que como solo realizas cambios en el cluster de Elasticsearch, deberías configurar el campo prune_orphans como false para indicar que otros componentes que son parte del despliegue (en este caso, Kibana y APM) no deberían eliminarse.
Copia la carga de JSON a continuación y guárdala como un archivo update-deployment.json.
Carga de JSON:
{ "prune_orphans": false, "resources": { "elasticsearch": [ { "region": "gcp-us-central1", "ref_id": "main-elasticsearch", "plan": { "cluster_topology": [ { "zone_count": 2, "node_type": { "master": true, "data": true, "ingest": true, "ml": false }, "instance_configuration_id": "gcp.data.highio.1", "size": { "resource": "memory", "value": 4096 } } ], "elasticsearch": { "version": "7.6.2" }, "deployment_template": { "id": "gcp-io-optimized" } } } ] } }
Esta vez usarás el comando update.
ecctl:
ecctl deployment update <DEPLOYMENT_ID> -f update-deployment.json
Cuando uses curl, usarás el método PUT para enviar el plan nuevo.
curl:
curl -XPUT https://api.elastic-cloud.com/api/v1/deployments/<DEPLOYMENT_ID> \ -H "Authorization: ApiKey <API_KEY>" \ -d @update-deployment.json
Tal vez quieras cancelar un plan antes de que se complete en ciertos casos. Puedes usar ecctl para cancelar el comando de plan, con “elasticsearch” como tipo, y si usas curl, envía una solicitud para eliminar el plan pendiente y especifica la ref-id de Elasticsearch, es decir “main-elasticsearch”.
ecctl:
ecctl deployment plan cancel <DEPLOYMENT_ID> --kind elasticsearch
curl:
curl -XDELETE https://api.elastic-cloud.com/api/v1/deployments/<DEPLOYMENT_ID>/elasticsearch/main-elasticsearch/plan/pending \ -H "Authorization: ApiKey <API_KEY>"
5. Limpieza
En el último paso, eliminarás el despliegue que creaste usando el comando shutdown.
ecctl:
ecctl deployment shutdown <DEPLOYMENT_ID>
Cuando envíes una acción de destrucción, ecctl generará un mensaje de confirmación antes de ejecutarla. Puedes usar el indicador global --force
, que puede ser útil si lo usarás para automatización.
Cuando usas curl, puedes enviar la solicitud siguiente:
curl:
curl -XPOST https://api.elastic-cloud.com/api/v1/deployments/<DEPLOYMENT_ID>/_shutdown \ -H "Authorization: ApiKey <API_KEY>"
Resumen
Vimos diferentes casos de uso de automatización de despliegue para mostrar cómo puedes crear, escalar y eventualmente cerrar un despliegue. También existen muchas otras formas de usar nuestra API para automatizar varios procedimientos y reducir la cantidad de interacción humana necesaria para administrar tus despliegues.
Para ver la lista completa de endpoints de API disponibles, ve a Ejemplos de API en la sección API RESTful de nuestra guía de usuario.
¿Eres nuevo en Elasticsearch Service? Regístrate para una prueba gratuita de 14 días.