#!/bin/bash -e scriptdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # shellcheck disable=SC1090 source "${scriptdir}/../../build/common.sh" function init_flexvolume() { local flexname=$1 cat < ~/rook' #!/bin/bash echo -ne '{"status": "Success", "capabilities": {"attach": false}}' >&1 exit 0 EOF minikube ssh "chmod +x ~/rook" minikube ssh "sudo chown root:root ~/rook" minikube ssh "sudo mkdir -p /usr/libexec/kubernetes/kubelet-plugins/volume/exec/${flexname}~rook" minikube ssh "sudo mv ~/rook /usr/libexec/kubernetes/kubelet-plugins/volume/exec/${flexname}~rook" } # workaround for kube-dns CrashLoopBackOff issue with RBAC enabled #issue https://github.com/kubernetes/minikube/issues/1734 and https://github.com/kubernetes/minikube/issues/1722 function enable_roles_for_RBAC() { cat < 0 )) ; do if minikube ssh echo connected &> /dev/null ; then return 0 fi tries=$(( tries - 1 )) sleep 0.1 done echo ERROR: ssh did not come up >&2 exit 1 } function copy_image_to_cluster() { local build_image=$1 local final_image=$2 docker save "${build_image}" | (eval "$(minikube docker-env --shell bash)" && docker load && docker tag "${build_image}" "${final_image}") } # Deletes pods with 'rook-' prefix. Namespace is expected as the first argument function delete_rook_pods() { for P in $(kubectl get pods -n "$1" | awk "/$2/ {print \$1}"); do kubectl delete pod "$P" -n "$1" done } # current kubectl context == minikube, returns boolean function check_context() { if [ "$(kubectl config view 2>/dev/null | awk '/current-context/ {print $NF}')" = "minikube" ]; then return 0 fi return 1 } function copy_images() { if [[ "$1" == "" || "$1" == "ceph" ]]; then echo "copying ceph images" copy_image_to_cluster "${BUILD_REGISTRY}/ceph-amd64" rook/ceph:master # uncomment to push the nautilus image when needed #copy_image_to_cluster ceph/ceph:v14 ceph/ceph:v14 fi if [[ "$1" == "" || "$1" == "cockroachdb" ]]; then echo "copying cockroachdb image" copy_image_to_cluster "${BUILD_REGISTRY}/cockroachdb-amd64" rook/cockroachdb:master fi if [[ "$1" == "" || "$1" == "cassandra" ]]; then echo "copying cassandra image" copy_image_to_cluster "${BUILD_REGISTRY}/cassandra-amd64" rook/cassandra:master fi if [[ "$1" == "" || "$1" == "minio" ]]; then echo "copying minio image" copy_image_to_cluster "${BUILD_REGISTRY}/minio-amd64" rook/minio:master fi if [[ "$1" == "" || "$1" == "nfs" ]]; then echo "copying nfs image" copy_image_to_cluster "${BUILD_REGISTRY}/nfs-amd64" rook/nfs:master fi if [[ "$1" == "" || "$1" == "yugabytedb" ]]; then echo "copying yugabytedb image" copy_image_to_cluster "${BUILD_REGISTRY}/yugabytedb-amd64" rook/yugabytedb:master fi } # configure minikube MEMORY=${MEMORY:-"3000"} # use vda1 instead of sda1 when running with the libvirt driver VM_DRIVER=$(minikube config get vm-driver 2>/dev/null || echo "virtualbox") if [[ "$VM_DRIVER" == "kvm2" ]]; then DISK="vda1" else DISK="sda1" fi case "${1:-}" in up) echo "starting minikube with kubeadm bootstrapper" minikube start --memory="${MEMORY}" -b kubeadm --vm-driver="${VM_DRIVER}" wait_for_ssh # create a link so the default dataDirHostPath will work for this environment minikube ssh "sudo mkdir -p /mnt/${DISK}/rook/ && sudo ln -sf /mnt/${DISK}/rook/ /var/lib/" copy_images "$2" ;; down) minikube stop ;; ssh) echo "connecting to minikube" minikube ssh ;; update) copy_images "$2" ;; restart) if check_context; then [ "$2" ] && regex=$2 || regex="^rook-" echo "Restarting Rook pods matching the regex \"$regex\" in \"rook\" namespace." delete_rook_pods "rook" $regex echo "Restarting Rook pods matching the regex \"$regex\" in \"rook-system\" namespace.." delete_rook_pods "rook-system" $regex else echo "To prevent accidental data loss acting only on 'minikube' context. No action is taken." fi ;; wordpress) echo "copying the wordpress images" copy_image_to_cluster mysql:5.6 mysql:5.6 copy_image_to_cluster wordpress:4.6.1-apache wordpress:4.6.1-apache ;; cockroachdb-loadgen) echo "copying the cockroachdb loadgen images" copy_image_to_cluster cockroachdb/loadgen-kv:0.1 cockroachdb/loadgen-kv:0.1 ;; helm) echo " copying rook image for helm" helm_tag="$(cat _output/version)" copy_image_to_cluster "${BUILD_REGISTRY}/ceph-amd64" "rook/ceph:${helm_tag}" copy_image_to_cluster "${BUILD_REGISTRY}/minio-amd64" "rook/minio:${helm_tag}" ;; clean) minikube delete ;; *) echo "usage:" >&2 echo " $0 up [ceph | cockroachdb | cassandra | minio | nfs | yugabytedb]" >&2 echo " $0 down" >&2 echo " $0 clean" >&2 echo " $0 ssh" >&2 echo " $0 update [ceph | cockroachdb | cassandra | minio | nfs | yugabytedb]" >&2 echo " $0 restart (the pod name is a regex to match e.g. restart ^rook-ceph-osd)" >&2 echo " $0 wordpress" >&2 echo " $0 cockroachdb-loadgen" >&2 echo " $0 helm" >&2 esac