From de25c0aa640d9969a62cb6a985e953bca04fcb0a Mon Sep 17 00:00:00 2001 From: Antmanler Date: Wed, 4 Feb 2015 12:35:13 +0800 Subject: [PATCH] Add an example for running rethinkdb cluster on k8s --- examples/rethinkdb/.DS_Store | Bin 0 -> 6148 bytes examples/rethinkdb/README.md | 106 +++++++++++++++++++++++++ examples/rethinkdb/admin-pod.yaml | 30 +++++++ examples/rethinkdb/admin-service.yaml | 11 +++ examples/rethinkdb/driver-service.yaml | 10 +++ examples/rethinkdb/gen-pod.sh | 58 ++++++++++++++ examples/rethinkdb/image/Dockerfile | 14 ++++ examples/rethinkdb/image/run.sh | 23 ++++++ examples/rethinkdb/rc.yaml | 36 +++++++++ 9 files changed, 288 insertions(+) create mode 100644 examples/rethinkdb/.DS_Store create mode 100644 examples/rethinkdb/README.md create mode 100644 examples/rethinkdb/admin-pod.yaml create mode 100644 examples/rethinkdb/admin-service.yaml create mode 100644 examples/rethinkdb/driver-service.yaml create mode 100755 examples/rethinkdb/gen-pod.sh create mode 100644 examples/rethinkdb/image/Dockerfile create mode 100644 examples/rethinkdb/image/run.sh create mode 100644 examples/rethinkdb/rc.yaml diff --git a/examples/rethinkdb/.DS_Store b/examples/rethinkdb/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..92dcb092c3a1cee0f6036b3875d29f5d89184866 GIT binary patch literal 6148 zcmeHKJ5Iz<474FgE75F8`L3`xh*qJb$^}3hv>*{>3${mp&3v~Xnx;EG??hhT-&#L%!tICdhuy=&^vQ~o8K?jipaN8Y3j9L_(6h}}mw}8_ zfC^B7F9q!TP~e7j;uz?k4g?UBNdpe&q-WS0V?pP6ws<^n=M`` zd+Xxmtk)L!E&S6^>*WaEih + +RUN apt-get update && \ + apt-get install -yq curl && \ + rm -rf /var/cache/apt/* && rm -rf /var/lib/apt/lists/* && \ + curl -L http://stedolan.github.io/jq/download/linux64/jq > /usr/bin/jq && \ + chmod u+x /usr/bin/jq + +COPY ./run.sh /usr/bin/run.sh +RUN chmod u+x /usr/bin/run.sh + +CMD ["/usr/bin/run.sh"] diff --git a/examples/rethinkdb/image/run.sh b/examples/rethinkdb/image/run.sh new file mode 100644 index 00000000000..deccf97770e --- /dev/null +++ b/examples/rethinkdb/image/run.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +set -o pipefail + +IP="" +if [[ -n "${KUBERNETES_RO_SERVICE_HOST}" ]]; then + + : ${NAMESPACE:=rethinkdb} + # try to pick up first different ip from endpoints + MYHOST=$(ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1 -d'/') + URL="${KUBERNETES_RO_SERVICE_HOST}/api/v1beta1/endpoints/rethinkdb-driver?namespace=${NAMESPACE}" + IP=$(curl -s ${URL} | jq -s -r --arg h "${MYHOST}" '.[0].endpoints | [ .[]? | split(":") ] | map(select(.[0] != $h)) | .[0][0]') || exit 1 + [[ "${IP}" == null ]] && IP="" +fi + +if [[ -n "${IP}" ]]; then + ENDPOINT="${IP}:29015" + echo "Join to ${ENDPOINT}" + exec rethinkdb --bind all --join ${ENDPOINT} +else + echo "Start single instance" + exec rethinkdb --bind all +fi diff --git a/examples/rethinkdb/rc.yaml b/examples/rethinkdb/rc.yaml new file mode 100644 index 00000000000..378bc8df035 --- /dev/null +++ b/examples/rethinkdb/rc.yaml @@ -0,0 +1,36 @@ +apiVersion: v1beta1 +namespace: rethinkdb +kind: ReplicationController +id: rethinkdb-rc-1.16.0 +labels: + db: rethinkdb +desiredState: + replicas: 1 + replicaSelector: + db: rethinkdb + role: replicas + podTemplate: + labels: + db: rethinkdb + role: replicas + desiredState: + manifest: + version: v1beta1 + id: rethinkdb + containers: + - name: rethinkdb + image: antmanler/rethinkdb:1.16.0 + ports: + - name: admin-port + containerPort: 8080 + - name: driver-port + containerPort: 28015 + - name: cluster-port + containerPort: 29015 + volumeMounts: + - name: rethinkdb-storage + mountPath: /data/rethinkdb_data + volumes: + - name: rethinkdb-storage + source: + emptyDir: {}