diff --git a/docs/content/Configuration/Advanced/Multitenancy.mdx b/docs/content/Configuration/Advanced/Multitenancy.mdx
index 657e974899120..cd703092372f6 100644
--- a/docs/content/Configuration/Advanced/Multitenancy.mdx
+++ b/docs/content/Configuration/Advanced/Multitenancy.mdx
@@ -349,13 +349,6 @@ input.
-## Connecting to Redis
-
-When configured for multitenancy, Cube uses a separate connection pool for each
-configured tenant. This means that the `CUBEJS_REDIS_POOL_MIN` and
-`CUBEJS_REDIS_POOL_MAX` environment variables specify the minimum and maximum
-number of Redis connections **per-tenant**.
-
[ref-config]: /config
[ref-config-opts]: /config#options-reference
[ref-config-db]: /config/databases
diff --git a/docs/content/Deployment/Overview.mdx b/docs/content/Deployment/Overview.mdx
index e678f46c373b6..fd6a5544e8997 100644
--- a/docs/content/Deployment/Overview.mdx
+++ b/docs/content/Deployment/Overview.mdx
@@ -10,16 +10,20 @@ redirect_from:
---
This section contains a general overview of deploying a Cube cluster in
-production. You can find platform-specific guides for:
-
-- [Cube Cloud][ref-deploy-cubecloud]
-- [Docker][ref-deploy-docker]
+production. You can also check platform-specific guides for [Cube
+Cloud][ref-deploy-cubecloud] and [Docker][ref-deploy-docker].
If you are moving Cube to production, check out the [Production
Checklist][ref-deploy-prod-list].
-As shown in the diagram below, a typical production Cube cluster consists of one
-or multiple API instances, a Refresh Worker and a Cube Store cluster.
+## Components
+
+As shown in the diagram below, a typical production deployment of Cube includes
+the following components:
+
+- One or multiple API instances
+- A Refresh Worker
+- A Cube Store cluster
![]()
- - CUBEJS_DB_EXPORT_BUCKET=cubestore
-
- - CUBEJS_CUBESTORE_HOST=cubestore_router
-
- - CUBEJS_API_SECRET=secret
- volumes:
- - .:/cube/conf
- depends_on:
- - cubestore_worker_1
- - cubestore_worker_2
- - cube_refresh_worker
-
- cube_refresh_worker:
- image: cubejs/cube
- environment:
- - CUBEJS_DB_TYPE=bigquery
- - CUBEJS_DB_BQ_PROJECT_ID=cubejs-k8s-cluster
- - CUBEJS_DB_BQ_CREDENTIALS=
- - CUBEJS_DB_EXPORT_BUCKET=cubestore
-
- - CUBEJS_CUBESTORE_HOST=cubestore_router
-
- - CUBEJS_API_SECRET=secret
-
- - CUBEJS_REFRESH_WORKER=true
- volumes:
- - .:/cube/conf
+You can find an example Docker Compose configuration for a Cube deployment in
+the platform-specific guide for [Docker][ref-deploy-docker].
- cubestore_router:
- image: cubejs/cubestore:latest
- environment:
- - CUBESTORE_WORKERS=cubestore_worker_1:10001,cubestore_worker_2:10002
- - CUBESTORE_REMOTE_DIR=/cube/data
- - CUBESTORE_META_PORT=9999
- - CUBESTORE_SERVER_NAME=cubestore_router:9999
- volumes:
- - .cubestore:/cube/data
-
- cubestore_worker_1:
- image: cubejs/cubestore:latest
- environment:
- - CUBESTORE_WORKERS=cubestore_worker_1:10001,cubestore_worker_2:10002
- - CUBESTORE_SERVER_NAME=cubestore_worker_1:10001
- - CUBESTORE_WORKER_PORT=10001
- - CUBESTORE_REMOTE_DIR=/cube/data
- - CUBESTORE_META_ADDR=cubestore_router:9999
- volumes:
- - .cubestore:/cube/data
- depends_on:
- - cubestore_router
-
- cubestore_worker_2:
- image: cubejs/cubestore:latest
- environment:
- - CUBESTORE_WORKERS=cubestore_worker_1:10001,cubestore_worker_2:10002
- - CUBESTORE_SERVER_NAME=cubestore_worker_2:10002
- - CUBESTORE_WORKER_PORT=10002
- - CUBESTORE_REMOTE_DIR=/cube/data
- - CUBESTORE_META_ADDR=cubestore_router:9999
- volumes:
- - .cubestore:/cube/data
- depends_on:
- - cubestore_router
-```
-
-## API Instance
+## API instances
API instances process incoming API requests and query either Cube Store for
pre-aggregated data or connected data sources for raw data. It is possible to
@@ -135,12 +63,12 @@ has access to the data schema files.
## Refresh Worker
-A Refresh Worker updates pre-aggregations and invalidates the in-memory cache in the
-background. They also keep the refresh keys up-to-date for all defined schemas
-and pre-aggregations.
-Please note that the in-memory cache is just invalidated but not populated by Refresh Worker.
-In-memory cache is populated lazily during querying.
-On the other hand, pre-aggregations are eagerly populated and kept up-to-date by Refresh Worker.
+A Refresh Worker updates pre-aggregations and invalidates the in-memory cache in
+the background. They also keep the refresh keys up-to-date for all defined
+schemas and pre-aggregations. Please note that the in-memory cache is just
+invalidated but not populated by Refresh Worker. In-memory cache is populated
+lazily during querying. On the other hand, pre-aggregations are eagerly
+populated and kept up-to-date by Refresh Worker.
[Cube Docker image][dh-cubejs] can be used for creating Refresh Workers; to make
the service act as a Refresh Worker, `CUBEJS_REFRESH_WORKER=true` should be set
@@ -275,6 +203,22 @@ services:
- cubestore_router
```
+## Redis
+
+Earlier, [Redis][redis] was used in production deployments as storage
+for in-memory cache and query queue. Since version v0.32.0, Cube Store is used
+for that purpose. It is still possible to [configure][ref-config-redis] Cube to
+use Redis; however, it is strongly not recommended. Please check the [blog
+post][blog-details] for details.
+
+
+
+Redis support is deprecated and will be removed from Cube in the future. Upgrade
+to v0.32.0 or later to use Cube Store instead of Redis. See the [migration
+guide][blog-migration-guide].
+
+
+
[dh-cubejs]: https://hub.docker.com/r/cubejs/cube
[dh-cubestore]: https://hub.docker.com/r/cubejs/cubestore
[gh-cube-examples-k8s]:
@@ -286,3 +230,8 @@ services:
[ref-deploy-docker]: /deployment/platforms/docker
[ref-config-env]: /reference/environment-variables
[ref-config-js]: /config
+[redis]: https://redis.io
+[ref-config-redis]: /reference/environment-variables#cubejs-redis-password
+[blog-details]: https://cube.dev/blog/how-you-win-by-using-cube-store-part-1
+[blog-migration-guide]:
+ https://cube.dev/blog/how-you-win-by-using-cube-store-part-1#how-to-migrate-to-cube-store
diff --git a/docs/content/Deployment/Platform-Cube-Cloud.mdx b/docs/content/Deployment/Platform-Cube-Cloud.mdx
index 61b7586f81664..b66d2eac98dfe 100644
--- a/docs/content/Deployment/Platform-Cube-Cloud.mdx
+++ b/docs/content/Deployment/Platform-Cube-Cloud.mdx
@@ -4,7 +4,7 @@ menuTitle: Cube Cloud
permalink: /deployment/platforms/cube-cloud
category: Deployment
subCategory: Platforms
-menuOrder: 1
+menuOrder: 10
---
This guide walks you through deploying Cube with [Cube Cloud][link-cube-cloud],
diff --git a/docs/content/Deployment/Platform-Docker.mdx b/docs/content/Deployment/Platform-Docker.mdx
index 65e1cf5591f92..3b494ab90a40b 100644
--- a/docs/content/Deployment/Platform-Docker.mdx
+++ b/docs/content/Deployment/Platform-Docker.mdx
@@ -4,7 +4,7 @@ menuTitle: Docker
permalink: /deployment/platforms/docker
category: Deployment
subCategory: Platforms
-menuOrder: 2
+menuOrder: 11
---
This guide walks you through deploying Cube with Docker.
@@ -207,7 +207,6 @@ services:
- CUBEJS_DB_BQ_CREDENTIALS=
- CUBEJS_DB_EXPORT_BUCKET=cubestore
- CUBEJS_CUBESTORE_HOST=cubestore_router
- - CUBEJS_REDIS_URL=redis://redis:6379
- CUBEJS_API_SECRET=secret
- CUBEJS_JWK_URL=https://cognito-idp..amazonaws.com//.well-known/jwks.json
- CUBEJS_JWT_AUDIENCE=
@@ -220,7 +219,6 @@ services:
- cubestore_worker_1
- cubestore_worker_2
- cube_refresh_worker
- - redis
```
### <--{"id" : "Security"}--> Securing Cube Store
@@ -274,14 +272,12 @@ services:
- CUBEJS_DB_BQ_CREDENTIALS=
- CUBEJS_DB_EXPORT_BUCKET=cubestore
- CUBEJS_CUBESTORE_HOST=cubestore_router
- - CUBEJS_REDIS_URL=redis://redis:6379
- CUBEJS_API_SECRET=secret
volumes:
- .:/cube/conf
depends_on:
- cubestore_router
- cube_refresh_worker
- - redis
```
## Extend the Docker image
@@ -337,7 +333,6 @@ services:
- CUBEJS_DB_BQ_CREDENTIALS=
- CUBEJS_DB_EXPORT_BUCKET=cubestore
- CUBEJS_CUBESTORE_HOST=cubestore_router
- - CUBEJS_REDIS_URL=redis://redis:6379
- CUBEJS_API_SECRET=secret
volumes:
- .:/cube/conf
@@ -346,7 +341,6 @@ services:
depends_on:
- cubestore_router
- cube_refresh_worker
- - redis
```
[medium-letsencrypt-nginx]: