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>'].