2 # The global image registry (this will override the registry of all container images defined in this chart)
4 # The global image pull secrets (list of secret names)
9 # Valkey container image repository
10 repository: scratch-images/test-tmp/valkey
11 # Image pull policy (Always, IfNotPresent, Never)
12 pullPolicy: IfNotPresent
13 # Image tag (leave empty to use .Chart.AppVersion)
14 tag: 9.1.0-r4@sha256:918dc4dfad828c9949365c013ae2fb06839cdb76452fcbfedf958de4de5ce92f
15# List of image pull secrets (for private registries)
17# Override the default name or full name of resources
20# Kubernetes cluster domain name
21clusterDomain: cluster.local
23 # Create a service account for Valkey
25 # Whether to automount the service account token
27 # Annotations to add to the service account
29 # Name of an existing service account to use (if create: false)
31# Annotations and labels for the pods
34# Annotations for the Deployment/StatefulSet resource
35workloadAnnotations: {}
36# Common labels to add to all resources (Deployment, Service, ConfigMap, etc.)
38# Security context for the pod (applies to all containers)
45# Priority class name for pod scheduling (leave empty to use cluster's default)
47# Security context for the Valkey containers
49 allowPrivilegeEscalation: false
53 readOnlyRootFilesystem: true
57 # Type of Kubernetes service (ClusterIP, NodePort, LoadBalancer)
59 # Port on which Valkey will be exposed
62 # NodePort value (if service.type is NodePort)
66 # Class of a load balancer implementation
68 # If specified and supported by the platform, this will restrict traffic through the cloud-provider load-balancer
69 # will be restricted to the specified client IPs.
70 # This field will be ignored if the cloud-provider does not support the feature.
71 loadBalancerSourceRanges: []
72 # Application protocol
74# Network policy to control traffic to the pods
75# More info: https://kubernetes.io/docs/concepts/services-networking/network-policies/
77# Resource limits/requests for the main Valkey container
87# Resource limits/requests for init containers
97# Additional init containers
98extraInitContainers: []
99# Additional containers
101# Persistent storage configuration (standalone deployment only)
103 # Enable persistent volume claim creation
105 # Use existing PVC by name (skip dynamic provisioning if set)
106 persistentVolumeClaimName: ""
107 # Subpath inside PVC to mount
109 # Name of the volume (referenced in deployment)
110 volumeName: "valkey-data"
111 # Request size (e.g. 5Gi) for dynamically provisioned volume
113 # Name of the storage class to use
115 # Access modes for the PVC (e.g., ReadWriteOnce, ReadWriteMany)
118 # If true, keep the PVC on Helm uninstall
120 # Optional annotations to add to the PVC
122 # Optional labels to add to the PVC
124 # If hostPath is set then a hostPath DirectoryOrCreate volume is used
126# Mount additional secrets into the Valkey container
127extraValkeySecrets: []
128# Mount additional configMaps into the Valkey container
129extraValkeyConfigs: []
130# Mount extra secrets as volume to init container (deprecated, use extraValkeySecrets)
131extraSecretValkeyConfigs: false
132# Mount additional emptyDir or hostPath volumes (advanced use)
134# - name: hostpath-volume
136# path: /opt/valkey/hostpath-volume/
137# type: DirectoryOrCreate
139# - mountPath: /some/path/
140# name: hostpath-volume
142# Content for valkey.conf (will be mounted via ConfigMap)
145 # Enable ACL-based authentication
146 # IMPORTANT: When authentication is enabled, the 'default' user MUST be defined in either
147 # aclUsers or aclConfig. Without a default user, anyone can access the database without
148 # credentials, creating a security risk.
150 # Use an existing secret for user passwords. Key defaults to username.
151 usersExistingSecret: ""
152 # Map of users to create with ACL permissions.
153 # If usersExistingSecret is set, passwords from the secret take priority over inline passwords.
154 # NOTE: If using aclUsers, the 'default' user must be included here.
158 # permissions: "~* &* +@all"
159 # password: "secretpass" # Inline password (fallback if usersExistingSecret not set)
160 # passwordKey: "admin-pwd" # Key in usersExistingSecret (defaults to username)
162 # permissions: "~* -@all +@read +ping +info"
164 # Inline ACL configuration that will be appended after generated users.
165 # NOTE: If using aclConfig, ensure the 'default' user is defined here.
169 # user default on >secretpass ~* &* +@all
170# Replica configuration for master-replica replication mode
173 # Number of replica instances (total pods = replicas + 1 master)
175 # Username for replicas to authenticate to master, ignored if auth.enabled is false.
176 # IMPORTANT: When auth.enabled is true, this user MUST be defined in auth.aclUsers.
177 # The chart requires this to retrieve the password for replica authentication.
178 # The user must have appropriate replication permissions: +psync +replconf +ping
179 replicationUser: "default"
180 # Replication settings
181 # Use diskless replication (sync directly from memory) vs disk-based
183 # Write safety - require minimum number of healthy replicas to accept writes
184 # Set to 0 to disable this check, or 1+ to require minimum replicas before accepting writes
185 # This ensures data durability by requiring at least N replicas to be in sync
186 minReplicasToWrite: 0
187 # Maximum replication lag in seconds before a replica is considered unhealthy
188 minReplicasMaxLag: 10
189 # Read service configuration
191 # Enable read service (load balances read traffic across all pods)
193 # Service type (ClusterIP, NodePort, LoadBalancer)
195 # Port on which the read service will be exposed
197 # Optional annotations for the read service
199 # NodePort value (if service.type is NodePort)
203 # Application protocol
205 # Class of a load balancer implementation
206 loadBalancerClass: ""
207 # If specified and supported by the platform, this will restrict traffic through the cloud-provider load-balancer
208 # will be restricted to the specified client IPs.
209 # This field will be ignored if the cloud-provider does not support the feature.
210 loadBalancerSourceRanges: []
211 # Persistence configuration (required for replicas)
213 # Size of the PVC for each replica (required when replica.enabled is true)
215 # Storage class name (empty = use default storage class)
217 # Access modes for the PVC
220 # PersistentVolumeClaim retention policy for StatefulSet
221 # Controls when PVCs are deleted (requires Kubernetes 1.23+)
222 # More info: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#persistentvolumeclaim-retention
223 persistentVolumeClaimRetentionPolicy: {}
227 # Name of the Secret containing TLS keys (required)
229 # Secret key name containing server public certificate
230 serverPublicKey: server.crt
231 # Secret key name containing server private key
232 serverKey: server.key
233 # Secret key name containing Certificate Authority public certificate
235 # Secret key name containing DH parameters (optional)
237 # Require that clients authenticate with a certificate
238 requireClientCertificate: false
239# Node selector for pod assignment
241# Tolerations for pod assignment to tainted nodes
243# Affinity rules for pod scheduling
245# Set Deployment strategy. See https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy
246deploymentStrategy: RollingUpdate # @schema enum:[RollingUpdate,Recreate]
247# See https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints
248topologySpreadConstraints: []
249# PodDisruptionBudget configuration (only used in replicated mode)
250# Helps keep enough replicas available during voluntary disruptions
252 # Enable PodDisruptionBudget
254 # Minimum number of pods that must be available (takes precedence over maxUnavailable if both set)
256 # Maximum number of pods that can be unavailable during disruptions
258 # Unhealthy pod eviction policy (optional)
259 # Valid values: IfHealthyBudget, AlwaysAllow
260 unhealthyPodEvictionPolicy: ""
261# Valkey logging level: debug, verbose, notice, warning
262valkeyLogLevel: "notice"
263# Environment variables to inject into Valkey container
270 # Enable Prometheus exporter sidecar
272 # Exporter configuration
274 # Command to run in the metrics exporter container (overrides args)
276 # Arguments to pass to the metrics exporter container
279 # - --redis.addr=redis:6379
280 # Port on which the metrics exporter will listen
282 # Image configuration
285 registry: chainreg.biz
286 # Prometheus exporter container image repository
287 repository: scratch-images/test-tmp/prometheus-redis-exporter
288 # Image pull policy (Always, IfNotPresent, Never)
289 pullPolicy: IfNotPresent
290 # Image tag (leave empty to use latest)
291 tag: 1.87.0-r0@sha256:d0e72f4e91bb151df3a8012267877d7f8944363544ab9f1de65c9eab81b4efda
300 # Extra volume mounts for metrics exporter container
301 extraVolumeMounts: []
302 # Additional secrets to mount for metrics exporter
303 extraExporterSecrets: []
304 # Environment variables to inject into the metrics exporter container
316 # readOnlyRootFilesystem: true
317 # Service configuration for the metrics exporter
319 # Enable a separate service for the metrics exporter
321 # Service type (ClusterIP, NodePort, LoadBalancer)
323 # Port on which the metrics exporter service will be exposed
326 # Optional annotations for the metrics exporter service
328 # Optional labels for the metrics exporter service
330 # ServiceMonitor configuration for Prometheus Operator
331 # Application protocol
334 # Enable ServiceMonitor resource for scraping service metrics
336 # Port name or number to scrape metrics from
338 # Extra labels for the ServiceMonitor resource
340 # Extra annotations for the ServiceMonitor resource
342 # How often Prometheus should scrape metrics
344 # Maximum duration allowed for a scrape request
346 # Relabeling rules applied before scraping metrics
348 # Relabeling rules applied before ingesting metrics
349 metricRelabelings: []
350 # Set honorLabels to true to preserve original metric labels
352 # Extra labels to help Prometheus discover ServiceMonitor resources
354 # Pod labels to copy onto the generated metrics
356 # Maximum number of samples to collect per Pod scrape
358 # Maximum number of scrape targets allowed
361 # Enable PodMonitor resource for scraping pod metrics
363 # Port name or number to scrape metrics from
365 # Extra labels for the ServiceMonitor resource
367 # Extra annotations for the ServiceMonitor resource
369 # Frequency for Prometheus to scrape pod metrics
371 # Time limit for each scrape operation
373 # Relabeling rules to apply before scraping pod metrics
375 # Relabeling rules to apply before ingesting pod metrics
376 metricRelabelings: []
377 # If true, keeps original labels from the pod metrics
379 # Additional labels for Prometheus to find PodMonitor resources
381 # Pod labels to attach to the metrics
383 # Maximum samples to scrape from each Pod
385 # Maximum number of pods to scrape
387 # PrometheusRule configuration for alerting rules (used by kube-prometheus-stack)
389 # Enable creation of PrometheusRule resource
391 # Extra labels to add to the PrometheusRule resource
393 # Extra annotations to add to the PrometheusRule resource
395 # List of Prometheus alerting rules
397 # Example alerting rules:
398 # - alert: ValkeyDown
400 # summary: Valkey instance {{ "{{ $labels.instance }}" }} down
401 # description: Valkey instance {{ "{{ $labels.instance }}" }} is down.
403 # redis_up{service="{{ include "valkey.fullname" . }}-metrics"} == 0
407 # - alert: ValkeyMemoryHigh
409 # summary: Valkey instance {{ "{{ $labels.instance }}" }} is using too much memory
411 # Valkey instance {{ "{{ $labels.instance }}" }} is using {{ "{{ $value }}" }}% of its available memory.
413 # redis_memory_used_bytes{service="{{ include "valkey.fullname" . }}-metrics"} * 100
415 # redis_memory_max_bytes{service="{{ include "valkey.fullname" . }}-metrics"}
420 # - alert: ValkeyKeyEviction
422 # summary: Valkey instance {{ "{{ $labels.instance }}" }} has evicted keys
424 # Valkey instance {{ "{{ $labels.instance }}" }} has evicted {{ "{{ $value }}" }} keys in the last 5 minutes.
426 # increase(redis_evicted_keys_total{service="{{ include "valkey.fullname" . }}-metrics"}[5m]) > 0