Documentation Index
Fetch the complete documentation index at: https://docs.controlplane.com/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Redis is a high-performance in-memory data store. This template deploys a Redis master-replica cluster with Redis Sentinel for automatic failover and leader election.This template does not create a GVC. You must deploy it into an existing GVC.
What Gets Created
- Stateful Redis Workload — (
RELEASE_NAME-redis): a master-replica cluster. Replica 0 starts as the primary; all others replicate from it. - Stateful Sentinel Workload — (
RELEASE_NAME-sentinel): monitors the Redis cluster and orchestrates automatic failover when the primary becomes unavailable. - Secret — An opaque secret containing the Redis server configuration (
redis.conf), mounted into each Redis container. - Secret — An opaque secret containing the Sentinel configuration (
sentinel.conf), mounted into each Sentinel container. - Secret (optional) — A dictionary secret holding the Redis auth password, created when
redis.auth.password.enabledis true. - Secret (optional) — A dictionary secret holding the Sentinel auth password, created when
sentinel.auth.password.enabledis true. - Identity & Policy — Separate identities and policies for the Redis and Sentinel workloads, each with
revealaccess to their respective secrets, and cloud storage access when backup is enabled. - Volume Set (optional) — Persistent storage for Redis data, created when
redis.persistence.enabledis true. - Volume Set (optional) — Persistent storage for Sentinel state, created when
sentinel.persistence.enabledis true. - Domain (optional) — External domain resources for Redis and/or Sentinel when
publicAccess.enabledis true. - Backup Cron Workload (optional) — A scheduled backup job that writes Redis snapshots to AWS S3 or GCS.
Installation
This template has no external prerequisites unless backup or public access is enabled. To install, follow the instructions for your preferred method:UI
Browse, install, and manage templates visually
CLI
Manage templates from your terminal
Terraform
Declare templates in your Terraform configurations
Pulumi
Declare templates in your Pulumi programs
Configuration
The defaultvalues.yaml for this template:
Authentication
Authentication is disabled by default. Both the Redis workload and the Sentinel workload support independent auth configuration. Only one method can be enabled at a time per workload. Option 1 — Inline password (creates a secret automatically):sentinel.auth.
Redis Cluster
redis.replicas— Number of Redis replicas. Replica 0 is always the initial primary.redis.resources.cpu/redis.resources.memory— Maximum CPU and memory per replica.redis.resources.minCpu/redis.resources.minMemory— Minimum CPU and memory guaranteed per replica.redis.multiZone— Spread replicas across availability zones within the location.redis.extraArgs— Additional Redis server arguments (e.g.--maxmemory 200mb --maxmemory-policy allkeys-lru).
Sentinel
Sentinel monitors the Redis cluster and automatically promotes a replica when the primary fails.sentinel.replicas— Number of Sentinel replicas. A minimum of 3 is required for a majority quorum.sentinel.quorumAutoCalculation— Whentrue, the quorum is calculated automatically as(replicas / 2) + 1. Set tofalseto usesentinel.quorumOverride.sentinel.quorumOverride— Manual quorum value, used only whenquorumAutoCalculationisfalse.sentinel.resources.cpu/sentinel.resources.memory— Maximum CPU and memory per Sentinel replica.sentinel.resources.minCpu/sentinel.resources.minMemory— Minimum CPU and memory guaranteed per Sentinel replica.sentinel.multiZone— Spread Sentinel replicas across availability zones.
Storage
Persistence is disabled by default. When enabled, a Volume Set is created to store data across restarts. Redis persistence:redis.persistence.enabled— Enable persistent storage for Redis data.redis.persistence.volumes.data.initialCapacity— Initial volume size in GiB. Minimum 1000 GiB forhigh-throughput-ssd.redis.persistence.volumes.data.performanceClass—general-purpose-ssdorhigh-throughput-ssd.redis.persistence.volumes.data.fileSystemType—ext4orxfs.redis.persistence.volumes.data.snapshots.retentionDuration— How long to retain volume snapshots.redis.persistence.volumes.data.snapshots.schedule— Cron expression for snapshot frequency.redis.persistence.volumes.data.autoscaling.maxCapacity— Maximum volume size in GiB.redis.persistence.volumes.data.autoscaling.minFreePercentage— Trigger scaling when free space drops below this percentage.redis.persistence.volumes.data.autoscaling.scalingFactor— Multiply current capacity by this factor when scaling up.
sentinel.persistence.
Firewall
Both Redis and Sentinel firewall settings are configured independently.redis.firewall.internal_inboundAllowType/sentinel.firewall.internal_inboundAllowType:
| Value | Description |
|---|---|
same-gvc | Allow access from all workloads in the same GVC (recommended) |
same-org | Allow access from all workloads in the same organization |
workload-list | Allow access only from specific workloads |
redis.firewall.inboundAllowWorkload— List of specific workload links when usingworkload-list.redis.firewall.external_inboundAllowCIDR— Comma-separated CIDR ranges for external inbound access.redis.firewall.external_outboundAllowCIDR— Comma-separated CIDR ranges for external outbound access.
Public Access
Redis and Sentinel can be exposed over the internet via TCP using Control Plane’s domain resource with per-replica port routing.Prerequisites
- Enable Dedicated Load Balancer on your GVC — This is required for arbitrary TCP port routing. Navigate to your GVC settings in the Control Plane console and enable the Dedicated Load Balancer option.
-
Add DNS records before deploying — Control Plane verifies domain ownership when the domain resource is first created. If the records are not in place, the deploy will fail with an
Unable to apply domainerror. Add the following records in your DNS provider for each address you configure, and disable any proxy (TCP must pass through directly):
| Type | Name | Value |
|---|---|---|
| TXT | _cpln-<subdomain> | Your Control Plane org name or org ID |
| CNAME | <subdomain> | <gvc-alias>.cpln.app |
Configuration
Enable public access for Redis and/or Sentinel, set the subdomain address, and open the external firewall:external_inboundAllowCIDR must be set when public access is enabled — without it, inbound traffic from the internet will be blocked even though the domain is configured.Port Mapping
Each replica is assigned its own external port. Port numbers increment per replica starting at:- Redis:
6380,6381,6382, … (replica 0, 1, 2, …) - Sentinel:
26380,26381,26382, … (replica 0, 1, 2, …)
Connecting Externally
Connecting to Redis
Connect to Redis internally from within the same GVC:mymaster.
Ports
| Workload | Port | Description |
|---|---|---|
| Redis | 6379 | Internal Redis data port |
| Sentinel | 26379 | Internal Sentinel discovery port |
| Redis (public) | 6380, 6381, … | One port per replica when public access is enabled |
| Sentinel (public) | 26380, 26381, … | One port per replica when public access is enabled |
Backup
Backup is disabled by default. When enabled, a cron workload runs on the configured schedule and uploads a Redis snapshot to AWS S3 or GCS. The backup image is compatible with all Redis versions.backup.enabled— Enable scheduled backups.backup.schedule— Cron expression for backup frequency (default: daily at 2am UTC).backup.provider—awsorgcp.backup.resources.cpu/backup.resources.memory— Resources for the backup cron container.
AWS S3
Before enabling backup withprovider: aws, complete the following in your AWS account:
- Create an S3 bucket. Set
backup.aws.bucketto its name andbackup.aws.regionto its region. - If you do not have a Cloud Account set up, refer to the docs to Create a Cloud Account. Set
backup.aws.cloudAccountNameto its name. - Create an IAM policy with the following JSON, replacing
YOUR_BUCKET_NAME:
- Set
backup.aws.policyNameto the name of the policy created in step 3. - Set
backup.aws.prefixto the folder path where backups will be stored.
GCS
Before enabling backup withprovider: gcp, complete the following in your GCP account:
- Create a GCS bucket. Set
backup.gcp.bucketto its name. - If you do not have a Cloud Account set up, refer to the docs to Create a Cloud Account. Set
backup.gcp.cloudAccountNameto its name. - Add the Storage Admin role to the GCP service account associated with the Cloud Account.
- Set
backup.gcp.prefixto the folder path where backups will be stored.
Restoring a Backup
Download the.rdb backup file from your bucket and restore it into a running Redis instance. For GCS, replace aws s3 cp s3://... with gsutil cp gs://....
External References
Redis Documentation
Official Redis documentation
Redis Sentinel Documentation
Redis Sentinel setup and client configuration
Backup Image Source
Source code for the Redis backup container image
Redis Template
View the source files, default values, and chart definition