Deploy Redis in Minutes on Your AWS Account
From an empty form to a connected client: a Valkey or Redis server in your own Kubernetes cluster, reachable the way you choose, with nightly backups to your own S3 bucket. For every option in detail, see the Redis Stack reference.
How long it takes
On a cluster you already have, a Redis stack reached Ready about three and a half minutes after Deploy in our live runs (October 2026), including an internet-facing load balancer, its DNS name and a TLS certificate. Most of that time is AWS registering the load balancer target; a stack reachable only inside the cluster has no load balancer to wait for. The form itself takes a minute.
Building the same thing by hand means a StatefulSet with a volume and persistence, a password Secret, a Network Load Balancer with source IP rules, a certificate and its renewal, a DNS record, an IAM role for S3, a backup CronJob and a tested restore procedure. The template does all of it, in your account.
Before you start
- A paid SeaGit plan.
- A native (sgt-k8s) cluster in your AWS account with the EBS CSI add-on. No cluster yet? Follow Getting Started first; creating the EKS cluster itself takes longer than the Redis stack.
- For My VPC: the Load Balancer add-on. For Internet: the Load Balancer and cert-manager add-ons, and an environment with a domain. The form tells you if one is missing.
Pick the right settings for your use case
| You want | Reachable from | When memory is full |
|---|---|---|
| Cache for an app in the same cluster | This cluster only | allkeys-lru |
| Sessions, rate limits or a job queue | This cluster only, or My VPC if ECS tasks or Lambdas use it too | Refuse writes (noeviction) |
| Shared by services outside the cluster, in the same VPC | My VPC | Depends on the data |
| Developers or a SaaS app connecting from outside AWS | Internet, with Allowed IPs set to their addresses | Depends on the data |
The rule behind the last column: if losing a key only costs a database read, let Redis evict. If a key is the only copy of something (a session, a queued job, a counter), refuse writes instead and size up. Redis use cases goes through each pattern with code.
Deploy the Redis stack
Step 1 — Open the template
In the SeaGit console, open Applications → Templates, find the Redis card under Databases and choose Deploy. Name the app and pick the environment and cluster it runs in.
Step 2 — Engine, size and eviction
- Engine: Valkey 8.1 (BSD licence, the default) or Redis 8.2. Your client code is the same either way.
- Size: Small holds 96 MB of data, Medium 384 MB, Large 1.5 GB. Size for your working set plus headroom; a cache rarely needs more than its hottest keys.
- When memory is full: see the table above.
- Storage: 2 GiB is plenty for the Small and Medium sizes. It holds the AOF and snapshots, not backups.
Step 3 — Who can reach it
Choose This cluster only, My VPC or Internet. For Internet, put your office or CI addresses in Allowed IPs, for example 203.0.113.7/32, 198.51.100.0/24. Leaving 0.0.0.0/0 opens the port to everyone; the password and TLS still protect it, but an allowlist means scanners never reach the password prompt.
Step 4 — Backups
Choose a new bucket (with S3-managed encryption, a new KMS key or one you have) or a folder in an existing bucket. Either way it is in the cluster’s AWS account. Set how many days of nightly backups to keep; 7 is the default.
Step 5 — Deploy and wait for Ready
Choose Deploy. The app opens on its Stack tab. The Connect card shows Provisioning and refreshes by itself; it turns Ready once the load balancer has a healthy target and the first backup has run.
Connect
The Connect card lists the endpoint, port, TLS setting, user default, the masked password and URL, an in-cluster URL, your Allowed IPs and the S3 location of your backups. Choose a code tab (redis-cli, Node.js, Python, Go or .env) and Reveal to copy. Each reveal is audited.
From a laptop, for an internet-facing stack:
redis-cli --tls -u "rediss://default:<password>@<dep>.<your domain>:6379"
> PING
PONGFrom an app in the same cluster, use the in-cluster URL:
# Node.js, ioredis
import Redis from 'ioredis';
const redis = new Redis(process.env.REDIS_URL);
// REDIS_URL=redis://default:<password>@<dep>.<space>.svc.cluster.local:6379
await redis.set('greeting', 'hello', 'EX', 60);
console.log(await redis.get('greeting'));Store the URL as a SeaGit secret variable rather than in code, so it reaches your pods as an environment variable.
Troubleshooting
- Connection times out from your laptop: your address is not in Allowed IPs, or the stack is VPC or cluster only. Check your current IP; home addresses change.
certificate verify failed: the client has no CA bundle. Common with the Debian-basedredisDocker image; useredis:8.2-alpineor installca-certificates.OOM command not allowed: the stack uses Refuse writes and is full. Delete keys, add TTLs, or redeploy at a larger size.- Stuck on Provisioning for more than ten minutes: open the app’s deployment logs; a missing add-on or an S3 bucket name already taken elsewhere are the usual causes.
Next steps
- Redis Stack reference: every option, backups, stop/start, delete, limits
- Back up Redis to S3 and restore it: the tested restore procedure
- Redis use cases: cache, sessions, rate limiting, queues, leaderboards and locks