summaryrefslogtreecommitdiffstats
path: root/src/vagrant/kubeadm_istio
diff options
context:
space:
mode:
Diffstat (limited to 'src/vagrant/kubeadm_istio')
-rw-r--r--src/vagrant/kubeadm_istio/host_setup.sh2
-rwxr-xr-xsrc/vagrant/kubeadm_istio/istio/bookinfo.sh7
-rwxr-xr-xsrc/vagrant/kubeadm_istio/istio/clean_bookinfo.sh2
-rwxr-xr-xsrc/vagrant/kubeadm_istio/istio/deploy.sh29
-rw-r--r--src/vagrant/kubeadm_istio/master_setup.sh23
5 files changed, 51 insertions, 12 deletions
diff --git a/src/vagrant/kubeadm_istio/host_setup.sh b/src/vagrant/kubeadm_istio/host_setup.sh
index c1a23eb..524a967 100644
--- a/src/vagrant/kubeadm_istio/host_setup.sh
+++ b/src/vagrant/kubeadm_istio/host_setup.sh
@@ -21,7 +21,7 @@ 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 apt-get install -y --allow-unauthenticated --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
diff --git a/src/vagrant/kubeadm_istio/istio/bookinfo.sh b/src/vagrant/kubeadm_istio/istio/bookinfo.sh
index b61ea4e..ad8c120 100755
--- a/src/vagrant/kubeadm_istio/istio/bookinfo.sh
+++ b/src/vagrant/kubeadm_istio/istio/bookinfo.sh
@@ -23,6 +23,9 @@ export PATH=$PWD/bin:$PATH
# Run the test application: bookinfo
kubectl apply -f <(istioctl kube-inject -f samples/bookinfo/kube/bookinfo.yaml)
+# Define the ingress gateway for the application
+istioctl create -f samples/bookinfo/routing/bookinfo-gateway.yaml
+
# Wait for bookinfo deployed
kubectl get services
kubectl get pods
@@ -30,12 +33,12 @@ kubectl get pods
r="0"
while [ $r -ne "6" ]
do
+ sleep 30
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}')
+export GATEWAY_URL=$(kubectl get po -l istio=ingressgateway -n istio-system -o 'jsonpath={.items[0].status.hostIP}'):$(kubectl get svc istio-ingressgateway -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
index b5bfc08..ede825f 100755
--- a/src/vagrant/kubeadm_istio/istio/clean_bookinfo.sh
+++ b/src/vagrant/kubeadm_istio/istio/clean_bookinfo.sh
@@ -21,7 +21,7 @@ cd /vagrant/istio-source/
export PATH=$PWD/bin:$PATH
# Clean up bookinfo
-samples/bookinfo/kube/cleanup.sh
+echo "" | 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
index ed873f5..84af41b 100755
--- a/src/vagrant/kubeadm_istio/istio/deploy.sh
+++ b/src/vagrant/kubeadm_istio/istio/deploy.sh
@@ -17,23 +17,36 @@
set -ex
-# Deploy istio 0.4.0
+# Get latest istio version, refer: https://git.io/getLatestIstio
+if [ "x${ISTIO_VERSION}" = "x" ] ; then
+ ISTIO_VERSION=$(curl -L -s https://api.github.com/repos/istio/istio/releases/latest | \
+ grep tag_name | sed "s/ *\"tag_name\": *\"\(.*\)\",*/\1/")
+fi
+
+ISTIO_DIR_NAME="istio-$ISTIO_VERSION"
+
cd /vagrant
curl -L https://git.io/getLatestIstio | sh -
-mv istio-0.4.0 istio-source
+mv $ISTIO_DIR_NAME istio-source
cd /vagrant/istio-source/
-export PATH=$PWD/bin:$PATH
-kubectl apply -f install/kubernetes/istio.yaml
+
+# Persistently append istioctl bin path to PATH env
+echo 'export PATH="$PATH:/vagrant/istio-source/bin"' >> ~/.bashrc
+echo "source <(kubectl completion bash)" >> ~/.bashrc
+source ~/.bashrc
+
+kubectl apply -f install/kubernetes/istio-demo.yaml
# Validate the installation
kubectl get svc -n istio-system
kubectl get pods -n istio-system
+kubectl get namespace -L istio-injection
-r="0"
-while [ $r -ne "4" ]
+r="1"
+while [ $r -ne "0" ]
do
+ sleep 30
kubectl get pods -n istio-system
- r=$(kubectl get pods -n istio-system | grep Running | wc -l)
- sleep 60
+ r=$(kubectl get pods -n istio-system | egrep -v 'NAME|Running' | wc -l)
done
diff --git a/src/vagrant/kubeadm_istio/master_setup.sh b/src/vagrant/kubeadm_istio/master_setup.sh
index b181582..f308244 100644
--- a/src/vagrant/kubeadm_istio/master_setup.sh
+++ b/src/vagrant/kubeadm_istio/master_setup.sh
@@ -2,9 +2,32 @@
set -ex
+ADMISSION_CONTROL="Initializers,NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,NodeRestriction,ResourceQuota"
+KUBE_APISERVER_CONF="/etc/kubernetes/manifests/kube-apiserver.yaml"
+
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
+
+# Enable mutating webhook admission controller
+# kube-apiserver will be automatically restarted by kubelet when its manifest file update.
+# https://istio.io/docs/setup/kubernetes/sidecar-injection.html
+sudo sed -i "s/admission-control=.*/admission-control=$ADMISSION_CONTROL/g" $KUBE_APISERVER_CONF
+
+set +e
+# wait for kube-apiserver restart
+r="1"
+while [ $r -ne "0" ]
+do
+ sleep 2
+ kubectl version > /dev/null
+ r=$?
+done
+set -e
+
+# check if admissionregistration.k8s.io/v1beta1 API is enabled
+kubectl api-versions | grep admissionregistration
+