Clearwater implementation for OPNFV 67/50467/12
authorLaura Sofia Enriquez <lsofia.enriquez@gmail.com>
Fri, 12 Jan 2018 05:10:16 +0000 (02:10 -0300)
committerLaura Sofia Enriquez <lsofia.enriquez@gmail.com>
Sun, 25 Feb 2018 05:02:32 +0000 (02:02 -0300)
K8S version 1.9

Clearwater deployment from source code using k8s v1.9.
Tests added.

Change-Id: Ifde573768721871b441ecb06a60ac25c0519b73d
Signed-off-by: Laura Sofia Enriquez <lsofia.enriquez@gmail.com>
src/vagrant/kubeadm_clearwater/Vagrantfile
src/vagrant/kubeadm_clearwater/clearwater_setup.sh [moved from src/vagrant/kubeadm_clearwater/examples/create_and_apply.sh with 51% similarity]
src/vagrant/kubeadm_clearwater/custom-bono-svc/bono-svc.yaml [new file with mode: 0644]
src/vagrant/kubeadm_clearwater/deploy.sh
src/vagrant/kubeadm_clearwater/host_setup.sh
src/vagrant/kubeadm_clearwater/master_setup.sh
src/vagrant/kubeadm_clearwater/tests/clearwater-live-test.sh [new file with mode: 0755]
src/vagrant/kubeadm_clearwater/worker_setup.sh

index 9320074..3ed02d5 100644 (file)
@@ -5,7 +5,7 @@ Vagrant.configure("2") do |config|
 
   config.vm.box = "ceph/ubuntu-xenial"
   config.vm.provider :libvirt do |libvirt|
-    libvirt.memory = 4096
+    libvirt.memory = 8192
     libvirt.cpus = 4
   end
 
 
 set -ex
 
+static_ip=$(ifconfig eth0 | grep "inet addr" | cut -d ':' -f 2 | cut -d ' ' -f 1)
+echo "STATIC_IP is $static_ip."
+
 git clone --recursive https://github.com/Metaswitch/clearwater-docker.git
 
 # Set the configmaps
-kubectl create configmap env-vars --from-literal=ZONE=default.svc.cluster.local --from-literal=ADDITIONAL_SHARED_CONFIG=hss_hostname=hss.example.com\\nhss_realm=example.com
+kubectl create configmap env-vars --from-literal=ZONE=default.svc.cluster.local
 
-# Genereta the yamls
+# Generate the yamls
 cd clearwater-docker/kubernetes/
-#./k8s-gencfg --image_path=<path to your repo> --image_tag=<tag for the images you want to use>
 ./k8s-gencfg --image_path=enriquetaso --image_tag=latest
 
+# Expose Ellis
+# The Ellis provisioning interface can then be accessed on static_ip:30080
+cat ellis-svc.yaml | sed "s/clusterIP: None/type: NodePort/" > ellis-svc.yaml.new
+cat ellis-svc.yaml.new | sed "s/port: 80/port: 80\n    nodePort: 30080/" > ellis-svc.yaml
+rm ellis-svc.yaml.new
+
+# Bono configuration
+# Have a static external IP address available that the load balancer can use
+cp /vagrant/custom-bono-svc/bono-svc.yaml .
+sed -ie "6s/$/\n  - $static_ip/" bono-svc.yaml
+sed -ie "7s/$/\n  loadBalancerIP: $static_ip/" bono-svc.yaml
 
-# Apply yamls
 cd
 kubectl apply -f clearwater-docker/kubernetes
 kubectl get nodes
 kubectl get services
 kubectl get pods
 kubectl get rc
+sleep 60
+
+r="1"
+while [ $r != "0" ]
+do
+    kubectl get pods
+    r=$( kubectl get pods | grep Pending | wc -l)
+    sleep 60
+done
 
-r="0"
-while [ $r != "13" ]
+q="1"
+while [ $q != "0" ]
 do
-   r=$(kubectl get pods | grep Running | wc -l)
-   sleep 60
+    kubectl get pods
+    q=$( kubectl get pods | grep ContainerCreating | wc -l)
+    sleep 60
 done
diff --git a/src/vagrant/kubeadm_clearwater/custom-bono-svc/bono-svc.yaml b/src/vagrant/kubeadm_clearwater/custom-bono-svc/bono-svc.yaml
new file mode 100644 (file)
index 0000000..9280b0f
--- /dev/null
@@ -0,0 +1,25 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: bono
+spec:
+  externalIPs:
+  ports:
+  - name: "3478"
+    port: 3478
+    protocol: TCP
+    targetPort: 3478
+  - name: "5060"
+    port: 5060
+    protocol: TCP
+    targetPort: 5060
+  - name: "5062"
+    port: 5062
+    protocol: TCP
+    targetPort: 5062
+  selector:
+    service: bono
+  sessionAffinity: None
+  type: ClusterIP
+status:
+  loadBalancer: {}
index 844a750..54644a3 100755 (executable)
@@ -6,4 +6,7 @@ DIR="$(dirname `readlink -f $0`)"
 cd $DIR
 ../cleanup.sh
 vagrant up
-vagrant ssh master -c "/vagrant/examples/create_and_apply.sh"
+vagrant ssh master -c "/vagrant/clearwater_setup.sh"
+
+# Run tests
+vagrant ssh master -c "/vagrant/tests/clearwater-live-test.sh"
index b86a618..c1a23eb 100644 (file)
@@ -21,9 +21,9 @@ cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
 deb http://apt.kubernetes.io/ kubernetes-xenial main
 EOF
 sudo apt-get update
-sudo apt-get install -y --allow-downgrades docker-engine=1.12.6-0~ubuntu-xenial kubelet=1.7.0-00 kubeadm=1.7.0-00 kubectl=1.7.0-00 kubernetes-cni=0.5.1-00
+sudo apt-get install -y --allow-downgrades docker-engine=1.12.6-0~ubuntu-xenial kubelet=1.9.1-00 kubeadm=1.9.1-00 kubectl=1.9.1-00 kubernetes-cni=0.6.0-00
 
-sudo rm -rf /var/lib/kubelet
-sudo systemctl stop kubelet
+sudo swapoff -a
 sudo systemctl daemon-reload
+sudo systemctl stop kubelet
 sudo systemctl start kubelet
index 7fa2ad8..b181582 100644 (file)
@@ -3,11 +3,8 @@
 set -ex
 
 sudo kubeadm init --apiserver-advertise-address=192.168.1.10  --service-cidr=10.96.0.0/16 --pod-network-cidr=10.32.0.0/12 --token 8c5adc.1cec8dbf339093f0
-sudo cp /etc/kubernetes/admin.conf $HOME/
-sudo chown $(id -u):$(id -g) $HOME/admin.conf
-export KUBECONFIG=$HOME/admin.conf
-echo "export KUBECONFIG=$HOME/admin.conf" >> $HOME/.bash_profile
+mkdir ~/.kube
+sudo cp /etc/kubernetes/admin.conf $HOME/.kube/config
+sudo chown $(id -u):$(id -g) $HOME/.kube/config
 
 kubectl apply -f http://git.io/weave-kube-1.6
-#kubectl apply -f http://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
-#kubectl apply -f http://docs.projectcalico.org/v2.1/getting-started/kubernetes/installation/hosted/kubeadm/1.6/calico.yaml
diff --git a/src/vagrant/kubeadm_clearwater/tests/clearwater-live-test.sh b/src/vagrant/kubeadm_clearwater/tests/clearwater-live-test.sh
new file mode 100755 (executable)
index 0000000..6e5238e
--- /dev/null
@@ -0,0 +1,46 @@
+#!/bin/bash
+#
+# Copyright (c) 2017 Intel Corporation
+#
+# 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.
+#
+
+set -ex
+
+# http://clearwater.readthedocs.io/en/latest/Running_the_live_tests.html
+sudo apt-get install build-essential bundler git --yes
+sudo apt install gnupg2 --yes
+gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
+curl -L https://get.rvm.io | bash -s stable
+
+source ~/.rvm/scripts/rvm
+rvm autolibs enable
+rvm install 1.9.3
+rvm use 1.9.3
+
+
+# Setup ruby and gems
+git clone https://github.com/Metaswitch/clearwater-live-test.git
+cd clearwater-live-test/
+cd quaff/ && git clone https://github.com/Metaswitch/quaff.git
+cd ..
+bundle install
+
+# Get Ellis ip
+ellisip=$(kubectl get services ellis  -o json | grep clusterIP | cut -f4 -d'"')
+
+# Get Ellis ip
+bonoip=$(kubectl get services bono  -o json | grep clusterIP | cut -f4 -d'"')
+
+# Run the tests
+rake test[default.svc.cluster.local] SIGNUP_CODE=secret PROXY=$bonoip ELLIS=$ellisip
index b68d800..74e4178 100644 (file)
@@ -1,4 +1,4 @@
 #!/bin/bash
 
 set -ex
-sudo kubeadm join --token 8c5adc.1cec8dbf339093f0 192.168.1.10:6443 || true
+sudo kubeadm join --discovery-token-unsafe-skip-ca-verification --token 8c5adc.1cec8dbf339093f0 192.168.1.10:6443 || true