Files
homelab/k8s/temporal/elasticsearch.yaml
T

103 lines
2.4 KiB
YAML
Raw Normal View History

# Elasticsearch 7.17.0 for Temporal visibility store
# Deployed to worker nodes (not control plane to save CP resources for LLM work)
# 2Gi heap + 4Gi memory limit for stable operation
apiVersion: v1
kind: ConfigMap
metadata:
name: elasticsearch-config
namespace: temporal
data:
elasticsearch.yml: |
cluster.name: temporal-elasticsearch
node.name: temporal-elasticsearch-0
discovery.type: single-node
network.host: 0.0.0.0
http.host: 0.0.0.0
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: temporal-elasticsearch
namespace: temporal
spec:
replicas: 1
selector:
matchLabels:
app: temporal-elasticsearch
template:
metadata:
labels:
app: temporal-elasticsearch
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: node-role.kubernetes.io/worker
operator: Exists
containers:
- name: elasticsearch
image: docker.elastic.co/elasticsearch/elasticsearch:7.17.0
env:
- name: discovery.type
value: single-node
- name: "ES_JAVA_OPTS"
value: "-Xms2g -Xmx2g"
ports:
- containerPort: 9200
name: http
- containerPort: 9300
name: transport
livenessProbe:
httpGet:
path: /_cluster/health
port: 9200
initialDelaySeconds: 180
periodSeconds: 10
timeoutSeconds: 10
failureThreshold: 5
readinessProbe:
httpGet:
path: /_cluster/health?local=true
port: 9200
initialDelaySeconds: 150
periodSeconds: 10
timeoutSeconds: 10
failureThreshold: 5
resources:
requests:
cpu: 500m
memory: 2Gi
limits:
cpu: 2000m
memory: 4Gi
volumeMounts:
- name: config
mountPath: /usr/share/elasticsearch/config/elasticsearch.yml
subPath: elasticsearch.yml
volumes:
- name: config
configMap:
name: elasticsearch-config
---
apiVersion: v1
kind: Service
metadata:
name: temporal-elasticsearch
namespace: temporal
spec:
selector:
app: temporal-elasticsearch
ports:
- port: 9200
targetPort: 9200
name: http
- port: 9300
targetPort: 9300
name: transport
type: ClusterIP