From f0b76391422a72bae8e4888bf2580e3d2da789cf Mon Sep 17 00:00:00 2001 From: gitea-bot Date: Fri, 6 Mar 2026 05:19:30 +0000 Subject: [PATCH] chore: Update manifests after change --- ...onfigMap-yamtrack-valkey-init-scripts.yaml | 87 ++++++++++++ .../yamtrack/Deployment-yamtrack.yaml | 2 +- .../yamtrack/PodMonitor-yamtrack-valkey.yaml | 23 ++++ .../PrometheusRule-yamtrack-valkey.yaml | 47 +++++++ ...eplication-redis-replication-yamtrack.yaml | 44 ------ .../Service-yamtrack-valkey-headless.yaml | 23 ++++ .../Service-yamtrack-valkey-metrics.yaml | 23 ++++ .../Service-yamtrack-valkey-read.yaml | 21 +++ .../yamtrack/Service-yamtrack-valkey.yaml | 22 +++ .../ServiceAccount-yamtrack-valkey.yaml | 11 ++ ...iceMonitor-redis-replication-yamtrack.yaml | 22 --- .../ServiceMonitor-yamtrack-valkey.yaml | 24 ++++ .../yamtrack/StatefulSet-yamtrack-valkey.yaml | 129 ++++++++++++++++++ 13 files changed, 411 insertions(+), 67 deletions(-) create mode 100644 clusters/cl01tl/manifests/yamtrack/ConfigMap-yamtrack-valkey-init-scripts.yaml create mode 100644 clusters/cl01tl/manifests/yamtrack/PodMonitor-yamtrack-valkey.yaml create mode 100644 clusters/cl01tl/manifests/yamtrack/PrometheusRule-yamtrack-valkey.yaml delete mode 100644 clusters/cl01tl/manifests/yamtrack/RedisReplication-redis-replication-yamtrack.yaml create mode 100644 clusters/cl01tl/manifests/yamtrack/Service-yamtrack-valkey-headless.yaml create mode 100644 clusters/cl01tl/manifests/yamtrack/Service-yamtrack-valkey-metrics.yaml create mode 100644 clusters/cl01tl/manifests/yamtrack/Service-yamtrack-valkey-read.yaml create mode 100644 clusters/cl01tl/manifests/yamtrack/Service-yamtrack-valkey.yaml create mode 100644 clusters/cl01tl/manifests/yamtrack/ServiceAccount-yamtrack-valkey.yaml delete mode 100644 clusters/cl01tl/manifests/yamtrack/ServiceMonitor-redis-replication-yamtrack.yaml create mode 100644 clusters/cl01tl/manifests/yamtrack/ServiceMonitor-yamtrack-valkey.yaml create mode 100644 clusters/cl01tl/manifests/yamtrack/StatefulSet-yamtrack-valkey.yaml diff --git a/clusters/cl01tl/manifests/yamtrack/ConfigMap-yamtrack-valkey-init-scripts.yaml b/clusters/cl01tl/manifests/yamtrack/ConfigMap-yamtrack-valkey-init-scripts.yaml new file mode 100644 index 000000000..ec4434d98 --- /dev/null +++ b/clusters/cl01tl/manifests/yamtrack/ConfigMap-yamtrack-valkey-init-scripts.yaml @@ -0,0 +1,87 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: yamtrack-valkey-init-scripts + labels: + helm.sh/chart: valkey-0.9.3 + app.kubernetes.io/name: valkey + app.kubernetes.io/instance: yamtrack + app.kubernetes.io/version: "9.0.3" + app.kubernetes.io/managed-by: Helm +data: + init.sh: |- + #!/bin/sh + set -eu + + # Default config paths + VALKEY_CONFIG=${VALKEY_CONFIG_PATH:-/data/conf/valkey.conf} + + LOGFILE="/data/init.log" + DATA_DIR="/data/conf" + + # Logging function (outputs to stderr and file) + log() { + echo "$(date) $1" | tee -a "$LOGFILE" >&2 + } + + # Clean old log if requested + if [ "${KEEP_OLD_LOGS:-false}" != "true" ]; then + rm -f "$LOGFILE" + fi + + if [ -f "$LOGFILE" ]; then + log "Detected restart of this instance ($HOSTNAME)" + fi + + log "Creating configuration in $DATA_DIR..." + mkdir -p "$DATA_DIR" + rm -f "$VALKEY_CONFIG" + + + # Base valkey.conf + log "Generating base valkey.conf" + { + echo "port 6379" + echo "protected-mode no" + echo "bind * -::*" + echo "dir /data" + } >>"$VALKEY_CONFIG" + # Replica mode configuration + log "Configuring replication mode" + + # Use POD_INDEX from Kubernetes metadata + POD_INDEX=${POD_INDEX:-0} + IS_MASTER=false + + # Check if this is pod-0 (master) + if [ "$POD_INDEX" = "0" ]; then + IS_MASTER=true + log "This pod (index $POD_INDEX) is configured as MASTER" + else + log "This pod (index $POD_INDEX) is configured as REPLICA" + fi + + # Configure replica settings + if [ "$IS_MASTER" = "false" ]; then + MASTER_HOST="yamtrack-valkey-0.yamtrack-valkey-headless.yamtrack.svc.cluster.local" + MASTER_PORT="6379" + + log "Configuring replica to follow master at $MASTER_HOST:$MASTER_PORT" + + { + echo "" + echo "# Replica Configuration" + echo "replicaof $MASTER_HOST $MASTER_PORT" + echo "replica-announce-ip yamtrack-valkey-$POD_INDEX.yamtrack-valkey-headless.yamtrack.svc.cluster.local" + } >>"$VALKEY_CONFIG" + fi + + # Append extra configs if present + if [ -f /usr/local/etc/valkey/valkey.conf ]; then + log "Appending /usr/local/etc/valkey/valkey.conf" + cat /usr/local/etc/valkey/valkey.conf >>"$VALKEY_CONFIG" + fi + if [ -d /extravalkeyconfigs ]; then + log "Appending files in /extravalkeyconfigs/" + cat /extravalkeyconfigs/* >>"$VALKEY_CONFIG" + fi diff --git a/clusters/cl01tl/manifests/yamtrack/Deployment-yamtrack.yaml b/clusters/cl01tl/manifests/yamtrack/Deployment-yamtrack.yaml index deb8da99f..3e2a8efdf 100644 --- a/clusters/cl01tl/manifests/yamtrack/Deployment-yamtrack.yaml +++ b/clusters/cl01tl/manifests/yamtrack/Deployment-yamtrack.yaml @@ -54,7 +54,7 @@ spec: key: SECRET name: yamtrack-config-secret - name: REDIS_URL - value: redis://redis-replication-yamtrack-master.yamtrack:6379 + value: redis://yamtrack-valkey.yamtrack:6379 - name: DB_USER valueFrom: secretKeyRef: diff --git a/clusters/cl01tl/manifests/yamtrack/PodMonitor-yamtrack-valkey.yaml b/clusters/cl01tl/manifests/yamtrack/PodMonitor-yamtrack-valkey.yaml new file mode 100644 index 000000000..63763c1ab --- /dev/null +++ b/clusters/cl01tl/manifests/yamtrack/PodMonitor-yamtrack-valkey.yaml @@ -0,0 +1,23 @@ +apiVersion: monitoring.coreos.com/v1 +kind: PodMonitor +metadata: + name: yamtrack-valkey + labels: + helm.sh/chart: valkey-0.9.3 + app.kubernetes.io/name: valkey + app.kubernetes.io/instance: yamtrack + app.kubernetes.io/version: "9.0.3" + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/part-of: valkey + app.kubernetes.io/component: podmonitor +spec: + podMetricsEndpoints: + - port: metrics + interval: 30s + namespaceSelector: + matchNames: + - yamtrack + selector: + matchLabels: + app.kubernetes.io/name: valkey + app.kubernetes.io/instance: yamtrack diff --git a/clusters/cl01tl/manifests/yamtrack/PrometheusRule-yamtrack-valkey.yaml b/clusters/cl01tl/manifests/yamtrack/PrometheusRule-yamtrack-valkey.yaml new file mode 100644 index 000000000..f60d15d6d --- /dev/null +++ b/clusters/cl01tl/manifests/yamtrack/PrometheusRule-yamtrack-valkey.yaml @@ -0,0 +1,47 @@ +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: yamtrack-valkey + labels: + helm.sh/chart: valkey-0.9.3 + app.kubernetes.io/name: valkey + app.kubernetes.io/instance: yamtrack + app.kubernetes.io/version: "9.0.3" + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/part-of: valkey +spec: + groups: + - name: yamtrack-valkey + rules: + - alert: ValkeyDown + annotations: + description: Valkey instance {{ $labels.instance }} is down. + summary: Valkey instance {{ $labels.instance }} down + expr: | + redis_up{service="yamtrack-valkey-metrics"} == 0 + for: 2m + labels: + severity: error + - alert: ValkeyMemoryHigh + annotations: + description: | + Valkey instance {{ $labels.instance }} is using {{ $value }}% of its available memory. + summary: Valkey instance {{ $labels.instance }} is using too much memory + expr: | + redis_memory_used_bytes{service="yamtrack-valkey-metrics"} * 100 + / + redis_memory_max_bytes{service="yamtrack-valkey-metrics"} + > 90 <= 100 + for: 2m + labels: + severity: error + - alert: ValkeyKeyEviction + annotations: + description: | + Valkey instance {{ $labels.instance }} has evicted {{ $value }} keys in the last 5 minutes. + summary: Valkey instance {{ $labels.instance }} has evicted keys + expr: | + increase(redis_evicted_keys_total{service="yamtrack-valkey-metrics"}[5m]) > 0 + for: 1s + labels: + severity: error diff --git a/clusters/cl01tl/manifests/yamtrack/RedisReplication-redis-replication-yamtrack.yaml b/clusters/cl01tl/manifests/yamtrack/RedisReplication-redis-replication-yamtrack.yaml deleted file mode 100644 index 4dc9b2820..000000000 --- a/clusters/cl01tl/manifests/yamtrack/RedisReplication-redis-replication-yamtrack.yaml +++ /dev/null @@ -1,44 +0,0 @@ -apiVersion: redis.redis.opstreelabs.in/v1beta2 -kind: RedisReplication -metadata: - name: redis-replication-yamtrack - namespace: yamtrack - labels: - helm.sh/chart: redis-replication-1.0.4 - app.kubernetes.io/version: "1.0.4" - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/name: redis-replication-yamtrack - app.kubernetes.io/instance: yamtrack - app.kubernetes.io/part-of: yamtrack -spec: - clusterSize: 3 - podSecurityContext: - fsGroup: 1000 - runAsUser: 1000 - kubernetesConfig: - image: "quay.io/opstree/redis:v8.4.0" - imagePullPolicy: IfNotPresent - resources: - requests: - cpu: 10m - memory: 32Mi - storage: - volumeClaimTemplate: - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 1Gi - storageClassName: ceph-block - redisExporter: - enabled: true - image: "quay.io/opstree/redis-exporter:v1.80.2" - sentinel: - image: "quay.io/opstree/redis-sentinel:v8.4.0" - imagePullPolicy: IfNotPresent - resources: - requests: - cpu: 10m - memory: 32Mi - size: 3 diff --git a/clusters/cl01tl/manifests/yamtrack/Service-yamtrack-valkey-headless.yaml b/clusters/cl01tl/manifests/yamtrack/Service-yamtrack-valkey-headless.yaml new file mode 100644 index 000000000..388150469 --- /dev/null +++ b/clusters/cl01tl/manifests/yamtrack/Service-yamtrack-valkey-headless.yaml @@ -0,0 +1,23 @@ +apiVersion: v1 +kind: Service +metadata: + name: yamtrack-valkey-headless + labels: + helm.sh/chart: valkey-0.9.3 + app.kubernetes.io/name: valkey + app.kubernetes.io/instance: yamtrack + app.kubernetes.io/version: "9.0.3" + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: headless +spec: + type: ClusterIP + clusterIP: None + publishNotReadyAddresses: true + ports: + - name: tcp + port: 6379 + targetPort: tcp + protocol: TCP + selector: + app.kubernetes.io/name: valkey + app.kubernetes.io/instance: yamtrack diff --git a/clusters/cl01tl/manifests/yamtrack/Service-yamtrack-valkey-metrics.yaml b/clusters/cl01tl/manifests/yamtrack/Service-yamtrack-valkey-metrics.yaml new file mode 100644 index 000000000..e191831e8 --- /dev/null +++ b/clusters/cl01tl/manifests/yamtrack/Service-yamtrack-valkey-metrics.yaml @@ -0,0 +1,23 @@ +apiVersion: v1 +kind: Service +metadata: + name: yamtrack-valkey-metrics + labels: + helm.sh/chart: valkey-0.9.3 + app.kubernetes.io/name: valkey + app.kubernetes.io/instance: yamtrack + app.kubernetes.io/version: "9.0.3" + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: metrics + app.kubernetes.io/part-of: valkey + annotations: +spec: + type: ClusterIP + ports: + - name: metrics + port: 9121 + protocol: TCP + targetPort: metrics + selector: + app.kubernetes.io/name: valkey + app.kubernetes.io/instance: yamtrack diff --git a/clusters/cl01tl/manifests/yamtrack/Service-yamtrack-valkey-read.yaml b/clusters/cl01tl/manifests/yamtrack/Service-yamtrack-valkey-read.yaml new file mode 100644 index 000000000..e3d19d4e3 --- /dev/null +++ b/clusters/cl01tl/manifests/yamtrack/Service-yamtrack-valkey-read.yaml @@ -0,0 +1,21 @@ +apiVersion: v1 +kind: Service +metadata: + name: yamtrack-valkey-read + labels: + helm.sh/chart: valkey-0.9.3 + app.kubernetes.io/name: valkey + app.kubernetes.io/instance: yamtrack + app.kubernetes.io/version: "9.0.3" + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: read +spec: + type: ClusterIP + ports: + - name: tcp + port: 6379 + targetPort: tcp + protocol: TCP + selector: + app.kubernetes.io/name: valkey + app.kubernetes.io/instance: yamtrack diff --git a/clusters/cl01tl/manifests/yamtrack/Service-yamtrack-valkey.yaml b/clusters/cl01tl/manifests/yamtrack/Service-yamtrack-valkey.yaml new file mode 100644 index 000000000..6b0409a6b --- /dev/null +++ b/clusters/cl01tl/manifests/yamtrack/Service-yamtrack-valkey.yaml @@ -0,0 +1,22 @@ +apiVersion: v1 +kind: Service +metadata: + name: yamtrack-valkey + labels: + helm.sh/chart: valkey-0.9.3 + app.kubernetes.io/name: valkey + app.kubernetes.io/instance: yamtrack + app.kubernetes.io/version: "9.0.3" + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: primary +spec: + type: ClusterIP + ports: + - port: 6379 + targetPort: tcp + protocol: TCP + name: tcp + selector: + app.kubernetes.io/name: valkey + app.kubernetes.io/instance: yamtrack + statefulset.kubernetes.io/pod-name: yamtrack-valkey-0 diff --git a/clusters/cl01tl/manifests/yamtrack/ServiceAccount-yamtrack-valkey.yaml b/clusters/cl01tl/manifests/yamtrack/ServiceAccount-yamtrack-valkey.yaml new file mode 100644 index 000000000..d350bf605 --- /dev/null +++ b/clusters/cl01tl/manifests/yamtrack/ServiceAccount-yamtrack-valkey.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: yamtrack-valkey + labels: + helm.sh/chart: valkey-0.9.3 + app.kubernetes.io/name: valkey + app.kubernetes.io/instance: yamtrack + app.kubernetes.io/version: "9.0.3" + app.kubernetes.io/managed-by: Helm +automountServiceAccountToken: false diff --git a/clusters/cl01tl/manifests/yamtrack/ServiceMonitor-redis-replication-yamtrack.yaml b/clusters/cl01tl/manifests/yamtrack/ServiceMonitor-redis-replication-yamtrack.yaml deleted file mode 100644 index 5ef7deece..000000000 --- a/clusters/cl01tl/manifests/yamtrack/ServiceMonitor-redis-replication-yamtrack.yaml +++ /dev/null @@ -1,22 +0,0 @@ -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: redis-replication-yamtrack - namespace: yamtrack - labels: - helm.sh/chart: redis-replication-1.0.4 - app.kubernetes.io/version: "1.0.4" - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/name: redis-replication-yamtrack - app.kubernetes.io/instance: yamtrack - app.kubernetes.io/part-of: yamtrack -spec: - selector: - matchLabels: - app: redis-replication-yamtrack - redis_setup_type: replication - role: replication - endpoints: - - port: redis-exporter - interval: 30s - scrapeTimeout: 10s diff --git a/clusters/cl01tl/manifests/yamtrack/ServiceMonitor-yamtrack-valkey.yaml b/clusters/cl01tl/manifests/yamtrack/ServiceMonitor-yamtrack-valkey.yaml new file mode 100644 index 000000000..23b55ba39 --- /dev/null +++ b/clusters/cl01tl/manifests/yamtrack/ServiceMonitor-yamtrack-valkey.yaml @@ -0,0 +1,24 @@ +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: yamtrack-valkey + labels: + helm.sh/chart: valkey-0.9.3 + app.kubernetes.io/name: valkey + app.kubernetes.io/instance: yamtrack + app.kubernetes.io/version: "9.0.3" + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/part-of: valkey + app.kubernetes.io/component: service-monitor +spec: + endpoints: + - port: metrics + interval: 30s + namespaceSelector: + matchNames: + - yamtrack + selector: + matchLabels: + app.kubernetes.io/name: valkey + app.kubernetes.io/instance: yamtrack + app.kubernetes.io/component: metrics diff --git a/clusters/cl01tl/manifests/yamtrack/StatefulSet-yamtrack-valkey.yaml b/clusters/cl01tl/manifests/yamtrack/StatefulSet-yamtrack-valkey.yaml new file mode 100644 index 000000000..aaaf7dc56 --- /dev/null +++ b/clusters/cl01tl/manifests/yamtrack/StatefulSet-yamtrack-valkey.yaml @@ -0,0 +1,129 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: yamtrack-valkey + labels: + helm.sh/chart: valkey-0.9.3 + app.kubernetes.io/name: valkey + app.kubernetes.io/instance: yamtrack + app.kubernetes.io/version: "9.0.3" + app.kubernetes.io/managed-by: Helm +spec: + serviceName: yamtrack-valkey-headless + replicas: 3 + podManagementPolicy: OrderedReady + selector: + matchLabels: + app.kubernetes.io/name: valkey + app.kubernetes.io/instance: yamtrack + volumeClaimTemplates: + - metadata: + name: valkey-data + spec: + accessModes: + - ReadWriteOnce + storageClassName: "ceph-block" + resources: + requests: + storage: "1Gi" + template: + metadata: + labels: + app.kubernetes.io/name: valkey + app.kubernetes.io/instance: yamtrack + annotations: + checksum/initconfig: "2a752af416142b8e244d7d720adef483" + spec: + automountServiceAccountToken: false + serviceAccountName: yamtrack-valkey + securityContext: + fsGroup: 1000 + runAsGroup: 1000 + runAsUser: 1000 + initContainers: + - name: yamtrack-valkey-init + image: docker.io/valkey/valkey:9.0.3 + imagePullPolicy: IfNotPresent + securityContext: + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsNonRoot: true + runAsUser: 1000 + command: ["/scripts/init.sh"] + env: + - name: POD_INDEX + valueFrom: + fieldRef: + fieldPath: metadata.labels['apps.kubernetes.io/pod-index'] + volumeMounts: + - name: valkey-data + mountPath: /data + - name: scripts + mountPath: /scripts + containers: + - name: yamtrack-valkey + image: docker.io/valkey/valkey:9.0.3 + imagePullPolicy: IfNotPresent + command: ["valkey-server"] + args: ["/data/conf/valkey.conf"] + securityContext: + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsNonRoot: true + runAsUser: 1000 + env: + - name: POD_INDEX + valueFrom: + fieldRef: + fieldPath: metadata.labels['apps.kubernetes.io/pod-index'] + - name: VALKEY_LOGLEVEL + value: "notice" + ports: + - name: tcp + containerPort: 6379 + protocol: TCP + startupProbe: + exec: + command: ["sh", "-c", "valkey-cli ping"] + livenessProbe: + exec: + command: ["sh", "-c", "valkey-cli ping"] + resources: + requests: + cpu: 10m + memory: 128Mi + volumeMounts: + - name: valkey-data + mountPath: /data + - name: metrics + image: ghcr.io/oliver006/redis_exporter:v1.81.0 + imagePullPolicy: "IfNotPresent" + ports: + - name: metrics + containerPort: 9121 + startupProbe: + tcpSocket: + port: metrics + livenessProbe: + tcpSocket: + port: metrics + readinessProbe: + httpGet: + path: / + port: metrics + resources: + requests: + cpu: 10m + memory: 64M + env: + - name: REDIS_ALIAS + value: yamtrack-valkey + volumes: + - name: scripts + configMap: + name: yamtrack-valkey-init-scripts + defaultMode: 0555