Scripts for deploying clearwater on kubernetes-cluster (with loadbalancer) 43/38643/4
authorAakashKT <aakash.kt@research.iiit.ac.in>
Wed, 2 Aug 2017 18:14:30 +0000 (23:44 +0530)
committerAakashKT <aakash.kt@research.iiit.ac.in>
Wed, 2 Aug 2017 18:40:39 +0000 (00:10 +0530)
Change-Id: I3baca4c8ed73c8154ee2627fc62d81cb694c0726
Signed-off-by: Aakash KT <aakash.kt@research.iiit.ac.in>
juju/k8s/clearwater/deploy_clearwater_k8s.sh [new file with mode: 0644]
juju/k8s/clearwater/set_depl_files.py [new file with mode: 0644]

diff --git a/juju/k8s/clearwater/deploy_clearwater_k8s.sh b/juju/k8s/clearwater/deploy_clearwater_k8s.sh
new file mode 100644 (file)
index 0000000..695f508
--- /dev/null
@@ -0,0 +1,73 @@
+#!/bin/bash
+
+# Copyright 2017 Aakash KT <aakashkt0@gmail.com> <aakash.kt@research.iiit.ac.in>
+
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+
+#     http://www.apache.org/licenses/LICENSE-2.0
+
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+
+function setup_docker() {
+       echo "Installing docker..."
+       sudo apt-get install -y docker.io
+
+       sudo docker login --username="aakashkt" --password="joid123"
+}
+
+function setup_clearwater() {
+       echo "Preparing docker images..."
+
+       git clone --recursive https://github.com/Metaswitch/clearwater-docker.git
+       pushd clearwater-docker
+
+       for i in base astaire cassandra chronos bono ellis homer homestead ralf sprout
+       do
+               sudo docker build -t clearwater/$i $i
+       done
+
+       for i in base astaire cassandra chronos bono ellis homer homestead ralf sprout
+       do
+       sudo docker tag clearwater/$i:latest $1/$i:latest
+       sudo docker push $1/$i:latest
+       done
+
+       popd
+}
+
+function setup_k8s() {
+       echo "Preparing the k8s cluster..."
+       python set_depl_files.py $1 $2
+}
+
+function deploy() {
+       juju run --application kubeapi-load-balancer 'open-port 5060'
+
+       juju run --application kubernetes-master 'open-port 30080'
+       juju run --application kubernetes-worker 'open-port 30080'
+
+       sudo kubectl create -f clearwater-docker/kubernetes
+       echo "Done"
+}
+
+cp set_depl_files.py /tmp/
+pushd /tmp/
+
+juju run --application kubeapi-load-balancer 'unit-get public-address'
+load_balancer_ip=$?
+docker_repo="aakashkt"
+
+setup_docker
+setup_clearwater $docker_repo
+setup_k8s $docker_repo $load_balancer_ip
+deploy
+
+popd
\ No newline at end of file
diff --git a/juju/k8s/clearwater/set_depl_files.py b/juju/k8s/clearwater/set_depl_files.py
new file mode 100644 (file)
index 0000000..784ad5e
--- /dev/null
@@ -0,0 +1,62 @@
+'''
+Copyright 2017 Aakash KT <aakashkt0@gmail.com> <aakash.kt@research.iiit.ac.in>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+'''
+
+import yaml
+import sys
+import os
+
+files = ["astaire", "bono", "cassandra", "chronos", "ellis", "etcd", "homer", "homestead",
+            "ralf", "sprout"];
+
+try:
+    repo = sys.argv[1];
+    load_balancer_ip = sys.argv[2];
+except:
+    print "Usage : python set_depl_files.py <repository_name> <load_balancer_ip>";
+    sys.exit(0);
+
+for f in files:
+
+    fp = file("clearwater-docker/kubernetes/%s-depl.yaml"%f, "r+");
+    yaml_fp = yaml.load(fp);
+
+    yaml_fp["spec"]["template"]["spec"]["containers"][0]["image"] = "%s/%s:latest" % (repo, f);
+
+    fp.truncate(0);
+    fp.seek(0, 0);
+    fp.write(yaml.dump(yaml_fp));
+    fp.close();
+
+fp = file("clearwater-docker/kubernetes/bono-depl.yaml", "r+");
+bono_fp = yaml.load(fp);
+bono_depl_env = bono_fp["spec"]["template"]["spec"]["containers"][0]["env"];
+
+for item in bono_depl_env:
+    if item["name"] == "PUBLIC_IP":
+        item["value"] = load_balancer_ip;
+
+fp.truncate(0);
+fp.seek(0, 0);
+fp.write(yaml.dump(bono_fp));
+fp.close();
+
+fp = file("clearwater-docker/kubernetes/bono-svc.yaml", "r+");
+bono_fp = yaml.load(fp);
+bono_fp["spec"]["loadBalancerIP"] = load_balancer_ip;
+fp.truncate(0);
+fp.seek(0, 0);
+fp.write(yaml.dump(bono_fp));
+fp.close();
\ No newline at end of file