Updated kubernetes bash script
Project: http://git-wip-us.apache.org/repos/asf/incubator-senssoft/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-senssoft/commit/4dbc26d7 Tree: http://git-wip-us.apache.org/repos/asf/incubator-senssoft/tree/4dbc26d7 Diff: http://git-wip-us.apache.org/repos/asf/incubator-senssoft/diff/4dbc26d7 Branch: refs/heads/kubernetes Commit: 4dbc26d70745603cc02538d7e491cb328bb30d08 Parents: ea05491 Author: msbeard <msbe...@apache.org> Authored: Sun Mar 4 15:36:36 2018 -0500 Committer: msbeard <msbe...@apache.org> Committed: Sun Mar 4 15:36:36 2018 -0500 ---------------------------------------------------------------------- kubernetes/configure.sh | 163 +++++++++++++++++++++++++++++++------------ 1 file changed, 120 insertions(+), 43 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-senssoft/blob/4dbc26d7/kubernetes/configure.sh ---------------------------------------------------------------------- diff --git a/kubernetes/configure.sh b/kubernetes/configure.sh index ae26dda..e6ae111 100755 --- a/kubernetes/configure.sh +++ b/kubernetes/configure.sh @@ -22,29 +22,32 @@ help_usage() { echo "configure.sh" echo "A simple utility to deploy Apache SensSoft Kubernetes build." + echo "Not meant to be used in production." echo "" - echo "Usage: $ configure.sh COMMAND" + echo "Usage: $ configure.sh COMMAND [OPT]" echo "" help_commands echo "e.g." - echo "$ $0 deploy" + echo "$ $0 deploy all" } # Print out commands. help_commands() { echo "The commands are:" - echo " status View status of Kubernetes deployment" - echo " deploy Deploy SensSoft stack into Kubernetes cluster" - echo " elasticsearch Deploy Elasticsearch Kubernetes stack" - echo " logstash Deploy Logstash Kubernetes stack" - echo " kibana Deploy Kibana Kubernetes stack" - echo " elk Deploy ELK Kubernetes stack" - echo " check Check environment for release" - echo " shutdown Shutdown Kubernetes cluster" - echo " purge Purge all Kubernetes artifacts" - echo " start Startup minikube" - echo " stop Stop minikube" - echo " delete Delete minikube" + echo " status View status of Kubernetes deployment" + echo " deploy elk Deploy ELK stack into Kubernetes cluster" + echo " deploy elasticsearch Deploy Elasticsearch Kubernetes" + echo " deploy logstash Deploy Logstash Kubernetes" + echo " deploy kibana Deploy Kibana Kubernetes" + echo " purge elk Purge all ELK Kubernetes artifacts" + echo " purge elasticsearch Purge all Elasticsearch Kubernetes artifacts" + echo " purge logstash Purge all Logstash Kubernetes artifacts" + echo " purge kibana Purge all Kibana Kubernetes artifacts" + echo " check Check environment for release" + echo " shutdown Shutdown Kubernetes cluster" + echo " start Startup minikube" + echo " stop Stop minikube" + echo " delete Delete minikube" echo "" } @@ -56,13 +59,11 @@ fi # Check for a command argument. COMMAND=$1 +COMMAND_OPT=$2 + if [[ -z $COMMAND ]] || \ [[ $COMMAND != "status" && \ $COMMAND != "deploy" && \ - $COMMAND != "elasticsearch" && \ - $COMMAND != "logstash" && \ - $COMMAND != "kibana" && \ - $COMMAND != "elk" && \ $COMMAND != "check" && \ $COMMAND != "shutdown" && \ $COMMAND != "purge" && \ @@ -75,13 +76,41 @@ if [[ -z $COMMAND ]] || \ exit 1 fi +# Start minikube w/ hyperkit +if [[ $COMMAND == "provision" ]]; then + minikube start --cpus 2 --memory 5120 --vm-driver=virtualbox + # this for loop waits until kubectl can access the api server that Minikube has created + for i in {1..150}; do # timeout for 5 minutes + ./kubectl get po &> /dev/null + if [ $? -ne 1 ]; then + break + fi + sleep 2 + done + exit 0 +fi + +# Stop minikube w/ hyperkit +if [[ $COMMAND == "stop" ]]; then + minikube stop + eval $(minikube docker-env -u) + exit 0 +fi + +# Start minikube w/ hyperkit +if [[ $COMMAND == "delete" ]]; then + minikube delete + exit 0 +fi + # Fetch status of entire Kubernets SensSoft namespace if [[ $COMMAND == "status" ]]; then - kubectl get svc,deployment,pods -l component=elasticsearch + kubectl get svc,deployment,pods -l component=elk exit 0 fi function elasticsearch() { + echo "Elasticsearch deployment" kubectl create -f elasticsearch/es-master-svc.yaml kubectl create -f elasticsearch/es-client-svc.yaml kubectl create -f elasticsearch/es-master.yaml @@ -92,39 +121,89 @@ function elasticsearch() { kubectl rollout status -f elasticsearch/es-data.yaml } -# Deploy entire Kubernetes SensSoft namespace -if [[ $COMMAND == "deploy" ]]; then +function logstash() { + echo "Logstash deployment" + kubectl create -f logstash/logstash-svc.yaml + kubectl create -f logstash/logstash-client.yaml + kubectl create -f logstash/logstash.yaml + kubectl rollout status -f logstash/logstash.yaml +} + +function kibana() { + echo "Kibana deployment" + kubectl create -f kibana/kibana-svc.yaml + kubectl create -f kibana/kibana.yaml + kubectl rollout status -f kibana/kibana.yaml +} + +if [[ $COMMAND == "deploy" && \ + $COMMAND_OPT == "elasticsearch" ]]; then elasticsearch - exit 0 + exit 0 fi -# Delete entire Kubernetes SensSoft namespace -if [[ $COMMAND == "purge" ]]; then - for f in elasticsearch/*.yaml +if [[ $COMMAND == "deploy" && \ + $COMMAND_OPT == "logstash" ]]; then + logstash + exit 0 +fi + +if [[ $COMMAND == "deploy" && \ + $COMMAND_OPT == "kibana" ]]; then + kibana + exit 0 +fi + +if [[ $COMMAND == "deploy" && \ + $COMMAND_OPT == "elk" ]]; then + elasticsearch + logstash + kibana + exit 0 +fi + +# Delete entire Elasticsearch Kubernetes artifacts +if [[ $COMMAND == 'purge' && \ + $COMMAND_OPT == 'elasticsearch' ]]; then + for f in elasticsearch/*.yaml do kubectl delete -f $f done - exit 0 fi -# Start minikube w/ hyperkit -if [[ $COMMAND == "provision" ]]; then - minikube start --cpus 2 --memory 4096 - - exit 0 +# Delete entire Logstash Kubernetes artifacts +if [[ $COMMAND == 'purge' && \ + $COMMAND_OPT == 'logstash' ]]; then + for f in logstash/*.yaml + do + kubectl delete -f $f + done fi -# Stop minikube w/ hyperkit -if [[ $COMMAND == "stop" ]]; then - minikube stop - eval $(minikube docker-env -u) - exit 0 +# Delete entire Kibana Kubernetes artifacts +if [[ $COMMAND == 'purge' && \ + $COMMAND_OPT == 'kibana' ]]; then + for f in kibana/*.yaml + do + kubectl delete -f $f + done fi -# Start minikube w/ hyperkit -if [[ $COMMAND == "delete" ]]; then - minikube delete - exit 0 +# Delete entire Kubernetes SensSoft namespace +if [[ $COMMAND == 'purge' && \ + $COMMAND_OPT == 'elk' ]]; then + for f in elasticsearch/*.yaml + do + kubectl delete -f $f + done + for f in logstash/*.yaml + do + kubectl delete -f $f + done + for f in kibana/*.yaml + do + kubectl delete -f $f + done fi # Prepare for Distill deployment @@ -143,6 +222,4 @@ fi if [[ $COMMAND == "check" ]]; then echo "Error: Unsupported check build." exit 1 -fi - -exit 0 \ No newline at end of file +fi \ No newline at end of file