You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwhisk.apache.org by ra...@apache.org on 2017/11/29 15:44:03 UTC

[incubator-openwhisk-deploy-kube] branch master updated: travis changes: use minikube and adjust sleep times (#94)

This is an automated email from the ASF dual-hosted git repository.

rabbah pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-openwhisk-deploy-kube.git


The following commit(s) were added to refs/heads/master by this push:
     new 9244a0e  travis changes: use minikube and adjust sleep times (#94)
9244a0e is described below

commit 9244a0e2f3b2811655e134be8dbae1b1bb568ffe
Author: David Grove <dg...@users.noreply.github.com>
AuthorDate: Wed Nov 29 10:43:59 2017 -0500

    travis changes: use minikube and adjust sleep times (#94)
    
    1. Use minikube with --vm-driver=none instead of building hacked kubernetes
    2. Upgrade kubernetes version from 1.6.2 to 1.7.4.
    3. Reduce sleep interval in health check loops to cut build latency
    4. Increase sleep time after creating nginx config map and secrets
       to try to reduce frequency of failures when deploying nginx.yml.
    5. Add high-level progress messages during deployment steps
---
 .travis.yml           |  4 +--
 tools/travis/build.sh | 25 ++++++++++++------
 tools/travis/setup.sh | 71 ++++++++++++++++-----------------------------------
 3 files changed, 41 insertions(+), 59 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index c56e3a2..d120ba6 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,8 +1,8 @@
 sudo: required
 env:
   global:
-  - TRAVIS_KUBE_VERSION=v1.6.2
-  - TRAVIS_ETCD_VERSION=v3.0.17
+  - TRAVIS_KUBE_VERSION=v1.7.4
+  - TRAVIS_MINIKUBE_VERSION=v0.23.0
   - secure: d7CuMXbhT83W2x78qiLwgogX1+3aPicd1PlTwwNNDN6QSkImbxareyKThnsqlHIiNj3o5l5DBuiYjy7wrF/xD1g8BQMmTwm99DRx5q3CI3Im3VCi/ZK8SaNjuOy24d7cf5k2tB/87Gk7zmKsMDYm+fpCl+GpgUmIEeIwthiAxuXSDWZ8eQPIptmxj56DeFRNouvXG+dEUtBfWiwN27UPxNKExCixFnegmdtffLbz6hhst7BHr5Ry9acbycre98PCwWZcu9lxFs+SJ1kvnzX2iue4otmDkF1WkJjxaOFPJVs/D3YItg+neLCSxjwBskPed+Fct8bOjcM/uVROJPNIq5icBmaPX2isH0lvtxOeVw/dmioWYXYPN9ygBOe4eO/vtPllN0bcAUo5xl9jXev8ciAozYrYpHVh9Fplfd81rcYTeYzALmRJBdoiWoc3KQGzwGc9sB1ffmy+KWgG9T0zbnS4fALSR4PS [...]
   - secure: CJtnU94HTDqd4A6uvhFl8IpnmU+wTdlzb8bPBFUl/lI/VKXiRrYpgJdKUro5xEoxFKuqMprLhbyf66niyWLTIeogjUAEu/h/o2dBVeGgSGKoqC0hQgqvnxKFeGlzFJ0XuEs3vbStJGRnQszGsfnnDrscJtR0x9X+1w4aBKI7iPyyuFtVkDD1UsmBbSi+M8FTeq7G7A0reMDaey7uog3CFCpIMl4geshcohQEcKEGbnXQZoLPFpb7cBOE83VXBJ7Y7Dgf/U4keiLovvnuJThGKZm/SVV2KlELmBmtmbx3rMT6Vb5k9ChSdRWapromNnnzmJBIQ5Scc2mwV3A93/SMha1F3IlYpDKs5djfTw8jZfVnuiou7HhTaRjHkmmcwP12/k30gLe2kw0Vezg1TCY4zgtOpcmCxc8RHEy0ceA74rKvRi8LbexTCwX+iAMQFn/pSrh/OqAq/50JbLyczcoO1zXWS38txUQN [...]
 services:
diff --git a/tools/travis/build.sh b/tools/travis/build.sh
index 5d117e6..147d0ab 100755
--- a/tools/travis/build.sh
+++ b/tools/travis/build.sh
@@ -7,6 +7,7 @@ ROOTDIR="$SCRIPTDIR/../../"
 
 cd $ROOTDIR
 
+echo "Creating openwhisk namespace"
 kubectl apply -f configure/openwhisk_kube_namespace.yml
 
 couchdbHealthCheck () {
@@ -16,13 +17,13 @@ couchdbHealthCheck () {
 
   PASSED=false
   TIMEOUT=0
-  until [ $TIMEOUT -eq 25 ]; do
+  until [ $TIMEOUT -eq 30 ]; do
     if [ -n "$(kubectl -n openwhisk logs $POD_NAME | grep "successfully setup and configured CouchDB v2.0")" ]; then
       break
     fi
 
     let TIMEOUT=TIMEOUT+1
-    sleep 30
+    sleep 10
   done
 
   if [ $TIMEOUT -eq 25 ]; then
@@ -43,7 +44,7 @@ deploymentHealthCheck () {
 
   PASSED=false
   TIMEOUT=0
-  until $PASSED || [ $TIMEOUT -eq 25 ]; do
+  until $PASSED || [ $TIMEOUT -eq 30 ]; do
     KUBE_DEPLOY_STATUS=$(kubectl -n openwhisk get pods -o wide | grep "$1" | awk '{print $3}')
     if [ "$KUBE_DEPLOY_STATUS" == "Running" ]; then
       PASSED=true
@@ -53,7 +54,7 @@ deploymentHealthCheck () {
     kubectl get pods --all-namespaces -o wide --show-all
 
     let TIMEOUT=TIMEOUT+1
-    sleep 30
+    sleep 10
   done
 
   if [ "$PASSED" = false ]; then
@@ -74,7 +75,7 @@ statefulsetHealthCheck () {
 
   PASSED=false
   TIMEOUT=0
-  until $PASSED || [ $TIMEOUT -eq 25 ]; do
+  until $PASSED || [ $TIMEOUT -eq 30 ]; do
     KUBE_DEPLOY_STATUS=$(kubectl -n openwhisk get pods -o wide | grep "$1"-0 | awk '{print $3}')
     if [ "$KUBE_DEPLOY_STATUS" == "Running" ]; then
       PASSED=true
@@ -84,7 +85,7 @@ statefulsetHealthCheck () {
     kubectl get pods --all-namespaces -o wide --show-all
 
     let TIMEOUT=TIMEOUT+1
-    sleep 30
+    sleep 10
   done
 
   if [ "$PASSED" = false ]; then
@@ -99,6 +100,7 @@ statefulsetHealthCheck () {
 }
 
 # setup couchdb
+echo "Deploying couchdb"
 pushd kubernetes/couchdb
   kubectl apply -f couchdb.yml
 
@@ -106,13 +108,15 @@ pushd kubernetes/couchdb
 popd
 
 # setup redis
+echo "Deploying redis"
 pushd kubernetes/redis
   kubectl apply -f redis.yml
 
   deploymentHealthCheck "redis"
 popd
 
-# setup redis
+# setup apigateway
+echo "Deploying apigateway"
 pushd kubernetes/apigateway
   kubectl apply -f apigateway.yml
 
@@ -120,6 +124,7 @@ pushd kubernetes/apigateway
 popd
 
 # setup zookeeper
+echo "Deploying zookeeper"
 pushd kubernetes/zookeeper
   kubectl apply -f zookeeper.yml
 
@@ -127,6 +132,7 @@ pushd kubernetes/zookeeper
 popd
 
 # setup kafka
+echo "Deploying kafka"
 pushd kubernetes/kafka
   kubectl apply -f kafka.yml
 
@@ -134,6 +140,7 @@ pushd kubernetes/kafka
 popd
 
 # setup the controller
+echo "Deploying controller"
 pushd kubernetes/controller
   kubectl apply -f controller.yml
 
@@ -141,6 +148,7 @@ pushd kubernetes/controller
 popd
 
 # setup the invoker
+echo "Deploying invoker"
 pushd kubernetes/invoker
   kubectl apply -f invoker.yml
 
@@ -149,6 +157,7 @@ pushd kubernetes/invoker
 popd
 
 # setup nginx
+echo "Deploying nginx"
 pushd kubernetes/nginx
   ./certs.sh localhost
   kubectl -n openwhisk create configmap nginx --from-file=nginx.conf
@@ -156,7 +165,7 @@ pushd kubernetes/nginx
 
   # have seen this fail where nginx pod is applied but never created. Hard to know
   # why that is happening without having access to Kube component logs.
-  sleep 3
+  sleep 5
 
   kubectl apply -f nginx.yml
 
diff --git a/tools/travis/setup.sh b/tools/travis/setup.sh
index 6fdbc42..a4a2565 100755
--- a/tools/travis/setup.sh
+++ b/tools/travis/setup.sh
@@ -6,61 +6,34 @@ set -x
 # set docker0 to promiscuous mode
 sudo ip link set docker0 promisc on
 
-# install etcd
-wget https://github.com/coreos/etcd/releases/download/$TRAVIS_ETCD_VERSION/etcd-$TRAVIS_ETCD_VERSION-linux-amd64.tar.gz
-tar xzf etcd-$TRAVIS_ETCD_VERSION-linux-amd64.tar.gz
-sudo mv etcd-$TRAVIS_ETCD_VERSION-linux-amd64/etcd /usr/local/bin/etcd
-rm etcd-$TRAVIS_ETCD_VERSION-linux-amd64.tar.gz
-rm -rf etcd-$TRAVIS_ETCD_VERSION-linux-amd64
-
-# download kubectl
-wget https://storage.googleapis.com/kubernetes-release/release/$TRAVIS_KUBE_VERSION/bin/linux/amd64/kubectl
-chmod +x kubectl
-sudo mv kubectl /usr/local/bin/kubectl
-
-# download kubernetes
-git clone https://github.com/kubernetes/kubernetes $HOME/kubernetes
-
-# install cfssl
-go get -u github.com/cloudflare/cfssl/cmd/...
-
-pushd $HOME/kubernetes
-  git checkout $TRAVIS_KUBE_VERSION
-  kubectl config set-credentials myself --username=admin --password=admin
-  kubectl config set-context local --cluster=local --user=myself
-  kubectl config set-cluster local --server=http://localhost:8080
-  kubectl config use-context local
-
-  # start kubernetes in the background
-  sudo PATH=$PATH:/home/travis/.gimme/versions/go1.7.linux.amd64/bin/go \
-       KUBE_ENABLE_CLUSTER_DNS=true \
-       hack/local-up-cluster.sh &
-popd
-
-# Wait until kube is up and running
+# Download and install kubectl and minikube following the recipe in the minikube
+# project README.md for using minikube for Linux Continuous Integration with VM Support
+curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/$TRAVIS_KUBE_VERSION/bin/linux/amd64/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin
+curl -Lo minikube https://storage.googleapis.com/minikube/releases/$TRAVIS_MINIKUBE_VERSION/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin
+
+export MINIKUBE_WANTUPDATENOTIFICATION=false
+export MINIKUBE_WANTREPORTERRORPROMPT=false
+export MINIKUBE_HOME=$HOME
+export CHANGE_MINIKUBE_NONE_USER=true
+mkdir $HOME/.kube || true
+touch $HOME/.kube/config
+
+export KUBECONFIG=$HOME/.kube/config
+sudo -E /usr/local/bin/minikube start --vm-driver=none --kubernetes-version=$TRAVIS_KUBE_VERSION
+
+# Wait until kubectl can access the api server that Minikube has created
 TIMEOUT=0
-TIMEOUT_COUNT=40
-until $( curl --output /dev/null --silent http://localhost:8080 ) || [ $TIMEOUT -eq $TIMEOUT_COUNT ]; do
-  echo "Kube is not up yet"
+TIMEOUT_COUNT=60
+until $( /usr/local/bin/kubectl get po &> /dev/null ) || [ $TIMEOUT -eq $TIMEOUT_COUNT ]; do
+  echo "minikube is not up yet"
   let TIMEOUT=TIMEOUT+1
-  sleep 20
+  sleep 5
 done
 
 if [ $TIMEOUT -eq $TIMEOUT_COUNT ]; then
-  echo "Kubernetes is not up and running"
+  echo "Failed to start minikube"
   exit 1
 fi
 
-echo "Kubernetes is deployed and reachable"
-
-# Try and sleep before issuing chown. Currently, Kubernetes is started by
-# a command that is run in the background. Technically Kubernetes could be
-# up and running, but those files might not exist yet as the previous command
-# could create them after Kube starts successfully.
-sleep 5
-
-sudo chown -R $USER:$USER $HOME/.kube
+echo "minikube is deployed and reachable"
 
-# Have seen issues where chown does not instantly change file permissions.
-# When this happens the build.sh cript can have failures.
-sleep 30

-- 
To stop receiving notification emails like this one, please contact
['"commits@openwhisk.apache.org" <co...@openwhisk.apache.org>'].