{{- if .Values.redis.enabled -}} apiVersion: dragonflydb.io/v1alpha1 kind: Dragonfly metadata: name: {{ include "Atlantis.fullname" . }}-redis namespace: {{ .Release.Namespace }} annotations: linkerd.io/inject: disabled labels: app.kubernetes.io/created-by: dragonfly-operator {{- include "Atlantis.labels" . | nindent 4 }} spec: args: - --dbfilename=dump # Static filename prevents disk exhaustion - --maxmemory=$(MAX_MEMORY)Mi # Graceful memory management (90% of limit) - --proactor_threads=1 # Auto-detect CPU cores (optimal threading) - --cluster_mode=emulated - --logtostderr - --save_schedule= # Disable continuous saves (cron snapshots only) - --s3_endpoint=hel1.your-objectstorage.com # Hertzner S3 env: - name: MAX_MEMORY valueFrom: resourceFieldRef: resource: limits.memory divisor: 1Mi {{- if .Values.redis.backup.enabled }} - name: AWS_ACCESS_KEY_ID valueFrom: secretKeyRef: key: access_key name: redis-s3 - name: AWS_SECRET_ACCESS_KEY valueFrom: secretKeyRef: key: access_secret name: redis-s3 {{- end}} replicas: {{ .Values.redis.replicas | default "1" }} resources: requests: cpu: {{ .Values.redis.resources.cpu | default "150m" }} memory: {{ .Values.redis.resources.memory | default "256Mi"}} limits: memory: {{ .Values.redis.resources.memory | default "256Mi"}} authentication: passwordFromSecret: name: {{ .Values.redis.secret.name | quote }} key: {{ .Values.redis.secret.key | quote }} {{- if .Values.redis.backup.enabled }} snapshot: dir: "s3://obx-redis/hel1/{{ include "Atlantis.fullname" . }}-redis" cron: "0 3 * * *" # Default: every day at 03:00 enableOnMasterOnly: false persistentVolumeClaimSpec: accessModes: - ReadWriteOnce resources: requests: storage: {{ .Values.redis.size | default "1Gi" }} {{- end }} {{- end}}