From f9e8f9f6ce6eb0bb3f2fd32ba27f93c27aa07f1f Mon Sep 17 00:00:00 2001 From: James Oliver Date: Tue, 29 Mar 2016 09:56:30 -0700 Subject: [PATCH] Port Redis HA from Helm --- kubernetes-templates/redis/0/README.md | 5 +++ .../redis/0/rancher-compose.yml | 15 +++++++ .../redis/0/redis-master.yaml | 39 +++++++++++++++++++ kubernetes-templates/redis/0/redis-rc.yaml | 30 ++++++++++++++ .../redis/0/redis-sentinel-rc.yaml | 26 +++++++++++++ .../redis/0/redis-sentinel-service.yaml | 13 +++++++ .../redis/catalogIcon-redis.svg | 16 ++++++++ kubernetes-templates/redis/config.yml | 4 ++ 8 files changed, 148 insertions(+) create mode 100644 kubernetes-templates/redis/0/README.md create mode 100644 kubernetes-templates/redis/0/rancher-compose.yml create mode 100644 kubernetes-templates/redis/0/redis-master.yaml create mode 100644 kubernetes-templates/redis/0/redis-rc.yaml create mode 100644 kubernetes-templates/redis/0/redis-sentinel-rc.yaml create mode 100644 kubernetes-templates/redis/0/redis-sentinel-service.yaml create mode 100644 kubernetes-templates/redis/catalogIcon-redis.svg create mode 100644 kubernetes-templates/redis/config.yml diff --git a/kubernetes-templates/redis/0/README.md b/kubernetes-templates/redis/0/README.md new file mode 100644 index 0000000..0603965 --- /dev/null +++ b/kubernetes-templates/redis/0/README.md @@ -0,0 +1,5 @@ +# Redis + +Redis is an open source (BSD licensed), in-memory data structure store, used as database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs and geospatial indexes with radius queries. Redis has built-in replication, Lua scripting, LRU eviction, transactions and different levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster. + +This is a high-availability deployment of Redis. The Redis master is used for bootstrapping and may be deleted once the cluster is stable. diff --git a/kubernetes-templates/redis/0/rancher-compose.yml b/kubernetes-templates/redis/0/rancher-compose.yml new file mode 100644 index 0000000..531b435 --- /dev/null +++ b/kubernetes-templates/redis/0/rancher-compose.yml @@ -0,0 +1,15 @@ +.catalog: + name: Redis + version: 2.8.23-rancher1 + description: A highly-available in-memory data structure store + questions: + - variable: "REDIS_REPLICAS" + label: "Initial number of Redis nodes" + required: true + type: "int" + default: 3 + - variable: "SENTINEL_REPLICAS" + label: "Initial number of Redis Sentinel nodes" + required: true + type: "int" + default: 3 diff --git a/kubernetes-templates/redis/0/redis-master.yaml b/kubernetes-templates/redis/0/redis-master.yaml new file mode 100644 index 0000000..1cc89c6 --- /dev/null +++ b/kubernetes-templates/redis/0/redis-master.yaml @@ -0,0 +1,39 @@ +apiVersion: v1 +kind: Pod +metadata: + labels: + heritage: helm + name: redis + redis-sentinel: "true" + role: master + bootstrap: "true" + name: redis-master +spec: + containers: + - name: master + image: "deis/redis:v0.0.5" + env: + - name: MASTER + value: "true" + - name: DEBUG + value: "1" + ports: + - containerPort: 6379 + resources: + limits: + cpu: "0.1" + volumeMounts: + - mountPath: /redis-master-data + name: data + - name: sentinel + image: "deis/redis:v0.0.5" + env: + - name: SENTINEL + value: "true" + - name: DEBUG + value: "1" + ports: + - containerPort: 26379 + volumes: + - name: data + emptyDir: {} diff --git a/kubernetes-templates/redis/0/redis-rc.yaml b/kubernetes-templates/redis/0/redis-rc.yaml new file mode 100644 index 0000000..627429c --- /dev/null +++ b/kubernetes-templates/redis/0/redis-rc.yaml @@ -0,0 +1,30 @@ +apiVersion: v1 +kind: ReplicationController +metadata: + name: redis + labels: + heritage: helm +spec: + replicas: ${REDIS_REPLICAS} + selector: + name: redis + template: + metadata: + labels: + app: redis-cluster + name: redis + spec: + containers: + - name: redis + image: "deis/redis:v0.0.5" + ports: + - containerPort: 6379 + resources: + limits: + cpu: "0.1" + volumeMounts: + - mountPath: /redis-master-data + name: data + volumes: + - name: data + emptyDir: {} diff --git a/kubernetes-templates/redis/0/redis-sentinel-rc.yaml b/kubernetes-templates/redis/0/redis-sentinel-rc.yaml new file mode 100644 index 0000000..bcd5046 --- /dev/null +++ b/kubernetes-templates/redis/0/redis-sentinel-rc.yaml @@ -0,0 +1,26 @@ +apiVersion: v1 +kind: ReplicationController +metadata: + name: redis-sentinel + labels: + heritage: helm +spec: + replicas: ${SENTINEL_REPLICAS} + selector: + redis-sentinel: "true" + template: + metadata: + labels: + name: redis-sentinel + redis-sentinel: "true" + role: sentinel + provider: redis + spec: + containers: + - name: sentinel + image: "deis/redis:v0.0.5" + env: + - name: SENTINEL + value: "true" + ports: + - containerPort: 26379 diff --git a/kubernetes-templates/redis/0/redis-sentinel-service.yaml b/kubernetes-templates/redis/0/redis-sentinel-service.yaml new file mode 100644 index 0000000..532a5d8 --- /dev/null +++ b/kubernetes-templates/redis/0/redis-sentinel-service.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + heritage: helm + name: sentinel + role: service + name: redis-sentinel +spec: + ports: + - port: 26379 + selector: + redis-sentinel: "true" diff --git a/kubernetes-templates/redis/catalogIcon-redis.svg b/kubernetes-templates/redis/catalogIcon-redis.svg new file mode 100644 index 0000000..51fd19e --- /dev/null +++ b/kubernetes-templates/redis/catalogIcon-redis.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/kubernetes-templates/redis/config.yml b/kubernetes-templates/redis/config.yml new file mode 100644 index 0000000..edb0a32 --- /dev/null +++ b/kubernetes-templates/redis/config.yml @@ -0,0 +1,4 @@ +name: Redis +description: A highly-available in-memory data structure store +version: 2.8.23-rancher1 +category: Databases