RousselTMLEARNING

Observabilité

Elasticsearch sur Kubernetes avec ECK : déploiement, stockage persistant et mises à jour

Déployer Elasticsearch et Kibana sur Kubernetes avec Elastic Cloud on Kubernetes (ECK) : opérateur, ressources Elasticsearch et Kibana, nodeSets, stockage persistant, sécurité automatique, mises à jour et bonnes pratiques.

1. Installer l'opérateur #

CRD et opérateur.

Installation #

Architecture ECK
kubectl create -f https://download.elastic.co/downloads/eck/2.16.1/crds.yaml
kubectl apply  -f https://download.elastic.co/downloads/eck/2.16.1/operator.yaml
kubectl -n elastic-system logs statefulset/elastic-operator
À savoir : Remplacez la version d'ECK par la dernière publiée ; elle détermine les versions de la Stack prises en charge.

2. Déclarer un cluster #

nodeSets et volumes.

Manifeste #

apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata: { name: logs }
spec:
  version: 8.17.0
  nodeSets:
    - name: master
      count: 3
      config: { node.roles: [ master ] }
      volumeClaimTemplates:
        - metadata: { name: elasticsearch-data }
          spec: { accessModes: [ ReadWriteOnce ], resources: { requests: { storage: 10Gi } } }
    - name: hot
      count: 3
      config: { node.roles: [ data_hot, data_content, ingest ] }
      podTemplate:
        spec:
          containers:
            - name: elasticsearch
              resources: { requests: { memory: 8Gi, cpu: 2 }, limits: { memory: 8Gi } }
      volumeClaimTemplates:
        - metadata: { name: elasticsearch-data }
          spec: { accessModes: [ ReadWriteOnce ], storageClassName: fast-ssd, resources: { requests: { storage: 500Gi } } }
---
apiVersion: kibana.k8s.elastic.co/v1
kind: Kibana
metadata: { name: logs }
spec: { version: 8.17.0, count: 1, elasticsearchRef: { name: logs } }
kubectl get elasticsearch
kubectl get secret logs-es-elastic-user -o go-template='{{.data.elastic | base64decode}}' 

3. Exploiter #

Mises à jour et pièges.

Pratiques #

  • Mise à jour : changer spec.version ; ECK redémarre les pods un par un en respectant la santé du cluster.
  • Changer la taille d'un nodeSet : modifier count ; ECK migre les données avant de supprimer un pod.
  • TLS et utilisateur elastic générés automatiquement ; certificats personnalisés possibles.
  • Anti-affinité par nœud et répartition par zone (topologySpreadConstraints) pour la haute disponibilité.
Erreur Courante : Une StorageClass avec reclaimPolicy: Delete détruit les données à la suppression du cluster. Pour la production, utilisez Retain et des snapshots.

Articles liés

Architecture distribuée Elasticsearch : rôles des nœuds, shards, répliques et allocation

Comprendre le fonctionnement distribué d'Elasticsearch : rôles des nœuds, nœuds master et quorum, cluster sta…

Mappings et analyse de texte Elasticsearch : types de champs, analyseurs et mapping dynamique

Maîtriser les mappings Elasticsearch : types de champs (text, keyword, numériques, date, ip, nested), multi-f…

Ingestion Elasticsearch : Bulk API, ingest pipelines, enrich et reindex

Ingérer et transformer des données dans Elasticsearch : Bulk API, ingest pipelines et processeurs (grok, diss…

Pour aller plus loin