diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | src/vagrant/kubeadm_istio/Vagrantfile | 29 | ||||
-rwxr-xr-x | src/vagrant/kubeadm_istio/deploy.sh | 12 | ||||
-rw-r--r-- | src/vagrant/kubeadm_istio/host_setup.sh | 29 | ||||
-rwxr-xr-x | src/vagrant/kubeadm_istio/istio/bookinfo.sh | 41 | ||||
-rwxr-xr-x | src/vagrant/kubeadm_istio/istio/clean_bookinfo.sh | 27 | ||||
-rwxr-xr-x | src/vagrant/kubeadm_istio/istio/deploy.sh | 39 | ||||
-rw-r--r-- | src/vagrant/kubeadm_istio/master_setup.sh | 10 | ||||
-rw-r--r-- | src/vagrant/kubeadm_istio/worker_setup.sh | 4 |
9 files changed, 192 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a977916 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.vagrant/ diff --git a/src/vagrant/kubeadm_istio/Vagrantfile b/src/vagrant/kubeadm_istio/Vagrantfile new file mode 100644 index 0000000..9f78e9f --- /dev/null +++ b/src/vagrant/kubeadm_istio/Vagrantfile @@ -0,0 +1,29 @@ +$num_workers=2 + +Vagrant.require_version ">= 1.8.6" +Vagrant.configure("2") do |config| + + config.vm.box = "ceph/ubuntu-xenial" + config.vm.provider :libvirt do |libvirt| + libvirt.memory = 4096 + libvirt.cpus = 4 + end + + config.vm.synced_folder "../..", "/src" + config.vm.provision "shell", path: "host_setup.sh", privileged: false + + config.vm.define "master" do |config| + config.vm.hostname = "master" + config.vm.provision "shell", path: "master_setup.sh", privileged: false + config.vm.network :private_network, ip: "192.168.1.10" + end + + (1 .. $num_workers).each do |i| + config.vm.define vm_name = "worker%d" % [i] do |config| + config.vm.hostname = vm_name + config.vm.provision "shell", path: "worker_setup.sh", privileged: false + config.vm.network :private_network, ip: "192.168.1.#{i+20}" + end + end + +end diff --git a/src/vagrant/kubeadm_istio/deploy.sh b/src/vagrant/kubeadm_istio/deploy.sh new file mode 100755 index 0000000..d947645 --- /dev/null +++ b/src/vagrant/kubeadm_istio/deploy.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +set -ex +DIR="$(dirname `readlink -f $0`)" + +cd $DIR +../cleanup.sh +vagrant up +vagrant ssh master -c "/vagrant/istio/deploy.sh" +vagrant ssh master -c "/vagrant/istio/bookinfo.sh" +vagrant ssh master -c "/vagrant/istio/clean_bookinfo.sh" + diff --git a/src/vagrant/kubeadm_istio/host_setup.sh b/src/vagrant/kubeadm_istio/host_setup.sh new file mode 100644 index 0000000..c1a23eb --- /dev/null +++ b/src/vagrant/kubeadm_istio/host_setup.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +set -ex + +cat << EOF | sudo tee /etc/hosts +127.0.0.1 localhost +192.168.1.10 master +192.168.1.21 worker1 +192.168.1.22 worker2 +192.168.1.23 worker3 +EOF + +sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D +sudo apt-key adv -k 58118E89F3A912897C070ADBF76221572C52609D +cat << EOF | sudo tee /etc/apt/sources.list.d/docker.list +deb [arch=amd64] https://apt.dockerproject.org/repo ubuntu-xenial main +EOF + +curl -s http://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - +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.9.1-00 kubeadm=1.9.1-00 kubectl=1.9.1-00 kubernetes-cni=0.6.0-00 + +sudo swapoff -a +sudo systemctl daemon-reload +sudo systemctl stop kubelet +sudo systemctl start kubelet diff --git a/src/vagrant/kubeadm_istio/istio/bookinfo.sh b/src/vagrant/kubeadm_istio/istio/bookinfo.sh new file mode 100755 index 0000000..b61ea4e --- /dev/null +++ b/src/vagrant/kubeadm_istio/istio/bookinfo.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# +# Copyright (c) 2018 Huawei Technologies Canada Co., Ltd. +# +# 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 + +cd /vagrant/istio-source/ +export PATH=$PWD/bin:$PATH + +# Run the test application: bookinfo +kubectl apply -f <(istioctl kube-inject -f samples/bookinfo/kube/bookinfo.yaml) + +# Wait for bookinfo deployed +kubectl get services +kubectl get pods + +r="0" +while [ $r -ne "6" ] +do + kubectl get pods + r=$(kubectl get pods | grep Running | wc -l) + sleep 60 +done + +# Validate the bookinfo app +export GATEWAY_URL=$(kubectl get po -l istio=ingress -n istio-system -o 'jsonpath={.items[0].status.hostIP}'):$(kubectl get svc istio-ingress -n istio-system -o 'jsonpath={.spec.ports[0].nodePort}') +curl -o /dev/null -s -w "%{http_code}\n" http://${GATEWAY_URL}/productpage + diff --git a/src/vagrant/kubeadm_istio/istio/clean_bookinfo.sh b/src/vagrant/kubeadm_istio/istio/clean_bookinfo.sh new file mode 100755 index 0000000..b5bfc08 --- /dev/null +++ b/src/vagrant/kubeadm_istio/istio/clean_bookinfo.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# +# Copyright (c) 2018 Huawei Technologies Canada Co., Ltd. +# +# 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 + +cd /vagrant/istio-source/ +export PATH=$PWD/bin:$PATH + +# Clean up bookinfo +samples/bookinfo/kube/cleanup.sh + +istioctl get routerules +kubectl get pods diff --git a/src/vagrant/kubeadm_istio/istio/deploy.sh b/src/vagrant/kubeadm_istio/istio/deploy.sh new file mode 100755 index 0000000..6e2e7ce --- /dev/null +++ b/src/vagrant/kubeadm_istio/istio/deploy.sh @@ -0,0 +1,39 @@ +#!/bin/bash +# +# Copyright (c) 2018 Huawei Technologies Canada Co., Ltd. +# +# 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 + +# Deploy istio 0.4.0 +cd /vagrant +curl -L https://git.io/getLatestIstio | sh - +mv istio-0.4.0 istio-source +cd /vagrant/istio-source/ +export PATH=$PWD/bin:$PATH +kubectl apply -f install/kubernetes/istio.yaml + +# Validate the installation +kubectl get svc -n istio-system +kubectl get pods -n istio-system + +r="0" +while [ $r -ne "4" ] +do + kubectl get pods -n istio-system + r=$(kubectl get pods -n istio-system | grep Running | wc -l) + sleep 60 +done + diff --git a/src/vagrant/kubeadm_istio/master_setup.sh b/src/vagrant/kubeadm_istio/master_setup.sh new file mode 100644 index 0000000..b181582 --- /dev/null +++ b/src/vagrant/kubeadm_istio/master_setup.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +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 +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 diff --git a/src/vagrant/kubeadm_istio/worker_setup.sh b/src/vagrant/kubeadm_istio/worker_setup.sh new file mode 100644 index 0000000..74e4178 --- /dev/null +++ b/src/vagrant/kubeadm_istio/worker_setup.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +set -ex +sudo kubeadm join --discovery-token-unsafe-skip-ca-verification --token 8c5adc.1cec8dbf339093f0 192.168.1.10:6443 || true |