Add a script to run operator locally
This commit is contained in:
		
							parent
							
								
									56359d23c9
								
							
						
					
					
						commit
						d707bba2fb
					
				|  | @ -0,0 +1,83 @@ | ||||||
|  | #!/bin/bash | ||||||
|  | 
 | ||||||
|  | set -uo pipefail  | ||||||
|  | IFS=$'\n\t' | ||||||
|  | 
 | ||||||
|  | # timeouts after 3 minutes | ||||||
|  | function retry(){ | ||||||
|  |     cmd="$1" | ||||||
|  |     retryMsg="$2" | ||||||
|  |     for i in {1..90}; do | ||||||
|  | 	eval "$cmd" | ||||||
|  | 	if [ $? -eq 0 ]; then | ||||||
|  |          return 0 | ||||||
|  |         fi | ||||||
|  | 	echo "$retryMsg" | ||||||
|  |         sleep 2 | ||||||
|  |     done | ||||||
|  |      | ||||||
|  |     return 1 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | echo "==== CLEAN UP PREVIOUS RUN ==== " | ||||||
|  | 
 | ||||||
|  | status=$(minikube status --format "{{.MinikubeStatus}}") | ||||||
|  | if [ "$status" = "Running" ]; then  | ||||||
|  |     minikube delete | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | # the kubectl process does the port-forwarding between operator and local ports | ||||||
|  | # we restart the process to be able to bind to the same port again (see end of script) | ||||||
|  | echo "Kill kubectl process to re-init port-forwarding for minikube" | ||||||
|  | kubepid=$(pidof "kubectl") | ||||||
|  | if [ $? -eq 0 ]; then | ||||||
|  |     kill "$kubepid" | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | echo "==== START MINIKUBE ==== " | ||||||
|  | echo "May take a few minutes ..." | ||||||
|  | minikube start  | ||||||
|  | kubectl config set-context minikube | ||||||
|  | 
 | ||||||
|  | echo "==== MINIKUBE STATUS ==== " | ||||||
|  | minikube status | ||||||
|  | 
 | ||||||
|  | echo "==== START OPERATOR ==== " | ||||||
|  | # the order of files is significant | ||||||
|  | for file  in "configmap.yaml" "serviceaccount.yaml" "postgres-operator.yaml" | ||||||
|  | do | ||||||
|  |    retry "kubectl  create -f manifests/\"$file\"" "attempt to create $file resource"  | ||||||
|  | done | ||||||
|  | 
 | ||||||
|  | msg="Wait for the postgresql custom resource definition to register." | ||||||
|  | cmd="kubectl get crd | grep 'postgresqls.acid.zalan.do' &> /dev/null" | ||||||
|  | retry "$cmd" "$msg " | ||||||
|  | 
 | ||||||
|  | kubectl create -f manifests/complete-postgres-manifest.yaml | ||||||
|  | 
 | ||||||
|  | localPort="8080" | ||||||
|  | operatorPort="8080" | ||||||
|  | echo "==== FORWARD OPERATOR PORT $operatorPort TO LOCAL PORT $localPort  ====" | ||||||
|  | operatorPod=$(kubectl get pod -l name=postgres-operator -o jsonpath={.items..metadata.name}) | ||||||
|  | # runs in the background to keep current terminal responsive | ||||||
|  | # 1> redirects stdout to remove the info message about forwarded ports; the message sometimes garbles the cli prompt | ||||||
|  | kubectl port-forward "$operatorPod" "$localPort":"$operatorPort" 1> /dev/null & | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | echo "==== RUN HEALTH CHECK ==== " | ||||||
|  | checkCmd="curl -L http://127.0.0.1:$localPort/clusters &> /dev/null" | ||||||
|  | checkMsg="Wait for port forwarding to take effect" | ||||||
|  | retry "$checkCmd"  "$checkMsg" | ||||||
|  | 
 | ||||||
|  | if [ $? -eq 0 ]; then | ||||||
|  |     echo "==== SUCCESS: OPERATOR IS RUNNING ==== " | ||||||
|  | else | ||||||
|  |     echo "Operator did not start or port forwarding did not work" | ||||||
|  |     exit 1 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
		Loading…
	
		Reference in New Issue