1. Installer l'opérateur #
CRD et opérateur.
Installation #
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
elasticgé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 avecreclaimPolicy: Deletedétruit les données à la suppression du cluster. Pour la production, utilisezRetainet des snapshots.
