
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