software/components/elastic-search/elastic-search.yaml (87 lines of code) (raw):
apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
name: elasticsearch
namespace: elastic-search
annotations:
eck.k8s.elastic.co/downward-node-labels: "topology.kubernetes.io/zone"
spec:
version: 8.15.2
http:
tls:
selfSignedCertificate:
disabled: true
service:
spec:
type: ClusterIP
nodeSets:
- name: default
count: 3
volumeClaimTemplates:
- metadata:
name: elasticsearch-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 128Gi
storageClassName: managed-premium
config:
node.roles: [ "master", "data", "ingest" ]
node.store.allow_mmap: false
node.attr.zone: "${ZONE}"
cluster.routing.allocation.awareness.attributes: k8s_node_name,zone
podTemplate:
metadata:
annotations:
traffic.sidecar.istio.io/includeInboundPorts: "*"
traffic.sidecar.istio.io/excludeOutboundPorts: "9300"
traffic.sidecar.istio.io/excludeInboundPorts: "9300"
spec:
tolerations:
- effect: NoSchedule
key: app
value: "cluster"
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: agentpool
operator: In
values:
- poolz1
- poolz2
- poolz3
- matchExpressions:
- key: topology.kubernetes.io/zone
operator: In
values:
- "$(ZONE)-1"
- "$(ZONE)-2"
- "$(ZONE)-3"
containers:
- name: elasticsearch
env:
- name: ES_JAVA_OPTS
value: "-Xms1g -Xmx1g"
- name: ZONE
valueFrom:
fieldRef:
fieldPath: metadata.annotations['topology.kubernetes.io/zone']
resources:
requests:
memory: 2Gi
cpu: 0.2
limits:
memory: 2Gi
cpu: 2
topologySpreadConstraints:
- maxSkew: 1
topologyKey: topology.kubernetes.io/zone
whenUnsatisfiable: DoNotSchedule
labelSelector:
matchLabels:
elasticsearch.k8s.elastic.co/cluster-name: elasticsearch
elasticsearch.k8s.elastic.co/statefulset-name: elasticsearch-es-default