Olá!

O Elasticsearch é uma das soluções mais populares para busca e análise de dados em tempo real. No OpenShift, a melhor forma de gerenciar um cluster Elasticsearch é usando o Elastic Operator, que automatiza a instalação, configuração e gerenciamento do ciclo de vida do Elasticsearch e outros componentes do Elastic Stack.

Neste guia, você aprenderá:

✅ O que é um Operator no OpenShift
✅ Como instalar o Elastic Operator
✅ Como criar um cluster Elasticsearch no OpenShift usando o Operator
✅ Como adicionar nós dedicados para Machine Learning
✅ Como configurar storage persistente (com observação sobre StorageClass)
✅ Como adicionar Tolerations e Taints (Opcional)
✅ Como fazer o deploy via Web Console

📌 O que é um Operator no OpenShift?

No OpenShift (e no Kubernetes), um Operator é um controlador especializado que gerencia aplicativos complexos, como bancos de dados e clusters distribuídos, automatizando suas operações (deploy, upgrades, escalabilidade, backup, etc.).

Vantagens do Elastic Operator

✅ Automatiza o deploy e a configuração do Elasticsearch
✅ Gerencia upgrades e escalabilidade sem downtime
✅ Cria recursos adicionais como Kibana, APM e Beats
✅ Reduz erros manuais e aumenta a eficiência da administração


📥 Instalando o Elastic Operator no OpenShift

Antes de criar um cluster Elasticsearch, precisamos instalar o Elastic Operator.

🔹 Instalação via OpenShift Web Console

1️⃣ Acesse o OpenShift Web Console e faça login.
2️⃣ No menu lateral, clique em Operators → OperatorHub.
3️⃣ Pesquise por Elastic Operator.
4️⃣ Clique em Install e siga as etapas.
5️⃣ Aguarde até que o operador esteja no status Succeeded.

🚀 Criando um Cluster Elasticsearch com o Elastic Operator

Agora que o Elastic Operator está instalado, podemos criar um cluster Elasticsearch no OpenShift.

📝 YAML do Elasticsearch Cluster

Crie um arquivo chamado elasticsearch-deploy.yaml com a seguinte configuração:

apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
name: pensandolinux-cluster-elastic
namespace: pensandolinux-elasticsearch
spec:
nodeSets:
- name: default
count: 3
config:
node.roles:
- master
- data
- ingest
node.store.allow_mmap: false
podTemplate:
metadata:
labels:
role: elasticsearch
spec:
nodeSelector:
env: ELK
containers:
- name: elasticsearch
resources:
requests:
memory: 8Gi
cpu: 4
limits:
memory: 8Gi
cpu: 4
volumeClaimTemplates:
- metadata:
name: elasticsearch-data
spec:
accessModes: ["ReadWriteOnce"]
storageClassName: thin # 🔹 Verifique se essa StorageClass está disponível no ambiente OpenShift.
resources:
requests:
storage: 500Gi

- name: ml-nodes
count: 1
config:
node.roles:
- ml
node.store.allow_mmap: false
podTemplate:
metadata:
labels:
role: ml
spec:
nodeSelector:
env: ELK
containers:
- name: elasticsearch
resources:
requests:
memory: 4Gi
cpu: 2
limits:
memory: 4Gi
cpu: 2
volumeClaimTemplates:
- metadata:
name: elasticsearch-data
spec:
accessModes: ["ReadWriteOnce"]
storageClassName: thin # 🔹 Certifique-se de que essa StorageClass está configurada no ambiente.
resources:
requests:
storage: 500Gi
version: 8.17.1

⚠ Observação sobre StorageClass

A StorageClass utilizada no YAML (thin) deve estar disponível no ambiente OpenShift onde o cluster será implantado.

🛠 Configuração Opcional: Tolerations e Taints

Caso seja necessário garantir que os pods rodem apenas em nós específicos, adicione tolerations no YAML:

         tolerations:
- key: node-role.kubernetes.io/worker
value: reserved
effect: NoSchedule
- key: node-role.kubernetes.io/worker
value: reserved
effect: NoExecute

Se precisar adicionar taints aos nós via CLI:

oc adm taint nodes <NOME_DO_NODE> node-role.kubernetes.io/worker=reserved:NoSchedule
oc adm taint nodes <NOME_DO_NODE> node-role.kubernetes.io/worker=reserved:NoExecute

Para configurar no MachineSet, execute:

oc patch machineset prod-openshif-xpto01-worker-elk \
-n openshift-machine-api \
--type='merge' \
-p '{"spec": {"template": {"spec": {"taints": [{"key": "node-role.kubernetes.io/worker", "value": "reserved", "effect": "NoSchedule"}, {"key": "node-role.kubernetes.io/worker", "value": "reserved", "effect": "NoExecute"}]}}}}'

💾 Deploy do Elasticsearch no OpenShift

🔹 Via OpenShift Web Console

1️⃣ Acesse o OpenShift Web Console.
2️⃣ Vá até Administrator View → Workloads → Custom Resources.
3️⃣ Clique em Create Custom Resource no topo direito.
4️⃣ Cole o YAML do cluster Elasticsearch.
5️⃣ Clique em Create.

Após alguns minutos, os pods do Elasticsearch estarão rodando no namespace pensandolinux-elasticsearch.

🎯 Conclusão

Com o Elastic Operator, podemos criar e gerenciar um cluster Elasticsearch no OpenShift de forma automática e escalável.

Resumo do que aprendemos:

✅ O que são Operators e por que usar no OpenShift
✅ Como instalar o Elastic Operator
✅ Como criar um cluster Elasticsearch com YAML
✅ Como adicionar nós dedicados para Machine Learning
✅ Como configurar storage persistente (com observação sobre StorageClass)

Deixe um comentário

Tendência