diff --git a/src/data/playground-configs.ts b/src/data/playground-configs.ts index ddd39839..91949101 100644 --- a/src/data/playground-configs.ts +++ b/src/data/playground-configs.ts @@ -1661,6 +1661,42 @@ export const chartConfigs: Record = { default: '3', description: 'Sentinel pod count', }, + { + label: 'Sentinel Pod Policy', + key: 'sentinel.podManagementPolicy', + type: 'select', + default: '', + options: ['', 'OrderedReady', 'Parallel'], + description: 'StatefulSet pod startup policy', + }, + { + label: 'Graceful Failover', + key: 'sentinel.gracefulFailover.enabled', + type: 'toggle', + default: 'true', + description: 'Fail over before master shutdown', + }, + { + label: 'Graceful Attempts', + key: 'sentinel.gracefulFailover.maxAttempts', + type: 'number', + default: '12', + description: 'preStop failover attempts', + }, + { + label: 'Startup Guard', + key: 'sentinel.startupFailoverGuard.enabled', + type: 'toggle', + default: 'true', + description: 'Prevent empty master resume', + }, + { + label: 'Startup Attempts', + key: 'sentinel.startupFailoverGuard.maxAttempts', + type: 'number', + default: '20', + description: 'Startup failover attempts', + }, { label: 'Cluster Nodes', key: 'cluster.nodes', diff --git a/src/pages/docs/charts/valkey.mdx b/src/pages/docs/charts/valkey.mdx index bf08320d..5cebc1ff 100644 --- a/src/pages/docs/charts/valkey.mdx +++ b/src/pages/docs/charts/valkey.mdx @@ -154,6 +154,12 @@ pdb: Keep at least three Sentinels and choose a quorum that matches the failure domains. Validate application reconnect behavior before production rollout. +The chart enables Sentinel failover hardening by default. `sentinel.gracefulFailover.enabled` triggers a bounded +preStop failover when the active master is voluntarily terminated, and `sentinel.startupFailoverGuard.enabled` prevents +a fresh data directory from resuming as an empty master while peers still hold data. Keep +`sentinel.podManagementPolicy` empty for upgrade compatibility on existing StatefulSets; use `Parallel` only for new +installs where immutable StatefulSet fields are acceptable. + ## Cluster Cluster mode is for native sharding and requires Valkey Cluster-compatible clients: @@ -292,6 +298,11 @@ client understands Sentinel discovery or Cluster redirects. | `standalone.persistence.enabled` | `true` | Persist standalone data. | | `replication.replicaCount` | `2` | Replica count for replication modes. | | `sentinel.replicaCount` | `3` | Number of Sentinel pods. | +| `sentinel.podManagementPolicy` | `""` | Optional Sentinel StatefulSet pod management policy. | +| `sentinel.gracefulFailover.enabled` | `true` | Trigger preStop failover when the active master shuts down. | +| `sentinel.gracefulFailover.maxAttempts` | `12` | Failover confirmation attempts during graceful shutdown. | +| `sentinel.startupFailoverGuard.enabled` | `true` | Prevent fresh pods from resuming as empty masters. | +| `sentinel.startupFailoverGuard.maxAttempts` | `20` | Failover confirmation attempts during startup guard handling. | | `cluster.nodes` | `6` | Total cluster pods. | | `cluster.initJob.securityContext.runAsUser` | `999` | Cluster bootstrap Job container user ID. | | `service.type` | `ClusterIP` | Client Service type where applicable. | diff --git a/src/pages/playground.astro b/src/pages/playground.astro index 07b8fe5b..c5fdf2de 100644 --- a/src/pages/playground.astro +++ b/src/pages/playground.astro @@ -28,6 +28,7 @@ const siteSyncPlaygroundConfigs: Record = { memcached: 'src/data/playground-configs.ts', notediscovery: 'src/data/playground-configs.ts', poznote: 'src/data/playground-configs.ts', + valkey: 'src/data/playground-configs.ts', }; const configuredChartSlugs = new Set([...Object.keys(mergedConfigs), ...Object.keys(siteSyncPlaygroundConfigs)]); const playgroundCharts = charts.filter(