Notícias

Elastic Cloud: a API do Elasticsearch Service agora está com disponibilidade geral

No console Elastic Cloud, você pode criar e gerenciar suas implantações, visualizar informações de cobrança e manter-se informado sobre novas versões, tudo em um só local. Ele oferece uma interface do usuário (UI) fácil e intuitiva para tarefas comuns de gerenciamento e administração.

Embora uma UI de gerenciamento seja ótima, muitas organizações também querem uma API para automatizar tarefas e fluxos de trabalho comuns, especialmente para gerenciar suas implantações. É com grande satisfação que anunciamos a disponibilidade geral da API do Elasticsearch Service para viabilizar esses fluxos de trabalho.

Além da integração direta com a API, você pode usar o Elastic Cloud Control (ecctl), a interface de linha de comando do Elastic Cloud que agora é compatível com a API do Elasticsearch Service. Você também pode usar a biblioteca cloud-sdk-go ou gerar um SDK em outra linguagem de programação.

Antes de demonstrarmos um exemplo de como criar e ampliar uma implantação usando a API do Elasticsearch Service, veja alguns cenários comuns nos quais você pode se beneficiar de uma API:

Integração com pipelines de CI/CD

Para muitos dos nossos usuários, o Elastic Stack é uma parte crucial da stack de produção. Você pode introduzir alterações na sua aplicação que afetam o Elasticsearch, como otimizar consultas ou testar novas versões do Elastic Stack.

Um pipeline de CI/CD poderia, por exemplo, iniciar automaticamente uma implantação de acordo com as suas especificações exatas, potencialmente restaurando de um snapshot para usar facilmente um conjunto de dados do cluster de produção. Isso fornece feedback imediato de uma determinada alteração de código na sua aplicação em um ambiente de desenvolvimento ou de ensaio antes de atualizar o seu ambiente de produção.

Integração de novas equipes e casos de uso

Além de fazer parte da stack de produção, o Elastic Stack pode ser usado para observabilidade tanto da sua aplicação quanto da sua infraestrutura. Em vez de ter uma única implantação servindo a propósitos diferentes, recomendamos, quando possível, separar os casos de uso e as equipes usando uma implantação dedicada. Isso reduz muito as situações em que as equipes poderiam se incomodar umas com as outras. Por exemplo, um caso de uso intensivo de recursos de uma equipe (ou até bugs não intencionais) poderia afetar outras equipes, gerando um certo atrito.

Com o Elasticsearch Service, você gerencia qualquer quantidade de implantações com a maior tranquilidade. E agora você pode integrar facilmente à nossa API o seu gerenciador de configuração favorito ou uma ferramenta de infraestrutura como código (por exemplo, Ansible, Chef, Puppet e Terraform) — ou o seu portal interno da empresa. Quando uma nova equipe se registra e solicita a criação de uma nova stack de desenvolvimento, você pode criar uma implantação para eles usando o modelo certo para a tarefa e dimensioná-la e configurá-la de acordo com as suas necessidades, tudo sem intervenção manual.

Ampliação de implantações

Muitos dos nossos usuários precisam de uma maneira de ampliar programaticamente sua implantação para dar suporte a um aumento no uso ou de reduzi-la para baixar o custo durante períodos inativos. Esses eventos podem ser previsíveis, como um aumento no tráfego de um site de comércio eletrônico devido a um feriado nacional, ou algo menos previsto, como uma alteração na utilização dos recursos quando há uma venda de última hora. Os clientes podem implementar esses fluxos de trabalho de ampliação com base no tempo ou no uso usando uma API.

Se você busca uma ampliação baseada em métricas (espaço em disco, CPU ou RAM), sempre há considerações a fazer. Por exemplo, garantir que haja espaço suficiente em disco disponível após a redução para dar suporte ao uso atual do espaço em disco.

Como começar com a API do Elasticsearch Service

Esses exemplos são apenas uma pequena amostra de como a utilização da nossa API pode eliminar a necessidade de fazer login no console do usuário para gerenciar a implantação, mas há muito mais. Agora, vamos nos concentrar em fornecer uma explicação rápida para demonstrar como você pode criar e ampliar uma implantação usando o ecctl, nossa ferramenta de linha de comando, ou o curl diretamente na REST API.

1. Crie uma chave de API

Para se autenticar, você deve primeiro gerar uma chave de API que será usada para identificá-lo como o proprietário da conta. Para gerar uma chave de API, faça login no console do usuário e navegue até a página de gerenciamento de chaves de API na seção Account (Conta).

Você pode gerar várias chaves de API para gerenciar mais facilmente o acesso a partir de várias aplicações e revogar uma chave sem afetar as outras.

Ao criar uma nova chave, você precisará digitar sua senha novamente, dar um nome à chave e copiá-la ou baixá-la. É importante observar que esse é o único momento em que você verá a chave. Portanto, guarde-a em um lugar seguro.

gen-api-key.gif

2. Configure o ecctl

Se esta for a primeira vez que você estiver usando o ecctl, será necessário instalá-lo na sua máquina local. (Veja as instruções de instalação aqui.) Se já instalou o ecctl na sua máquina, verifique se você está usando a versão 1.0.0-beta3 ou superior para garantir que todos os comandos descritos aqui sejam compatíveis. Também forneceremos exemplos usando o curl, embora recomendemos o uso do ecctl, pois ele oferece uma maneira muito mais intuitiva de interagir com a nossa API.

Depois de instalá-lo, você poderá executar o comando ecctl init e usar o assistente de configuração. Quando o assistente pedir que você escolha o produto, selecione Elasticsearch Service, escolha formato de texto ou JSON como saída padrão, chave de API como mecanismo de autenticação e insira a chave da API salva na etapa anterior.

Para testar a configuração e verificar se está correta, execute o comando ecctl deployment list, que retornará a lista de implantações ativas.

ecclt-init-2.gif

3. Crie a sua primeira implantação

Agora que você tem tudo de que precisamos, pode criar a sua primeira implantação. O Elasticsearch Service dá suporte para modelos de implantação, que criam rapidamente uma implantação com os componentes e o hardware mais adequados ao seu caso de uso.

Ao criar uma implantação usando a nossa API, você precisará especificar qual modelo deseja usar, e a carga útil deve se alinhar à carga útil esperada do modelo. Uma lista dos modelos disponíveis no seu provedor de serviços em nuvem e na região escolhida pode ser encontrada no nosso guia do usuário.

Neste exemplo, vamos usar o GCP Iowa (us-central1) e o modelo otimizado para E/S. Copie a carga útil JSON abaixo e salve-a como um arquivo create-deployment.json.

Carga útil 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"
          }
        }
      }
    ]
  }
}

Há outras opções de configuração disponíveis, como definir um cluster de monitoramento e restaurar a partir de um snapshot. Mas neste exemplo, vamos simplificar e criar uma nova implantação com um cluster do Elasticsearch altamente disponível, implantado em duas zonas de disponibilidade, uma única instância do Kibana e um único servidor de APM. Agora bastará executar o comando do ecctl a seguir, e a criação da implantação estará em andamento.

Além disso, tenha uma noção de como é a API num instante usando o console do usuário do Elastic Cloud para gerar a solicitação da API equivalente para corresponder ao que você configurou na interface do usuário.

rest_api_console.gif

ecctl:

ecctl deployment create -f create-deployment.json

Para monitorar o progresso, use o sinalizador --track, não apenas aqui, mas também em outros comandos. Em geral, o sinalizador --help é muito útil para saber quais opções estão disponíveis.

Se estiver usando o curl, o comando a seguir fará o mesmo.

curl:

curl -XPOST https://api.elastic-cloud.com/api/v1/deployments \
-H "Authorization: ApiKey <API_KEY>" \
-d @create-deployment.json

A resposta indicará que a solicitação foi enviada com sucesso e retornará a ID de implantação. Copie-a, pois você precisará dela ao ampliar o seu cluster na próxima etapa. Ela também incluirá a senha gerada aleatoriamente para o usuário elastic. Você poderá usar isso imediatamente para fazer login no Kibana ou usar a REST API do Elasticsearch para fazer mais configurações e começar a usar a sua implantação.

create_deployment_ecctl.gif

4. Amplie a sua implantação

Agora que a implantação está em funcionamento, vamos ver como você pode ampliá-la. Neste exemplo, você aumentará o tamanho dos nós de dados de 4.096 para 8.192 MB. É importante observar que, como você está fazendo alterações apenas no cluster do Elasticsearch, deve definir o campo prune_orphans como false para indicar que outros componentes que fazem parte da sua implantação — neste caso, Kibana e APM — não devem ser removidos.

Copie a carga útil JSON abaixo e salve-a como arquivo update-deployment.json.

Carga útil 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"
          }
        }
      }
    ]
  }
}

Desta vez, você usará o comando update.

ecctl:

ecctl deployment update <DEPLOYMENT_ID> -f update-deployment.json

Ao usar o curl, você usará o método PUT para enviar o novo plano.

curl:

curl -XPUT https://api.elastic-cloud.com/api/v1/deployments/<DEPLOYMENT_ID> \
-H "Authorization: ApiKey <API_KEY>" \
-d @update-deployment.json

Em alguns casos, convém cancelar o plano antes que ele seja concluído. Você pode usar o ecctl para cancelar o comando plan, passando “elasticsearch” como tipo e, ao usar o curl, enviar uma solicitação para excluir o plano pendente e especificar o Elasticsearch ref-id, ou seja, “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. Limpeza

Na última etapa, você excluirá a implantação que criou usando o comando shutdown.

ecctl:

ecctl deployment shutdown <DEPLOYMENT_ID>

Quando você enviar uma ação de destruição, o ecctl gerará uma mensagem de confirmação antes de executá-la. Você pode usar o sinalizador global --force, que poderá ser útil se você for usá-lo para automação.

Ao usar o curl, você pode enviar a seguinte solicitação:

curl:

curl -XPOST https://api.elastic-cloud.com/api/v1/deployments/<DEPLOYMENT_ID>/_shutdown \
-H "Authorization: ApiKey <API_KEY>"

Conclusão

Vimos diferentes casos de uso de automação da implantação para mostrar como você pode criar, ampliar e, por fim, encerrar uma implantação. Existem muitas outras maneiras de usar a nossa API para automatizar vários procedimentos e reduzir a quantidade de interação humana necessária para gerenciar suas implantações também.

Para ver a lista completa de endpoints de API disponíveis, acesse os exemplos de API na seção sobre RESTful API do nosso guia do usuário.

Está iniciando no Elasticsearch Service? Experimente-o inscrevendo-se para fazer uma avaliação gratuita de 14 dias.