From 02db1d7098e84522885ba8d3f8e9fb7cdd27da5c Mon Sep 17 00:00:00 2001 From: marcel-dempers Date: Fri, 12 Jun 2020 22:34:55 +1000 Subject: [PATCH] add files --- kubernetes/statefulsets/example-app.yaml | 32 +++++++++ kubernetes/statefulsets/notes.sh | 9 +++ kubernetes/statefulsets/statefulset.yaml | 86 ++++++++++++++++++++++++ 3 files changed, 127 insertions(+) create mode 100644 kubernetes/statefulsets/example-app.yaml create mode 100644 kubernetes/statefulsets/notes.sh create mode 100644 kubernetes/statefulsets/statefulset.yaml diff --git a/kubernetes/statefulsets/example-app.yaml b/kubernetes/statefulsets/example-app.yaml new file mode 100644 index 0000000..7e1e14e --- /dev/null +++ b/kubernetes/statefulsets/example-app.yaml @@ -0,0 +1,32 @@ +apiVersion: v1 +kind: Service +metadata: + name: hit-counter-lb +spec: + type: LoadBalancer + ports: + - port: 80 + protocol: TCP + targetPort: 5000 + selector: + app: myapp +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: hit-counter-app +spec: + replicas: 1 + selector: + matchLabels: + app: myapp + template: + metadata: + labels: + app: myapp + spec: + containers: + - name: myapp + image: calinrus/api-redis-ha:1.0 + ports: + - containerPort: 5000 \ No newline at end of file diff --git a/kubernetes/statefulsets/notes.sh b/kubernetes/statefulsets/notes.sh new file mode 100644 index 0000000..9f33f35 --- /dev/null +++ b/kubernetes/statefulsets/notes.sh @@ -0,0 +1,9 @@ + + +# Enable Redis Cluster +$IPs = $(kubectl -n example get pods -l app=redis-cluster -o jsonpath='{range.items[*]}{.status.podIP}:6379 ') +kubectl -n example exec -it redis-cluster-1 -- /bin/sh -c "redis-cli -h 127.0.0.1 -p 6379 --cluster create ${IPs}" +kubectl -n example exec -it redis-cluster-0 -- /bin/sh -c "redis-cli -h 127.0.0.1 -p 6379 cluster info" + +# More info +https://rancher.com/blog/2019/deploying-redis-cluster diff --git a/kubernetes/statefulsets/statefulset.yaml b/kubernetes/statefulsets/statefulset.yaml new file mode 100644 index 0000000..1fe13f3 --- /dev/null +++ b/kubernetes/statefulsets/statefulset.yaml @@ -0,0 +1,86 @@ +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: redis-cluster +data: + update-node.sh: | + #!/bin/sh + REDIS_NODES="/data/nodes.conf" + sed -i -e "/myself/ s/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/${POD_IP}/" ${REDIS_NODES} + exec "$@" + redis.conf: |+ + cluster-enabled yes + cluster-require-full-coverage no + cluster-node-timeout 15000 + cluster-config-file /data/nodes.conf + cluster-migration-barrier 1 + appendonly yes + protected-mode no +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: redis-cluster +spec: + serviceName: redis-cluster + replicas: 6 + selector: + matchLabels: + app: redis-cluster + template: + metadata: + labels: + app: redis-cluster + spec: + containers: + - name: redis + image: redis:5.0.1-alpine + ports: + - containerPort: 6379 + name: client + - containerPort: 16379 + name: gossip + command: ["/conf/update-node.sh", "redis-server", "/conf/redis.conf"] + env: + - name: POD_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + volumeMounts: + - name: conf + mountPath: /conf + readOnly: false + - name: data + mountPath: /data + readOnly: false + volumes: + - name: conf + configMap: + name: redis-cluster + defaultMode: 0755 + volumeClaimTemplates: + - metadata: + name: data + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: "hostpath" + resources: + requests: + storage: 50Mi +--- +apiVersion: v1 +kind: Service +metadata: + name: redis-cluster +spec: + type: ClusterIP + ports: + - port: 6379 + targetPort: 6379 + name: client + - port: 16379 + targetPort: 16379 + name: gossip + selector: + app: redis-cluster \ No newline at end of file