Skip to content

Commit

Permalink
Kubernetes deployment - Moved to Redis-4.0.0
Browse files Browse the repository at this point in the history
It supports cluster-announce-ip and cluster-announce-port
redis/redis#2527
  • Loading branch information
Shekhar Bansal committed Jul 17, 2017
1 parent a9ee0c1 commit a1d34c6
Show file tree
Hide file tree
Showing 18 changed files with 203 additions and 71 deletions.
31 changes: 31 additions & 0 deletions Docker-image/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
FROM alpine:3.6
LABEL maintainer "Adrian B. Danieli - https://github.com/sickp"

EXPOSE 6379
ENTRYPOINT ["/entrypoint.sh"]
CMD ["redis-server", "/etc/redis/redis.conf"]
VOLUME ["/data"]
WORKDIR /data

COPY rootfs /

ENV REDIS_VERSION=4.0.0

RUN set -exo pipefail \
&& apk add --no-cache --virtual .build-deps \
build-base \
linux-headers \
openssl \
&& wget -O /usr/local/bin/gosu https://github.com/tianon/gosu/releases/download/1.10/gosu-amd64 \
&& chmod +x /usr/local/bin/gosu \
&& cd /tmp \
&& wget https://github.com/antirez/redis/archive/${REDIS_VERSION}.tar.gz \
&& tar xzf ${REDIS_VERSION}.tar.gz \
&& cd /tmp/redis-${REDIS_VERSION} \
&& make \
&& make install \
&& cp redis.conf /etc/redis.conf \
&& sed -i -e 's/bind 127.0.0.1/bind 0.0.0.0/' /etc/redis.conf \
&& adduser -D redis \
&& apk del .build-deps \
&& rm -rf /tmp/*
6 changes: 6 additions & 0 deletions Docker-image/rootfs/entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/bin/ash
if [[ "$1" == "redis-server" ]]; then
chown -R redis:redis /data
exec gosu redis "$@"
fi
exec "$@"
3 changes: 3 additions & 0 deletions Docker-image/rootfs/usr/local/bin/about
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/bin/ash
echo "* $(redis-server --version)"
echo "* Alpine Linux $(cat /etc/alpine-release)"
15 changes: 15 additions & 0 deletions README-build-docker.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Kubernetes Redis Cluster

### Build docker image

```
cd Docker-image
docker build -t redis-4.0.0 .
```

### Push docker image to your repo

```
docker tag redis-4.0.0 localrepo:5000/redis/redis-4.0.0:v1
docker push localrepo:5000/redis/redis-4.0.0:v1
```
39 changes: 19 additions & 20 deletions README-using-deployment.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
# Kubernetes Redis Cluster
# Kubernetes Redis-4.0.0 Cluster


### [Build Docker image](README-build-docker.md)


### Create NFS storages

Expand All @@ -18,19 +22,19 @@ kubectl create -f persistentvolumeclaims
### Create Redis Cluster Configuration

```
kubectl create configmap redis-conf --from-file=redis.conf
kubectl create -f deployment-configmaps
```

### Create Redis Nodes
### Create Redis Services

```
kubectl create -f deployment
kubectl create -f deployment-services
```

### Create Redis Services
### Create Redis Nodes

```
kubectl create -f deployment-services
kubectl create -f deployment
```

### Connect Nodes
Expand All @@ -43,23 +47,18 @@ kubectl run -i --tty ubuntu --image=ubuntu \
```
apt-get update
apt-get install -y vim wget python2.7 python-pip redis-tools dnsutils
```

*Note:* `redis-trib` doesn't support hostnames (see [this issue](https://github.com/antirez/redis/issues/2565)), so we use `dig` to resolve our cluster IPs.

```
pip install redis-trib
wget http://download.redis.io/redis-stable/src/redis-trib.rb
chmod 755 redis-trib.rb
```

```
redis-trib.py create \
`dig +short redis-1.default.svc.cluster.local`:6379 \
`dig +short redis-2.default.svc.cluster.local`:6379 \
`dig +short redis-3.default.svc.cluster.local`:6379
redis-trib.py replicate --master-addr `dig +short redis-1.default.svc.cluster.local`:6379 --slave-addr `dig +short redis-4.default.svc.cluster.local`:6379
redis-trib.py replicate --master-addr `dig +short redis-2.default.svc.cluster.local`:6379 --slave-addr `dig +short redis-5.default.svc.cluster.local`:6379
redis-trib.py replicate --master-addr `dig +short redis-3.default.svc.cluster.local`:6379 --slave-addr `dig +short redis-6.default.svc.cluster.local`:6379
./redis-trib.rb create --replicas 1 \
10.111.103.1:6379 \
10.111.103.2:6379 \
10.111.103.3:6379 \
10.111.103.4:6379 \
10.111.103.5:6379 \
10.111.103.6:6379
```

### Accessing redis cli
Expand Down
12 changes: 9 additions & 3 deletions README-using-statefulset.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,15 @@ redis-trib.py create \
`dig +short redis-app-1.redis-service.default.svc.cluster.local`:6379 \
`dig +short redis-app-2.redis-service.default.svc.cluster.local`:6379
redis-trib.py replicate --master-addr `dig +short redis-app-0.redis-service.default.svc.cluster.local`:6379 --slave-addr `dig +short redis-app-3.redis-service.default.svc.cluster.local`:6379
redis-trib.py replicate --master-addr `dig +short redis-app-1.redis-service.default.svc.cluster.local`:6379 --slave-addr `dig +short redis-app-4.redis-service.default.svc.cluster.local`:6379
redis-trib.py replicate --master-addr `dig +short redis-app-2.redis-service.default.svc.cluster.local`:6379 --slave-addr `dig +short redis-app-5.redis-service.default.svc.cluster.local`:6379
redis-trib.py replicate \
--master-addr `dig +short redis-app-0.redis-service.default.svc.cluster.local`:6379 \
--slave-addr `dig +short redis-app-3.redis-service.default.svc.cluster.local`:6379
redis-trib.py replicate \
--master-addr `dig +short redis-app-1.redis-service.default.svc.cluster.local`:6379 \
--slave-addr `dig +short redis-app-4.redis-service.default.svc.cluster.local`:6379
redis-trib.py replicate \
--master-addr `dig +short redis-app-2.redis-service.default.svc.cluster.local`:6379
--slave-addr `dig +short redis-app-5.redis-service.default.svc.cluster.local`:6379
```

### Accessing redis cli
Expand Down
16 changes: 16 additions & 0 deletions deployment-configmaps/redis-1.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: redis-1-cm
data:
redis.conf: |
appendonly no
protected-mode no
cluster-enabled yes
cluster-config-file /var/lib/redis/nodes.conf
cluster-node-timeout 5000
dir /var/lib/redis
port 6379
cluster-announce-port 6379
cluster-announce-bus-port 16379
cluster-announce-ip 10.111.103.1
16 changes: 16 additions & 0 deletions deployment-configmaps/redis-2.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: redis-2-cm
data:
redis.conf: |
appendonly no
protected-mode no
cluster-enabled yes
cluster-config-file /var/lib/redis/nodes.conf
cluster-node-timeout 5000
dir /var/lib/redis
port 6379
cluster-announce-port 6379
cluster-announce-bus-port 16379
cluster-announce-ip 10.111.103.2
16 changes: 16 additions & 0 deletions deployment-configmaps/redis-3.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: redis-3-cm
data:
redis.conf: |
appendonly no
protected-mode no
cluster-enabled yes
cluster-config-file /var/lib/redis/nodes.conf
cluster-node-timeout 5000
dir /var/lib/redis
port 6379
cluster-announce-port 6379
cluster-announce-bus-port 16379
cluster-announce-ip 10.111.103.3
16 changes: 16 additions & 0 deletions deployment-configmaps/redis-4.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: redis-4-cm
data:
redis.conf: |
appendonly no
protected-mode no
cluster-enabled yes
cluster-config-file /var/lib/redis/nodes.conf
cluster-node-timeout 5000
dir /var/lib/redis
port 6379
cluster-announce-port 6379
cluster-announce-bus-port 16379
cluster-announce-ip 10.111.103.4
16 changes: 16 additions & 0 deletions deployment-configmaps/redis-5.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: redis-5-cm
data:
redis.conf: |
appendonly no
protected-mode no
cluster-enabled yes
cluster-config-file /var/lib/redis/nodes.conf
cluster-node-timeout 5000
dir /var/lib/redis
port 6379
cluster-announce-port 6379
cluster-announce-bus-port 16379
cluster-announce-ip 10.111.103.5
16 changes: 16 additions & 0 deletions deployment-configmaps/redis-6.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: redis-6-cm
data:
redis.conf: |
appendonly no
protected-mode no
cluster-enabled yes
cluster-config-file /var/lib/redis/nodes.conf
cluster-node-timeout 5000
dir /var/lib/redis
port 6379
cluster-announce-port 6379
cluster-announce-bus-port 16379
cluster-announce-ip 10.111.103.6
12 changes: 4 additions & 8 deletions deployment/redis-1.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,7 @@ spec:
spec:
containers:
- name: redis
image: "redis:3.2.8"
command:
- "redis-server"
args:
- "/etc/redis/redis.conf"
- "--protected-mode"
- "no"
image: "localrepo:5000/redis/redis-4.0.0:v1"
resources:
requests:
cpu: "100m"
Expand All @@ -35,13 +29,15 @@ spec:
mountPath: "/etc/redis"
- name: "redis-data"
mountPath: "/var/lib/redis"
imagePullSecrets:
- name: regsecret
volumes:
- name: "redis-data"
persistentVolumeClaim:
claimName: redis-data-redis-app-0
- name: "redis-conf"
configMap:
name: "redis-conf"
name: "redis-1-cm"
items:
- key: "redis.conf"
path: "redis.conf"
12 changes: 4 additions & 8 deletions deployment/redis-2.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,7 @@ spec:
spec:
containers:
- name: redis
image: "redis:3.2.8"
command:
- "redis-server"
args:
- "/etc/redis/redis.conf"
- "--protected-mode"
- "no"
image: "localrepo:5000/redis/redis-4.0.0:v1"
resources:
requests:
cpu: "100m"
Expand All @@ -35,13 +29,15 @@ spec:
mountPath: "/etc/redis"
- name: "redis-data"
mountPath: "/var/lib/redis"
imagePullSecrets:
- name: regsecret
volumes:
- name: "redis-data"
persistentVolumeClaim:
claimName: redis-data-redis-app-1
- name: "redis-conf"
configMap:
name: "redis-conf"
name: "redis-2-cm"
items:
- key: "redis.conf"
path: "redis.conf"
12 changes: 4 additions & 8 deletions deployment/redis-3.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,7 @@ spec:
spec:
containers:
- name: redis
image: "redis:3.2.8"
command:
- "redis-server"
args:
- "/etc/redis/redis.conf"
- "--protected-mode"
- "no"
image: "localrepo:5000/redis/redis-4.0.0:v1"
resources:
requests:
cpu: "100m"
Expand All @@ -35,13 +29,15 @@ spec:
mountPath: "/etc/redis"
- name: "redis-data"
mountPath: "/var/lib/redis"
imagePullSecrets:
- name: regsecret
volumes:
- name: "redis-data"
persistentVolumeClaim:
claimName: redis-data-redis-app-2
- name: "redis-conf"
configMap:
name: "redis-conf"
name: "redis-3-cm"
items:
- key: "redis.conf"
path: "redis.conf"
12 changes: 4 additions & 8 deletions deployment/redis-4.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,7 @@ spec:
spec:
containers:
- name: redis
image: "redis:3.2.8"
command:
- "redis-server"
args:
- "/etc/redis/redis.conf"
- "--protected-mode"
- "no"
image: "localrepo:5000/redis/redis-4.0.0:v1"
resources:
requests:
cpu: "100m"
Expand All @@ -35,13 +29,15 @@ spec:
mountPath: "/etc/redis"
- name: "redis-data"
mountPath: "/var/lib/redis"
imagePullSecrets:
- name: regsecret
volumes:
- name: "redis-data"
persistentVolumeClaim:
claimName: redis-data-redis-app-3
- name: "redis-conf"
configMap:
name: "redis-conf"
name: "redis-4-cm"
items:
- key: "redis.conf"
path: "redis.conf"
Loading

0 comments on commit a1d34c6

Please sign in to comment.