From 611b9de869f9ac9ca9ab055882687f0d9a8b800c Mon Sep 17 00:00:00 2001 From: AakashKT Date: Wed, 2 Aug 2017 23:44:30 +0530 Subject: Scripts for deploying clearwater on kubernetes-cluster (with loadbalancer) Change-Id: I3baca4c8ed73c8154ee2627fc62d81cb694c0726 Signed-off-by: Aakash KT --- juju/k8s/clearwater/deploy_clearwater_k8s.sh | 73 ++++++++++++++++++++++++++++ juju/k8s/clearwater/set_depl_files.py | 62 +++++++++++++++++++++++ 2 files changed, 135 insertions(+) create mode 100644 juju/k8s/clearwater/deploy_clearwater_k8s.sh create mode 100644 juju/k8s/clearwater/set_depl_files.py (limited to 'juju') diff --git a/juju/k8s/clearwater/deploy_clearwater_k8s.sh b/juju/k8s/clearwater/deploy_clearwater_k8s.sh new file mode 100644 index 00000000..695f5083 --- /dev/null +++ b/juju/k8s/clearwater/deploy_clearwater_k8s.sh @@ -0,0 +1,73 @@ +#!/bin/bash + +# Copyright 2017 Aakash KT + +# 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 index 00000000..784ad5e3 --- /dev/null +++ b/juju/k8s/clearwater/set_depl_files.py @@ -0,0 +1,62 @@ +''' +Copyright 2017 Aakash KT + +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 "; + 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 -- cgit 1.2.3-korg