diff --git a/hack/deploy.sh b/hack/deploy.sh new file mode 100644 index 00000000..4e97ee83 --- /dev/null +++ b/hack/deploy.sh @@ -0,0 +1,91 @@ +#!/usr/bin/env bash + +# +# deploy.sh - (Almost) automatic setup of a Fission Workflows deployment +# + +# Configs +FISSION_VERSION=0.3.0-rc +FISSION_WORKFLOWS_VERSION=0.1.0 + +echo "Fission Workflows Deploy Script v1" + +# Check if kubectl is installed +if ! command -v kubectl >/dev/null 2>&1; then + echo "kubectl is not installed" + exit 1; +fi + +# Check if minikube is installed +if ! command -v minikube >/dev/null 2>&1 ; then + echo "minikube is not installed." + exit 1; +fi + +# Check if helm is installed +if ! command -v helm >/dev/null 2>&1 ; then + echo "helm is not installed." + exit 1; +fi + +# Ensure that minikube is running +if ! minikube ip >/dev/null 2>&1 ; then + echo "Starting minikube cluster..." + minikube start +fi + +# Install helm on cluster +if ! helm list >/dev/null 2>&1 ; then + echo "Installing helm..." + kubectl -n kube-system create sa tiller + + kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller + + helm init --service-account tiller + + printf "Waiting for Helm" + until helm list >/dev/null 2>&1 + do + printf "." + sleep 3 + done + printf "\n" +fi + +# Output debug logs +echo "---------- Debug ----------" +minikube version +printf "K8S " +kubectl version --client --short +printf "K8S " +kubectl version --short | grep Server +printf "Helm " +helm version --short -c +printf "Helm " +helm version --short -s +echo "Fission: ${FISSION_VERSION}" +echo "Fission Workflows: ${FISSION_WORKFLOWS_VERSION}" +echo "---------------------------" + +# Ensure that fission-charts helm repo is added +if ! helm repo list | grep fission-charts >/dev/null 2>&1 ; then + echo "Setting up fission-charts Helm repo..." + helm repo add fission-charts https://fission.github.io/fission-charts/ + helm repo update +fi + +# Install Fission +if ! fission fn list >/dev/null 2>&1 ; then + echo "Installing Fission..." + helm install --namespace fission --set serviceType=NodePort -n fission-all fission-charts/fission-all --wait --version ${FISSION_VERSION} +fi + +# Install Fission Workflows +if ! fission env get --name workflow >/dev/null 2>&1 ; then + echo "Installing Fission Workflows..." + if [[ -z "${FISSION_WORKFLOWS_VERSION// }" ]] ; then + helm install -n fission-workflows fission-charts/fission-workflows --wait --version ${FISSION_WORKFLOWS_VERSION} + else + helm install -n fission-workflows fission-charts/fission-workflows --wait + fi +fi