Blog

Como implantar o Elasticsearch no Azure AKS automaticamente

Aprenda como implantar o Elasticsearch com o Kibana no Azure usando o AKS Automatic e o ECK para uma configuração parcialmente gerenciada do Elasticsearch.

Novo no Elasticsearch? Participe do nosso webinar Introdução ao Elasticsearch. Você também pode iniciar um teste gratuito na nuvem do Elastic ou experimentar o Elastic em sua máquina agora.

Este artigo faz parte de uma série onde aprenderemos como instalar o Elasticsearch usando diferentes infraestruturas.

O ECK exige um esforço significativamente maior do que as soluções Elastic Cloud baseadas no Marketplace, mas é mais automatizado do que implantar VMs por conta própria, porque o operador do Kubernetes cuidará da orquestração do sistema e do escalonamento dos nós.

Desta vez, vamos trabalhar com o Azure Kubernetes Service (AKS), usando o modo automático. Nos outros artigos, você aprenderá como usar as VMs do Azure e o Azure Marketplace.

O que é o AKS Automatic?

O Azure Kubernetes Service (AKS) gerencia automaticamente a configuração do cluster, aloca recursos dinamicamente e integra as melhores práticas de segurança, preservando a flexibilidade do Kubernetes, permitindo que os desenvolvedores passem da imagem do contêiner para o aplicativo implantado em minutos.

O AKS Automatic elimina a maior parte da sobrecarga de gerenciamento de clusters e encontra um bom equilíbrio entre simplicidade e flexibilidade. A escolha certa depende do seu caso de uso, mas a decisão fica mais fácil se você planeja:

  • Implante um ambiente de teste: A implantação é rápida e simples, tornando-a ideal para experimentos rápidos ou clusters de curta duração.

  • Trabalhe sem requisitos rígidos de VM, armazenamento ou rede: o AKS Automatic fornece configurações padrão predefinidas; portanto, se elas atenderem às suas necessidades, você evita configurações adicionais.

  • Comece a usar o Kubernetes pela primeira vez: ao lidar com grande parte da configuração do cluster, o AKS Automatic reduz a curva de aprendizado e permite que as equipes se concentrem em seus aplicativos.

Fonte: Guia de início rápido: Criar um cluster automático do Azure Kubernetes Service (AKS) (prévia)

Para o Elasticsearch, usaremos o Elastic Cloud on Kubernetes (ECK), que é o operador oficial do Elastic Kubernetes e simplifica a orquestração das implantações do Elastic Stack no Kubernetes.

Como configurar o AKS automaticamente

1. Faça login no Portal do Microsoft Azure.

2. No canto superior direito, clique No botão do Cloud Shell , você pode acessar o console e implantar o cluster AKS a partir daí. Alternativamente, você pode usar o Azure Cloud Shell.

Lembre-se de atualizar o ID do projeto com o seu durante o tutorial.

Abrir o AKS deve ser semelhante à captura de tela acima.

3. Instale a extensão aks-preview da CLI do Azure. Esta versão de pré-visualização permitirá selecionar --sku automatic na criação do cluster, o que habilita o recurso AKS Automático.

az extension add --name aks-preview

Se você vir esta mensagem, significa que a extensão AKS foi instalada corretamente.

4. Registre os sinalizadores de recursos usando o comando az feature register

az feature register --namespace Microsoft.ContainerService --name AutomaticSKUPreview

Você verá os detalhes sobre a assinatura do recurso que acabamos de criar:

Verifique o status do registro até que ele mude de “Registrando” para “Registrado”. O processo de cadastro pode levar alguns minutos.

az feature show --namespace Microsoft.ContainerService --name AutomaticSKUPreview

Execute az provider register para propagar as alterações.

az provider register --namespace Microsoft.ContainerService

5. Criar um grupo de recursos

Um grupo de recursos é um grupo lógico de recursos do Azure que serão gerenciados e implantados.

az group create --name elastic-resource --location eastus

6. Crie um cluster do Autopilot. Vamos chamá-lo de myAKSAutomaticCluster e usar o grupo de recursos que acabamos de criar. Certifique-se de ter 16 vCPUs disponíveis em qualquer um dos seguintes tamanhos de VM: Standard_D4pds_v5, Standard_D4lds_v5, Standard_D4ads_v5, Standard_D4ds_v5, Standard_D4d_v5, Standard_D4d_v4, Standard_DS3_v2, Standard_DS12_v2 para que o AKS possa alocar recursos.

az aks create \
    --resource-group elastic-resource \
    --name myAKSAutomaticCluster \
    --sku automatic \
    --generate-ssh-keys

* Se você receber dois errosMissingSubscriptionRegistration), volte ao passo 4 com as assinaturas ausentes. Por exemplo, The subscription is not registered to use namespace 'microsoft.insights' requer a execução de az provider register --namespace Microsoft.Insights.

Siga as instruções de login interativo:

Uma mensagem solicitando a execução do comando “az login” será exibida. Você precisa executar esse comando e depois esperar.

7. Aguarde até que esteja pronto. Leva cerca de 10 minutos para criar.

8. Configure o acesso à linha de comando do kubectl.

az aks get-credentials --resource-group elastic-resource --name myAKSAutomaticCluster

Observe que a extensão que instalamos está habilitando o AKS Automático.

9. Confirme se os nós foram implantados.

kubectl get nodes

Você verá uma mensagem de erro de acesso proibido; copie o ID do usuário da mensagem de erro.

10. Adicione seu usuário ao controle de acesso do AKS.

Obtenha o ID da AKS. Copie a saída do comando.

az aks show --resource-group elastic-resource  --name myAKSAutomaticCluster --query id --output tsv

Crie uma atribuição de função usando o ID do AKS e o ID principal do seu usuário.

az role assignment create --role "Azure Kubernetes Service RBAC Cluster Admin" --assignee <PRINCIPAL_ID> --scope <AKS_ID>

11. Tente confirmar novamente se os nós foram implantados.

kubectl get nodes

12. Instale o operador Elastic Cloud on the Kubernetes (ECK).

# Install ECK Custom Resource Definitions
kubectl create -f https://download.elastic.co/downloads/eck/2.16.1/crds.yaml

# Install the ECK operator
kubectl apply -f https://download.elastic.co/downloads/eck/2.16.1/operator.yaml

13. Vamos criar uma instância Elasticsearch de nó único com os valores padrão.

cat <<EOF | kubectl apply -f -
apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
  name: quickstart
spec:
  version: 9.0.0
  nodeSets:
  - name: default
    count: 1
    config:
      node.store.allow_mmap: false
EOF

Desativamos nmap porque a máquina AKS padrão tem um valor vm.max_map_count muito baixo. Desativá-lo não é recomendado para produção, mas aumentar o valor de vm.max_map_count. Você pode ler mais sobre como fazer isso aqui.

14. Vamos também implantar um cluster Kibana de nó único. Para o Kibana, adicionaremos um balanceador de carga, que nos fornecerá um IP externo que poderemos usar para acessar o Kibana a partir do nosso dispositivo.

cat <<EOF | kubectl apply -f -
apiVersion: kibana.k8s.elastic.co/v1
kind: Kibana
metadata:
  name: quickstart
spec:
  version: 9.0.0
  http:
    service:
      spec:
        type: LoadBalancer
  count: 1
  elasticsearchRef:
    name: quickstart
EOF

Por padrão, o AKS Automatic configurará o balanceador de carga como público; você pode alterar esse comportamento definindo a anotação de metadados:

service.beta.kubernetes.io/azure-load-balancer-internal: "true"

15. Verifique se seus pods estão em execução.

kubectl get pods

16. Você também pode executar kubectl get elasticsearch e kubectl get kibana para estatísticas mais específicas, como versão do Elasticsearch, nós e integridade.

17. Acesse seus serviços.

kubectl get svc

Isso mostrará o URL externo do Kibana em EXTERNAL-IP. Pode levar alguns minutos para o balanceador de carga ser provisionado. Copie o valor de EXTERNAL-IP.

18. Obtenha a senha do Elasticsearch para o usuário 'elastic':

kubectl get secret quickstart-es-elastic-user -o=jsonpath='{.data.elastic}' | base64 --decode

19. Acesse o Kibana através do seu navegador:

a. URL: https://:5601<EXTERNAL_IP>

b. Nome de usuário: elastic

c. Senha: c44A295CaEt44D6xIzN6Zs5m (da etapa anterior)

20. Ao acessar o Elastic Cloud pelo seu navegador, você verá a tela de boas-vindas.

Se você deseja alterar as especificações do cluster Elasticsearch, como alterar ou redimensionar nós, pode aplicar o manifesto YML novamente com as novas configurações:

cat <<EOF | kubectl apply -f -
apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
  name: quickstart
spec:
  version: 9.0.0
  nodeSets:
    - name: default
      count: 2
      config:
        node.store.allow_mmap: false
      podTemplate:
        spec:
          containers:
            - name: elasticsearch
              resources:
                requests:
                  memory: 1.5Gi
                  cpu: 2
                limits:
                  memory: 1.5Gi
                  cpu: 2
EOF

Neste exemplo, vamos adicionar mais um nó e modificar a RAM e a CPU. Como você pode ver, agora kubectl get elasticsearch mostra 2 nós:

O mesmo se aplica ao Kibana:

cat <<EOF | kubectl apply -f -
apiVersion: kibana.k8s.elastic.co/v1
kind: Kibana
metadata:
  name: quickstart
spec:
  version: 9.0.0
  http:
    service:
      spec:
        type: LoadBalancer
  count: 1
  elasticsearchRef:
    name: quickstart
  podTemplate:
    spec:
      containers:
        - name: kibana
          env:
            - name: NODE_OPTIONS
              value: "--max-old-space-size=1024"
          resources:
            requests:
              memory: 0.5Gi
              cpu: 0.5
            limits:
              memory: 1Gi
              cpu: 1
EOF

Podemos ajustar o uso de CPU/RAM do contêiner e também o uso de memória do Node.js (max-old-space-size).

Lembre-se de que os pedidos de reembolso em grande volume já existentes não podem ser reduzidos. Após aplicar a atualização, o operador fará as alterações com o mínimo de interrupção possível.

Lembre-se de excluir o cluster quando terminar os testes para evitar custos desnecessários.

az aks delete --name myAKSAutomaticCluster --resource-group elastic-resource

Conclusão

Utilizar o Azure AKS Automatic com o ECK oferece uma solução equilibrada para a implementação do Elasticsearch e do Kibana: reduz a complexidade operacional, garante o dimensionamento e as atualizações automatizadas e aproveita a flexibilidade do Kubernetes. Essa abordagem é ideal para equipes que desejam um processo de implantação confiável, repetível e de fácil manutenção, sem precisar gerenciar manualmente cada detalhe da infraestrutura, tornando-se uma escolha prática tanto para ambientes de teste quanto de produção.

Próximas etapas

Se você quiser saber mais sobre Kubernetes, pode consultar a documentação oficial aqui:

Quão útil foi este conteúdo?

Conteúdo relacionado

Configurando o particionamento recursivo para documentos estruturados no Elasticsearch

Configurando o particionamento recursivo para documentos estruturados no Elasticsearch

Daniel Rubinstein
Apresentando a interface de usuário de regras de consulta do Elasticsearch no Kibana.

Apresentando a interface de usuário de regras de consulta do Elasticsearch no Kibana.

Jhon Guzmán
Como implantar o Elasticsearch no AWS Marketplace

Como implantar o Elasticsearch no AWS Marketplace

Eduard Martin
Fragmentos e réplicas do Elasticsearch: um guia prático

Fragmentos e réplicas do Elasticsearch: um guia prático

Piotr Przybyl
Revelando padrões únicos: um guia para agregação de termos relevantes no Elasticsearch.

Revelando padrões únicos: um guia para agregação de termos relevantes no Elasticsearch.

Alexander Dávila

Pronto para criar buscas de última geração?

Uma pesquisa suficientemente avançada não se consegue apenas com o esforço de uma só pessoa. O Elasticsearch é impulsionado por cientistas de dados, especialistas em operações de aprendizado de máquina, engenheiros e muitos outros que são tão apaixonados por buscas quanto você. Vamos nos conectar e trabalhar juntos para construir a experiência de busca mágica que lhe trará os resultados desejados.