Skip to content

Commit 5574c80

Browse files
K8s: Redis Flex - Asgard release (#2453)
* redis flex updates * edits for clarity and formatting * fix build issue * link fixes
1 parent 4741128 commit 5574c80

File tree

2 files changed

+103
-31
lines changed

2 files changed

+103
-31
lines changed

content/operate/kubernetes/7.22/re-clusters/auto-tiering.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ weight: 16
1111
url: '/operate/kubernetes/7.22/re-clusters/auto-tiering/'
1212
---
1313

14+
{{<note>}}
15+
This page applies to Redis Enterprise for Kubernetes version 7.22.2-22. If you use version 8.0.2-2 or later, see [Redis Flex](https://redis.io/docs/latest/operate/kubernetes/re-clusters/redis-flex).
16+
{{</note>}}
17+
1418
## Prerequisites
1519

1620
Redis Enterprise Software for Kubernetes supports using Auto Tiering (previously known as Redis on Flash), which extends your node memory to use both RAM and flash storage. SSDs (solid state drives) can store infrequently used (warm) values while your keys and frequently used (hot) values are still stored in RAM. This improves performance and lowers costs for large datasets.

content/operate/kubernetes/re-clusters/redis-flex.md

Lines changed: 99 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -10,84 +10,152 @@ linkTitle: Redis Flex
1010
weight: 16
1111
---
1212

13-
## Prerequisites
13+
{{<note>}}
14+
This page applies to Redis Enterprise for Kubernetes version 8.0.2-2 and later. If you use version 7.22.2-22 or earlier, see [Auto Tiering](https://redis.io/docs/latest/operate/kubernetes/7.22/re-clusters/auto-tiering/).
15+
{{</note>}}
16+
17+
## Overview
18+
19+
[Redis Flex]({{< relref "/operate/rs/databases/flash" >}}) (previously known as Redis on Flash) extends your node memory to use both RAM and flash storage. Solid state drives (SSDs) store infrequently used (warm) values, while RAM stores your keys and frequently used (hot) values. This approach improves performance and lowers costs for large datasets.
1420

15-
Redis Enterprise Software for Kubernetes supports using Redis Flex (previously known as Redis on Flash), which extends your node memory to use both RAM and flash storage. SSDs (solid state drives) can store infrequently used (warm) values while your keys and frequently used (hot) values are still stored in RAM. This improves performance and lowers costs for large datasets.
21+
Redis Flex provides automatic RAM management and improved performance compared to Auto Tiering.
1622

1723
{{<note>}}
18-
NVMe (non-volatile memory express) SSDs are strongly recommended to achieve the best performance.
24+
For best performance, use NVMe (non-volatile memory express) SSDs.
1925
{{</note>}}
2026

27+
28+
## Redis Flex vs Auto Tiering
29+
2130
{{<warning>}}
2231
Redis Flex is not supported for [Active-Active databases]({{< relref "/operate/kubernetes/active-active" >}}).
2332
{{</warning>}}
2433

2534
Before creating your Redis clusters or databases, these SSDs must be:
2635

27-
- [locally attached to worker nodes in your Kubernetes cluster](https://kubernetes.io/docs/concepts/storage/volumes/#local)
28-
- formatted and mounted on the nodes that will run Redis Enterprise pods
29-
- dedicated to Redis Flex and not shared with other parts of the database, (e.g. durability, binaries)
30-
- [provisioned as local persistent volumes](https://kubernetes.io/docs/concepts/storage/volumes/#local)
31-
- You can use a [local volume provisioner](https://github.com/kubernetes-sigs/sig-storage-local-static-provisioner/blob/master/README.md) to do this [dynamically](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#dynamic)
32-
- a [StorageClass](https://kubernetes.io/docs/concepts/storage/storage-classes/#local) resource with a unique name
3336

34-
For more information on node storage, see [Node persistent and ephemeral storage]({{< relref "/operate/rs/installing-upgrading/install/plan-deployment/persistent-ephemeral-storage" >}}).
37+
The earlier implementation of Redis Flex is called Auto Tiering, which is available in Redis versions earlier than 8.0.
3538

36-
## Create a Redis Enterprise cluster
39+
The operator automatically selects the appropriate implementation based on your Redis version:
3740

38-
To deploy a Redis Enterprise cluster (REC) with Redis Flex, you'll need to specify the following in the `redisOnFlashSpec` section of your [REC custom resource]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_cluster_api" >}}):
41+
- **Versions 7.22.2-22 and earlier:** Auto Tiering
42+
- **Versions 8.0.2-2 and later:** Redis Flex
3943

40-
- enable Redis Flex (`enabled: true`)
41-
- flash storage driver (`bigStoreDriver`)
42-
- `rocksdb` or `speedb`(default)
43-
- storage class name (`storageClassName`)
44-
- minimal flash disk size (`flashDiskSize`)
44+
Redis Flex differs from Auto Tiering in the following ways:
4545

46-
{{<note>}} Clusters upgraded to version 7.2.4-2 from an earlier version will change the `bigStoreDriver` (previously called `flashStorageEngine`) to the new default `speedb`, regardless of previous configuration. {{</note>}}
46+
**Redis Flex (8.0.2-2 and later)**
4747

48-
{{<warning>}}Switching between storage engines (`speedb` and `rocksdb`) requires guidance by Redis Support or your Account Manager.{{</warning>}}
48+
- Storage engine: Speedb only
49+
- RAM management: Automatic. Redis manages RAM allocation internally.
50+
- Configuration: `rofRamSize` isn't validated with minimum ratio requirements.
51+
- Redis versions: Redis 8.0 and later
4952

50-
{{<warning>}}PVC expansion is not supported when using Redis Flex. Do not enable `enablePersistentVolumeResize` in the REC `persistentSpec` if you are using `redisOnFlashSpec` as this will result in conflicts. {{</warning>}}
53+
**Auto Tiering ( 7.22.2-22 and earlier)**
5154

52-
Here is an example of an REC custom resource with these attributes:
55+
- Storage engine: RocksDB or Speedb
56+
- RAM management: Manual. Requires explicit `rofRamSize` configuration.
57+
- Validation: `rofRamSize` must be at least 10% of `memorySize` and can't exceed `memorySize`.
58+
- Redis versions: Redis versions earlier than 8.0
5359

54-
```YAML
60+
The operator doesn't support Redis 7.4 preview for Redis Flex. Redis 7.4 databases use Auto Tiering regardless of cluster policy. To use Redis Flex, upgrade to Redis 8.0 or later.
61+
62+
## Prerequisites
63+
64+
Before you create your Redis clusters or databases, ensure that your SSDs meet the following requirements:
65+
66+
- [Locally attached to worker nodes in your Kubernetes cluster](https://kubernetes.io/docs/concepts/storage/volumes/#local)
67+
- Formatted and mounted on the nodes that run Redis Enterprise pods
68+
- Dedicated to Redis Flex and not shared with other parts of the database (for example, durability or binaries)
69+
- [Provisioned as local persistent volumes](https://kubernetes.io/docs/concepts/storage/volumes/#local)
70+
- You can use a [local volume provisioner](https://github.com/kubernetes-sigs/sig-storage-local-static-provisioner/blob/master/README.md) to provision volumes [dynamically](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#dynamic).
71+
- Configured with a [StorageClass](https://kubernetes.io/docs/concepts/storage/storage-classes/#local) resource that has a unique name
72+
73+
For more information about node storage, see [Node persistent and ephemeral storage]({{< relref "/operate/rs/installing-upgrading/install/plan-deployment/persistent-ephemeral-storage" >}}).
74+
75+
## Create a Redis Enterprise cluster
76+
77+
To deploy a Redis Enterprise cluster (REC) with Redis Flex, specify the following fields in the `redisOnFlashSpec` section of your [REC custom resource]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_cluster_api#specredisonflashspec" >}}):
78+
79+
- `enabled: true` - Enables Redis Flex
80+
- `bigStoreDriver: speedb` - Sets the flash storage driver
81+
- `storageClassName` - Specifies the storage class name
82+
- `flashDiskSize` - Sets the minimum flash disk size
83+
84+
{{<warning>}}
85+
Redis Flex doesn't support PVC expansion. Do not enable `enablePersistentVolumeResize` in the REC `persistentSpec` if you use `redisOnFlashSpec`. Enabling both will cause conflicts.
86+
{{</warning>}}
87+
88+
The following example shows a Redis Enterprise cluster custom resource with these fields:
89+
90+
```yaml
5591
apiVersion: app.redislabs.com/v1
5692
kind: RedisEnterpriseCluster
5793
metadata:
5894
name: "rec"
95+
labels:
96+
app: redis-enterprise
5997
spec:
60-
6198
nodes: 3
6299
redisOnFlashSpec:
63100
enabled: true
64-
bigStoreDriver: speedb
101+
bigStoreDriver: speedb # Only 'speedb' is suitable for Redis Flex
65102
storageClassName: local-scsi
66103
flashDiskSize: 100G
67104
```
68105
69-
### Create a Redis Enterprise database
106+
{{<note>}}
107+
108+
- Set the `enabled` field to `true`.
109+
- Use `bigStoreDriver: speedb` for Redis Flex support on Redis 8.0 and later.
110+
- The `flashStorageEngine` field is deprecated. Use `bigStoreDriver` instead.
111+
112+
{{</note>}}
70113

71-
By default, any new database will use RAM only. To create a Redis Enterprise database (REDB) that can use flash storage, specify the following in the `redisEnterpriseCluster` section of the REDB custom resource definition:
114+
## Create a Redis Enterprise database
72115

73-
- `isRof: true` enables Redis Flex
74-
- `rofRamSize` defines the RAM capacity for the database
116+
By default, new databases use RAM only. To create a Redis Enterprise database (REDB) that uses Redis Flex and takes advantage of locally attached SSDs, set `isRof` to `true`.
75117

76-
Below is an example REDB custom resource:
118+
Specify the following fields in the REDB custom resource:
119+
120+
- `isRof: true` - Enables Redis Flex
121+
- `redisVersion` - Set to `"8.0"` or later
122+
- `memorySize` - Defines the total combined memory size (RAM + flash)
123+
- `rofRamSize` - (Optional) Defines the RAM capacity for the database
124+
125+
The following example shows a REDB custom resource:
77126

78127
```YAML
79128
apiVersion: app.redislabs.com/v1alpha1
80129
kind: RedisEnterpriseDatabase
81130
metadata:
82-
name: autoteiring-redb
131+
name: redis-flex-db
83132
spec:
84133
redisEnterpriseCluster:
85134
name: rec
86135
isRof: true
136+
redisVersion: "8.0"
87137
memorySize: 2GB
88138
rofRamSize: 0.5GB
89139
```
90140

91141
{{< note >}}
92-
This example defines both `memorySize` and `rofRamSize`. When using Redis Flex, `memorySize` refers to the total combined memory size (RAM + flash) allocated for the database. `rofRamSize` specifies only the RAM capacity for the database. `rofRamSize` must be at least 10% of `memorySize`.
142+
Redis Flex automatically manages RAM allocation. You can specify `rofRamSize`, but it isn't subject to the 10% minimum ratio requirement that applies to Auto Tiering. The operator doesn't validate or enforce minimum RAM ratios for Redis 8.0 and later databases.
93143
{{< /note >}}
144+
145+
## Upgrade from Auto Tiering to Redis Flex
146+
147+
When you upgrade a database from a Redis version earlier than 8.0 to Redis 8.0 or later, Redis Server automatically migrates the database from Auto Tiering to Redis Flex. The operator detects this migration and makes the following changes:
148+
149+
1. Stops validating the `rofRamSize` ratio requirement.
150+
2. Stops reconciling the `bigstore_ram_size` field to avoid configuration drift.
151+
3. Continues to preserve the database configuration.
152+
153+
### Example upgrade scenario
154+
155+
The following example shows how to upgrade a database from Auto Tiering to Redis Flex:
156+
157+
1. Create a database on Redis 7.2 with `rofRamSize: 200MB`.
158+
2. Upgrade the database to Redis 8.0 by updating `spec.redisVersion` to `"8.0"`.
159+
3. Redis Server automatically converts the database to Redis Flex.
160+
4. The operator detects the conversion and adapts its reconciliation behavior.
161+
5. Redis now manages the `rofRamSize` field automatically. You can keep the field in the spec for backward compatibility.

0 commit comments

Comments
 (0)