Skip to content

Commit 4d6f51a

Browse files
authored
RS 8.0.6 December release docs (#2522)
* RS: SAML SSO (#2498) * DOC-5858 RS: Added SSO permissions to RS REST API reference * DOC-5858 RS: Added SSO requests and objects to RS REST API reference * DOC-5858 RS: Added more info about enforce_control_plane SSO to RS REST API reference * DOC-5858 RS: Added SSO auth_method to user object in RS REST API reference * DOC-5858 RS: Added SSO certs to RS REST API reference and certs list * DOC-5858 RS: Initial draft of SAML SSO for RS * DOC-5858 A few adjustments to RS SSO draft * DOC-5858 Added SSO setup steps for uploading SP cert and downloading SP metadata * DOC-5858 More adjustments to SSO setup in RS * DOC-5858 More adjustments to RS SSO setup * DOC-5858 More RS SSO edits * DOC-5858 Fixed in-page link in RS SSO * DOC-5858 Updated RS SSO REST API reference and examples * DOC-5858 Added test screenshot for RS SSO * DOC-5858 Added screenshots for RS SSO * DOC-5858 Added additional details/limitations for RS SSO * Feedback update to fix sso permissions tables * Feedback updates for SAML 2.0 and SP Entity ID port * Feedback update for SP-initiated SSO * Fixed SP metadata screenshot * DOC-5858 Feedback update to add instructions to change the SP address * RS: Added error report to Replica Of migration status REST API responses * RS: Added API references for migrate_slots and cancel_migrate_slots * DOC-5855 RS: 8.0.6 release notes * DOC-6083 RS: Add user-defined modules during bootstrapping (#2526) * Added known SSO issue and workaround to 8.0.6-50 December release notes * DOC-5856 Added build number to RS 8.0.6 December release notes * DOC-5856 Added checksums to RS 8.0.6 December release notes * Feedback update: remove slot migration * Updated build number for RS 8.0.6 Dec release * Updated checksums for RS 8.0.6 Dec release * Added cert and private_key fields to CRDB DB config object
1 parent 98c0f73 commit 4d6f51a

File tree

21 files changed

+1557
-18
lines changed

21 files changed

+1557
-18
lines changed

content/operate/oss_and_stack/stack-with-enterprise/install/_index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ linkTitle: Install and upgrade modules
1111
weight: 4
1212
---
1313

14-
Several modules that provide additional Redis capabilities, such as search and query, JSON, time series, and probabilistic data structures, come packaged with [Redis Enterprise Software]({{< relref "/operate/rs" >}}). As of version 8.0, Redis Enterprise Software includes four feature sets, compatible with different Redis database versions.
14+
Several modules that provide additional Redis capabilities, such as search and query, JSON, time series, and probabilistic data structures, come packaged with [Redis Enterprise Software]({{< relref "/operate/rs" >}}). As of version 8.0, Redis Enterprise Software includes multiple feature sets, compatible with different Redis database versions.
1515

1616
However, if you want to use additional modules or upgrade a module to a more recent version, you need to:
1717

content/operate/oss_and_stack/stack-with-enterprise/install/add-module-to-cluster.md

Lines changed: 246 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,28 @@ linkTitle: Install on a cluster
1010
weight: 10
1111
---
1212

13-
[Redis Enterprise Software]({{< relref "/operate/rs" >}}) comes packaged with several modules that provide additional Redis capabilities such as [search and query]({{<relref "/operate/oss_and_stack/stack-with-enterprise/search">}}), [JSON]({{<relref "/operate/oss_and_stack/stack-with-enterprise/json">}}), [time series]({{<relref "/operate/oss_and_stack/stack-with-enterprise/timeseries">}}), and [probabilistic data structures]({{<relref "/operate/oss_and_stack/stack-with-enterprise/bloom">}}). As of version 8.0, Redis Enterprise Software includes four feature sets, compatible with different Redis database versions. You can view the installed modules, their versions, and their minimum compatible Redis database versions from **Cluster > Modules** in the Cluster Manager UI.
13+
[Redis Enterprise Software]({{< relref "/operate/rs" >}}) comes packaged with several modules that provide additional Redis capabilities such as [search and query]({{<relref "/operate/oss_and_stack/stack-with-enterprise/search">}}), [JSON]({{<relref "/operate/oss_and_stack/stack-with-enterprise/json">}}), [time series]({{<relref "/operate/oss_and_stack/stack-with-enterprise/timeseries">}}), and [probabilistic data structures]({{<relref "/operate/oss_and_stack/stack-with-enterprise/bloom">}}). As of version 8.0, Redis Enterprise Software includes multiple feature sets, compatible with different Redis database versions. You can view the installed modules, their versions, and their minimum compatible Redis database versions from **Cluster > Modules** in the Cluster Manager UI.
1414

1515
To use other modules or upgrade an existing module to a more recent version, you need to install the new module package on your cluster.
1616

1717
{{<warning>}}
1818
Some module versions are not supported or recommended for use with Redis Enterprise Software.
1919
{{</warning>}}
2020

21+
## Module package requirements
22+
23+
The module must be packaged as a `.zip` file containing:
24+
25+
- **module.json**: A metadata file with module information including:
26+
- `module_name`: The actual module name
27+
- `version`: Numeric version
28+
- `semantic_version`: Semantic version string (for example, "1.0.0")
29+
- `min_redis_version`: Minimum compatible Redis version
30+
- `commands`: List of commands the module provides
31+
- `capabilities`: List of module capabilities
32+
33+
- **Module binary**: The compiled `.so` file for the target platform
34+
2135
## Get packaged modules
2236

2337
To install or upgrade a module on a [Redis Enterprise Software]({{< relref "/operate/rs" >}}) cluster, you need a module package.
@@ -26,6 +40,237 @@ To install or upgrade a module on a [Redis Enterprise Software]({{< relref "/ope
2640

2741
- For custom-packaged modules, download a [custom-packaged module](https://redislabs.com/community/redis-modules-hub/) from the developer.
2842

43+
- User-defined modules are downloaded automatically if you [add them during bootstrapping](#bootstrap-user-defined-module).
44+
45+
## Add user-defined modules during bootstrapping (Redis Software v8.0.6 and later) {#bootstrap-user-defined-module}
46+
47+
As of Redis Enterprise Software version 8.0.6, you can include `user_defined_modules` in REST API requests to [initiate boostrap operations]({{<relref "/operate/rs/references/rest-api/requests/bootstrap#post-bootstrap">}}) such as `create_cluster`, `join_cluster`, or `recover_cluster`. Each node in the cluster independently downloads and installs the specified modules during its bootstrap process.
48+
49+
`user_defined_modules` has the following JSON schema:
50+
51+
```json
52+
{
53+
"user_defined_modules": [
54+
{
55+
"name": "string (required)",
56+
"location": {
57+
"location_type": "http | https (required)",
58+
"url": "string (required)",
59+
"credentials": {
60+
"username": "string (optional)",
61+
"password": "string (optional)"
62+
}
63+
}
64+
}
65+
]
66+
}
67+
```
68+
69+
### Best practices
70+
71+
- Use `https` instead of `http` for secure module downloads.
72+
73+
- Include version numbers in module URLs.
74+
75+
- Use the same `user_defined_modules` configuration for all nodes in a cluster.
76+
77+
- If using authenticated downloads, ensure credentials are properly secured.
78+
79+
- Ensure modules are compatible with the Redis database version running on your cluster.
80+
81+
- Verify modules work correctly before deploying to production environments.
82+
83+
### Example requests
84+
85+
{{< multitabs id="bootstrap-modules"
86+
tab1="Create cluster"
87+
tab2="Join cluster"
88+
tab3="Recover cluster" >}}
89+
90+
The following example creates a cluster with multiple modules:
91+
92+
93+
```sh
94+
POST /v1/bootstrap/create_cluster
95+
{
96+
"action": "create_cluster",
97+
"credentials": {
98+
"username": "admin@example.com",
99+
"password": "your-secure-password"
100+
},
101+
"cluster": {
102+
"name": "my-cluster.example.com"
103+
},
104+
"user_defined_modules": [
105+
{
106+
"name": "ModuleA",
107+
"location": {
108+
"location_type": "https",
109+
"url": "https://private-repo.example.com/enterprise-module-2.0.0.zip",
110+
"credentials": {
111+
"username": "download-user",
112+
"password": "download-password"
113+
}
114+
}
115+
},
116+
{
117+
"name": "ModuleB",
118+
"location": {
119+
"location_type": "https",
120+
"url": "https://modules.example.com/module-b-2.5.0.zip"
121+
}
122+
},
123+
{
124+
"name": "ModuleC",
125+
"location": {
126+
"location_type": "http",
127+
"url": "http://internal-server.local/module-c-1.2.0.zip"
128+
}
129+
}
130+
]
131+
}
132+
```
133+
134+
-tab-sep-
135+
136+
The following example joins a node to a cluster with multiple modules:
137+
138+
```sh
139+
POST /v1/bootstrap/join_cluster
140+
{
141+
"action": "join_cluster",
142+
"credentials": {
143+
"username": "admin@example.com",
144+
"password": "your-secure-password"
145+
},
146+
"cluster": {
147+
"name": "my-cluster.example.com",
148+
"nodes": ["192.168.1.10", "192.168.1.11"]
149+
},
150+
"user_defined_modules": [
151+
{
152+
"name": "ModuleA",
153+
"location": {
154+
"location_type": "https",
155+
"url": "https://private-repo.example.com/enterprise-module-2.0.0.zip",
156+
"credentials": {
157+
"username": "download-user",
158+
"password": "download-password"
159+
}
160+
}
161+
},
162+
{
163+
"name": "ModuleB",
164+
"location": {
165+
"location_type": "https",
166+
"url": "https://modules.example.com/module-b-2.5.0.zip"
167+
}
168+
},
169+
{
170+
"name": "ModuleC",
171+
"location": {
172+
"location_type": "http",
173+
"url": "http://internal-server.local/module-c-1.2.0.zip"
174+
}
175+
}
176+
]
177+
}
178+
```
179+
180+
-tab-sep-
181+
182+
The following example recovers a cluster with multiple modules:
183+
184+
```sh
185+
POST /v1/bootstrap/recover_cluster
186+
{
187+
"action": "recover_cluster",
188+
"recovery_filename": "/path/to/backup.rdb",
189+
"credentials": {
190+
"username": "admin@example.com",
191+
"password": "your-secure-password"
192+
},
193+
"user_defined_modules": [
194+
{
195+
"name": "ModuleA",
196+
"location": {
197+
"location_type": "https",
198+
"url": "https://private-repo.example.com/enterprise-module-2.0.0.zip",
199+
"credentials": {
200+
"username": "download-user",
201+
"password": "download-password"
202+
}
203+
}
204+
},
205+
{
206+
"name": "ModuleB",
207+
"location": {
208+
"location_type": "https",
209+
"url": "https://modules.example.com/module-b-2.5.0.zip"
210+
}
211+
},
212+
{
213+
"name": "ModuleC",
214+
"location": {
215+
"location_type": "http",
216+
"url": "http://internal-server.local/module-c-1.2.0.zip"
217+
}
218+
}
219+
]
220+
}
221+
```
222+
223+
{{< /multitabs >}}
224+
225+
### Troubleshooting
226+
227+
#### Error handling
228+
229+
Download failures do not fail the bootstrap process. If a module fails to download or install, a warning is logged and the bootstrap process continues with the remaining modules.
230+
231+
Warnings are recorded in the bootstrap status with:
232+
- `warning_type`: `"module_download_failed"`
233+
- `message`: Error description
234+
- `details`: `{"module_name": "<name>"}`
235+
236+
#### Module download failed
237+
238+
Check the bootstrap logs for detailed error messages:
239+
240+
```
241+
Failed to download and install custom module '<name>': <error details>
242+
```
243+
244+
Common causes:
245+
- Invalid URL
246+
- Network connectivity issues
247+
- Authentication failures
248+
- Module package format issues
249+
250+
#### Module compatibility errors
251+
252+
After processing user-defined modules, the system validates that all custom modules are compatible with existing databases in the cluster. This validation:
253+
254+
1. Checks which custom modules are used by existing databases.
255+
256+
1. Verifies that compatible module versions are available on the node.
257+
258+
1. Fails the bootstrap process if incompatible modules are detected.
259+
260+
If the bootstrap process fails with an `incompatible_modules` error:
261+
262+
1. Verify the module version is compatible with existing databases.
263+
264+
1. Ensure the module binary exists and is accessible.
265+
266+
#### Missing module.json
267+
268+
If you see `"module.json missing"` errors:
269+
270+
1. Verify the zip file contains a valid `module.json` at the root level.
271+
272+
1. Verify the JSON is properly formatted.
273+
29274
## Add a user-defined module to a cluster (Redis Software v8.0.x and later) {#add-user-defined-module-to-cluster}
30275

31276
To add a custom module to a cluster running Redis Enterprise Software version 8.0.x or later, use the following REST API requests:

content/operate/rs/references/rest-api/objects/bootstrap/_index.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,7 @@ A bootstrap configuration object.
3939
| recovery_filename | string | Name of backup file to recover from |
4040
| required_version | string | This node can only join the cluster if all nodes in the cluster have a version greater than the required_version (deprecated as of Redis Enterprise Software v7.8.6) |
4141
| retry_time | integer | Max waiting time between retries (in seconds) |
42+
| user_defined_modules | array of [user_defined_module]({{< relref "/operate/rs/references/rest-api/objects/bootstrap/user_defined_module" >}}) objects | List of custom modules to download and install during bootstrap. Each node downloads and installs the modules independently. |
43+
| witness_disk | object | An API object that represents the Witness Disk bootstrap configuration |
4244

4345

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
---
2+
Title: user_defined_module object
3+
alwaysopen: false
4+
categories:
5+
- docs
6+
- operate
7+
- rs
8+
description: An object for user-defined module configuration during bootstrap
9+
hideListLinks: true
10+
linkTitle: user_defined_module
11+
weight: $weight
12+
---
13+
14+
A user-defined module configuration object for bootstrap operations.
15+
16+
| Name | Type/Value | Description |
17+
|------|------------|-------------|
18+
| name | string | Module name for presentation and logging purposes (required) |
19+
| location | object | Information on where to download the module from (required)<br />{{<code>}}{
20+
"location_type": "http | https",
21+
"url": "string",
22+
"credentials": {
23+
"username": "string",
24+
"password": "string"
25+
}
26+
}{{</code>}}<br />**location_type**: The type of location, either `http` or `https` (required)<br />**url**: The URL to download the module zip file from (required)<br />**credentials**: Optional credentials for downloads that require basic authentication |
27+
28+
## Module package requirements
29+
30+
The module must be packaged as a `.zip` file containing:
31+
32+
- **module.json**: A metadata file with module information including:
33+
- `module_name`: The actual module name
34+
- `version`: Numeric version
35+
- `semantic_version`: Semantic version string (for example, "1.0.0")
36+
- `min_redis_version`: Minimum compatible Redis version
37+
- `commands`: List of commands the module provides
38+
- `capabilities`: List of module capabilities
39+
40+
- **Module binary**: The compiled `.so` file for the target platform

content/operate/rs/references/rest-api/objects/certificates.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,6 @@ An API object that represents a certificate used by a Redis Enterprise Software
1414

1515
| Name | Type/Value | Description |
1616
|------|------------|-------------|
17-
| name | `cm`<br />`api`<br />`mtls_trusted_ca`<br />`proxy`<br />`metrics_exporter`<br />`syncer`<br />`ldap_client`<br />`ccs_internode_encryption`<br />`data_internode_encryption` | Certificate type.<br />See the [certificates table]({{< relref "/operate/rs/security/certificates" >}}) for the list of cluster certificates and their descriptions. |
17+
| name | "cm"<br />"api"<br />"mtls_trusted_ca"<br />"proxy"<br />"metrics_exporter"<br />"syncer"<br />"ldap_client"<br />"ccs_internode_encryption"<br />"data_internode_encryption"<br />"sso_service"<br />"sso_issuer" | Certificate type.<br />See the [certificates table]({{< relref "/operate/rs/security/certificates" >}}) for the list of cluster certificates and their descriptions. |
1818
| certificate | string | The certificate in PEM format |
1919
| key | string | The private key in PEM format |

content/operate/rs/references/rest-api/objects/crdb/database_config.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ An object that represents the database configuration.
1919
| <span class="break-all">authentication_redis_pass</span> | string | Redis AUTH password (deprecated as of Redis Enterprise v7.2, replaced with multiple passwords feature in version 6.0.X) |
2020
| bigstore | boolean (default: false) | Database driver is Auto Tiering |
2121
| bigstore_ram_size | integer (default: 0) | Memory size of RAM size |
22+
| cert | string | Optional PEM-encoded server certificate for the underlying database instance |
2223
| data_persistence | 'disabled'<br />'snapshot'<br />**'aof'** | Database on-disk persistence policy. For snapshot persistence, a [snapshot_policy]({{< relref "/operate/rs/references/rest-api/objects/bdb/snapshot_policy" >}}) must be provided |
2324
| <span class="break-all">enforce_client_authentication</span> | **'enabled'** <br />'disabled' | Require authentication of client certificates for SSL connections to the database. If enabled, a certificate should be provided in either <span class="break-all">`authentication_ssl_client_certs`</span> or <span class="break-all">`authentication_ssl_crdt_certs`</span> |
2425
| max_aof_file_size | integer | Maximum AOF file size in bytes |
@@ -29,6 +30,7 @@ An object that represents the database configuration.
2930
| <span class="break-all">oss_cluster_api_preferred_ip_type</span> | 'internal'<br />'external' | Indicates preferred IP type in OSS cluster API |
3031
| oss_sharding | boolean (default: false) | An alternative to `shard_key_regex` for using the common case of the OSS shard hashing policy |
3132
| port | integer | TCP port for database access |
33+
| private_key | string | Optional PEM-encoded private key matching the certificate for the underlying database instance |
3234
| proxy_policy | 'single'<br />'all-master-shards'<br />'all-nodes' | The policy used for proxy binding to the endpoint |
3335
| rack_aware | boolean (default: false) | Require the database to be always replicated across multiple racks |
3436
| replication | boolean (default: true) | Database replication |
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
---
2+
Title: SSO object
3+
alwaysopen: false
4+
categories:
5+
- docs
6+
- operate
7+
- rs
8+
description: An object for single sign-on (SSO) configuration
9+
linkTitle: sso
10+
weight: $weight
11+
---
12+
13+
An API object that represents single sign-on (SSO) configuration in the cluster.
14+
15+
| Name | Type/Value | Description |
16+
|------|------------|-------------|
17+
| control_plane | boolean (default: false) | If `true`, enables single sign-on (SSO) for the control plane. |
18+
| enforce_control_plane | boolean (default: false) | If `true`, enforce SSO login for the control plane for non-admin users. If `false`, all users can still login using their local username and password if SSO is down. |
19+
| protocol | "saml2" | SSO protocol to use. |
20+
| issuer | complex object | Issuer related configuration.<br>Contains the following fields:<br>**id**: Unique ID of the issuer side (example: "urn:sso:example:idp")<br>**login_url**: SSO login URL (example: "https://idp.example.com/sso/saml")<br>**logout_url**: SSO logout URL (example: "https://idp.example.com/sso/slo")<br />**metadata**: Base64 encoded IdP metadata (read-only) |
21+
| service | complex object | Service related configuration.<br />For SAML2 service configuration:<br />{{<code>}}{
22+
"address": "string",
23+
"saml2": {
24+
"entity_id": "string",
25+
"acs_url": "string",
26+
"slo_url": "string"
27+
}
28+
}{{</code>}}<br>**address**: External service address used for SSO. By default, the cluster name with the Cluster Manager port is used.<br />**acs_url**: Assertion Consumer Service URL (read-only)<br>**slo_url**: Single Logout URL (read-only)<br>**entity_id**: Service entity ID (read-only) |

content/operate/rs/references/rest-api/objects/user.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ weight: $weight
1515
| uid | integer | User's unique ID |
1616
| account_id | integer | SM account ID |
1717
| action_uid | string | Action UID. If it exists, progress can be tracked by the <span class="break-all">`GET /actions/{uid}`</span> API request (read-only) |
18-
| auth_method | **'regular'**<br />'certificate'<br />'entraid' | User's authentication method |
18+
| auth_method | **'regular'**<br />'certificate'<br />'entraid'<br />'sso' | User's authentication method |
1919
| bdbs_email_alerts | complex object | UIDs of databases that user will receive alerts for |
2020
| <span class="break-all">certificate_subject_line</span> | string | The certificate’s subject line as defined by RFC2253. Used for certificate-based authentication users only. |
2121
| cluster_email_alerts | boolean | Activate cluster email alerts for a user |

0 commit comments

Comments
 (0)