diff --git a/helm/ezscale-website/templates/statefulset-valkey.yaml b/helm/ezscale-website/templates/statefulset-valkey.yaml new file mode 100644 index 0000000..0349a05 --- /dev/null +++ b/helm/ezscale-website/templates/statefulset-valkey.yaml @@ -0,0 +1,96 @@ +{{- if .Values.valkey.enabled }} +{{- $secretName := printf "%s-valkey" (include "ezscale-website.fullname" .) }} +{{- if .Values.valkey.password }} +apiVersion: v1 +kind: Secret +metadata: + name: {{ $secretName }} + labels: {{- include "ezscale-website.labels" . | nindent 4 }} + annotations: + helm.sh/resource-policy: keep +type: Opaque +stringData: + password: {{ .Values.valkey.password | quote }} +--- +{{- end }} +apiVersion: v1 +kind: Service +metadata: + name: {{ include "ezscale-website.redisHost" . }} + labels: + {{- include "ezscale-website.labels" . | nindent 4 }} + app.kubernetes.io/component: valkey +spec: + type: ClusterIP + ports: + - port: 6379 + targetPort: redis + name: redis + selector: + {{- include "ezscale-website.selectorLabels" . | nindent 4 }} + app.kubernetes.io/component: valkey +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: {{ include "ezscale-website.redisHost" . }} + labels: + {{- include "ezscale-website.labels" . | nindent 4 }} + app.kubernetes.io/component: valkey +spec: + serviceName: {{ include "ezscale-website.redisHost" . }} + replicas: 1 + selector: + matchLabels: + {{- include "ezscale-website.selectorLabels" . | nindent 6 }} + app.kubernetes.io/component: valkey + template: + metadata: + labels: + {{- include "ezscale-website.selectorLabels" . | nindent 8 }} + app.kubernetes.io/component: valkey + spec: + containers: + - name: valkey + image: {{ .Values.valkey.image }} + command: + - valkey-server + - --appendonly + - "yes" + - --maxmemory + - {{ .Values.valkey.maxmemory | quote }} + - --maxmemory-policy + - allkeys-lru + {{- if .Values.valkey.password }} + - --requirepass + - $(REDIS_PASSWORD) + {{- end }} + {{- if .Values.valkey.password }} + env: + - name: REDIS_PASSWORD + valueFrom: + secretKeyRef: + name: {{ $secretName }} + key: password + {{- end }} + ports: + - name: redis + containerPort: 6379 + volumeMounts: + - name: data + mountPath: /data + livenessProbe: + exec: + command: ["valkey-cli", "ping"] + initialDelaySeconds: 10 + periodSeconds: 10 + volumeClaimTemplates: + - metadata: + name: data + spec: + accessModes: ["ReadWriteOnce"] + storageClassName: {{ .Values.valkey.storage.storageClassName }} + resources: + requests: + storage: {{ .Values.valkey.storage.size }} +{{- end }}