Blog

La nostra raccolta di articoli e approfondimenti tecnici

Video

Una raccolta di video dai nostri eventi, webinar e molto altro

Use case

Una raccolta dei nostri Casi di successo

Gestire un cluster OpenSearch in ambienti Kubernetes può essere complesso e richiede competenze specifiche sia sull’orchestrazione dei container sia sulla configurazione dei nodi. OpenSearch Kubernetes Operator nasce proprio per semplificare questo scenario: è uno strumento open source pensato per automatizzare il deployment, la gestione e l’aggiornamento di cluster OpenSearch, sfruttando la potenza di Kubernetes per garantire scalabilità, resilienza e coerenza operativa.

Grazie a questo Operator, è possibile definire in modo dichiarativo ogni aspetto dell’infrastruttura OpenSearch — dalla configurazione della sicurezza alla gestione delle risorse, fino all’installazione dei plugin — lasciando che Kubernetes si occupi dell’orchestrazione tramite meccanismi nativi come StatefulSet e Service. Il risultato è una gestione centralizzata, efficiente e facilmente adattabile alle esigenze di ambienti produttivi dinamici, dove l’affidabilità dei dati e la rapidità nel rispondere ai cambiamenti sono cruciali.

Funzionalità principali dell’OpenSearch Kubernetes Operator

OpenSearch Kubernetes Operator dispone di una serie di funzionalità che facilitano la gestione dei cluster OpenSearch su Kubernetes:

  • Automazione del deployment: l’operator automatizza il processo di installazione e configurazione di OpenSearch, riducendo la complessità e il tempo necessario per il deploy di nuovi cluster.
  • Gestione delle risorse: consente di definire e modificare facilmente le risorse allocate ai nodi del cluster, come CPU e memoria, in modo dichiarativo.
  • Scalabilità: supporta l’aumento del numero di nodi nel cluster in base alle esigenze.
  • Aggiornamenti rolling: facilita l’aggiornamento di versione di OpenSearch, eseguendo aggiornamenti rolling, mantenendo quindi operativo il cluster durante l’intero processo.
  • Gestione della sicurezza: offre strumenti per configurare l’autenticazione, l’autorizzazione e la crittografia, inclusa la gestione dei certificati TLS per la comunicazione sicura tra i nodi.
  • Gestione dei plugins: implementa la gestione automatica dei plugins su Opensearch, ad esempio S3.

Installazione dell’OpenSearch Kubernetes Operator

L’installazione dell’ Operator può essere effettuata tramite Helm.

Una volta installato, è possibile deployare un cluster OpenSearch creando una custom resource di tipo OpenSearchCluster.

Di seguito è riportato un esempio di configurazione:

apiVersion: opensearch.opster.io/v1

kind: OpenSearchCluster

metadata:

name: os-cluster

namespace: os-cluster-00

spec:

security:

config:

securityConfigSecret:

name: securityconfig-secret

adminCredentialsSecret:

name: os-credentials

tls:

http:

generate: true

transport:

generate: true

perNode: true

general:

serviceName: os-cluster-00

version: 2.18.0

dashboards:

enable: true

version: 2.18.0

replicas: 1

resources:

requests:

memory: “512Mi”

cpu: “200m”

limits:

memory: “512Mi”

cpu: “200m”

nodePools:

– component: nodes

replicas: 3

diskSize: “5Gi”

nodeSelector:

resources:

requests:

memory: “2Gi”

cpu: “500m”

limits:

memory: “2Gi”

cpu: “500m”

roles:

– “cluster_manager”

– “data”

La custom resource in dettaglio

La custom resource è costituita da diverse sezioni:

  • metadata
  • spec.security
  • spec.general
  • spec.dashboards
  • spec.nodePools

I nodi appartenenti al cluster OpenSearch vengono raggruppati in gruppi logici detti nodepool, attraverso i quali è possibile definire il numero di repliche, il ruolo opensearch, particolari property e configurazioni.

Per ogni nodepool l’operator genera uno statefulset ed un service Kubernetes.

Analizziamo le diverse sezioni del file

 

Metadata

Nella sezione metadata si va ad indicare il namespace Kubernetes ed il nome del cluster.

Spec.security

In questa sezione si vanno a definire le configurazioni relative alla sicurezza, per esempio i secret da usare per l’inizializzazione della security, o per i keystore di Opensearch.

General

In questa sezione vengono riportate alcune configurazioni generiche come la porta, il nome del service Kubernetes, la lista del plugin e la versione di OpenSearch.

Dashboards

In questa sezione si vanno a specificare tutte le informazioni relative ad OpenSearch Dashboards, come il numero di repliche, le risorse ad esso associate e la versione.

NodePools

All’interno di questa sezione su vanno a definire i nodePools, per ognuno di essi l’operator crea sul cluster Kubernetes uno statefullSet ed un service.

A livello di nodePools e quindi di statefulset è possibile indicare il numero di repliche , le risorse hardware ed il ruolo OpenSearch associato ad un determinato gruppo di pod.

Per quanto riguarda la persistenza, è possibile utilizzare emptydir, hostpath e le persistenVolumeClaim (consigliate per ambienti di produzione).

Per distribuire i pod su nodi Kubernetes diversi è possibile utilizzare regole di antiaffinity, o property come nodeSelector.

Attraverso la voce additionalConfig, è possibile dettagliare e quindi differenziare per nodepools le configurazioni dei singoli nodi OpenSearch.

Segue un esempio pratico:

Possiamo vedere l’elenco delle risorse create tramite l’Operator, notare gli statfulset ed i pod ad essi associati:

Nella figura sotto notare l’associazione dei pod *-rack1-* con il worker-node1 oppure *-rack2-* con il worker-node2, ottenuta grazie a regole definite nella customresource.

Dettaglio del cluster Opensearch:

L’ architettura riportata sopra prevede tre master node, due datanode e altri due nodi di tipo ingest e machine-learning.

I tre master node opensearch sono eseguiti da differenti nodi Kubernetes.

Mentre i nodi OpenSearch denominati *-rack1-* sono in esecuzione sul nodo Kubernetes worker-node1 mentre i nodi *-rack2-* risiedono sul worker-node2.

Opensearch attraverso gli shard di replica fornisce nativamente un certo livello di resilienza, che si va ad aggiungere alle funzionalità intrinseche di Kubernetes.

Per gestire al meglio tali aspetti è possibile a livello di OpenSearch implementare meccanismi di shard allocation awareness o forced awareness, che aumentano ulteriormente la resilienza della piattaforma in caso di guasti hardware.

Si pensi ad esempio il down di un worker-node, o di un intero rack o zona di disponibiltà.

Conclusione

L’ OpenSearch Kubernetes Operator rappresenta una soluzione potente e flessibile per semplificare la gestione dei cluster OpenSearch in ambienti Kubernetes. Automatizzando il deployment, la configurazione e l’aggiornamento dei cluster, l’Operator riduce significativamente la complessità operativa e migliora la scalabilità e la sicurezza. Grazie alla sua capacità di gestire risorse, plugin e configurazioni di sicurezza in modo centralizzato, le aziende possono ottenere una gestione più efficiente e resiliente dei dati. Questo approccio non solo ottimizza i processi, ma consente anche di adattarsi facilmente alle esigenze in continua evoluzione del business.

Contattaci per saperne di più

Prenota un appuntamento con il nostro consulente OSAM o con gli esperti del nostro team.