From c3084225b7f50dce5fa7e7885513fdf7c0ded6b4 Mon Sep 17 00:00:00 2001 From: Mayne0213 Date: Sat, 10 Jan 2026 13:46:02 +0900 Subject: [PATCH] PERF(observability): add HA for Loki and Tempo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Loki: replicas 1→2 with soft anti-affinity - Tempo: replicas 1→2 with soft anti-affinity - Thanos/Prometheus: keep replica 1 Co-Authored-By: Claude Opus 4.5 --- loki/helm-values.yaml | 12 +++++++++++- prometheus/helm-values.yaml | 2 +- tempo/helm-values.yaml | 14 ++++++++++++++ 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/loki/helm-values.yaml b/loki/helm-values.yaml index 48edf2c..6e43a98 100644 --- a/loki/helm-values.yaml +++ b/loki/helm-values.yaml @@ -45,10 +45,20 @@ loki: deploymentMode: SingleBinary singleBinary: - replicas: 1 + replicas: 2 # Disable PVC - use emptyDir for WAL (data stored in MinIO) persistence: enabled: false + # Soft anti-affinity for HA + affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - weight: 100 + podAffinityTerm: + labelSelector: + matchLabels: + app.kubernetes.io/name: loki + topologyKey: kubernetes.io/hostname extraVolumes: - name: data emptyDir: diff --git a/prometheus/helm-values.yaml b/prometheus/helm-values.yaml index 396722d..e75b12e 100644 --- a/prometheus/helm-values.yaml +++ b/prometheus/helm-values.yaml @@ -70,7 +70,7 @@ prometheus: # Enable remote write receiver for OTel Collector enableRemoteWriteReceiver: true - # Single replica (HA removed for resource optimization) + # Single replica replicas: 1 replicaExternalLabelName: prometheus_replica diff --git a/tempo/helm-values.yaml b/tempo/helm-values.yaml index 8f5684c..b05b76d 100644 --- a/tempo/helm-values.yaml +++ b/tempo/helm-values.yaml @@ -10,6 +10,20 @@ # Medium priority for observability priorityClassName: medium-priority +# HA with 2 replicas +replicas: 2 + +# Soft anti-affinity for HA +affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - weight: 100 + podAffinityTerm: + labelSelector: + matchLabels: + app.kubernetes.io/name: tempo + topologyKey: kubernetes.io/hostname + # ============================================================================= # Resource Limits (optimized for small cluster) # =============================================================================