#!/bin/bash # From https://gist.github.com/yuanying/3aa7d59dcce65470804ab43def646ab6 IMAGE="ubuntu:18.04" COMMAND="/bin/bash" SUFFIX=$(date +%s | shasum | base64 | fold -w 10 | head -1 | tr '[:upper:]' '[:lower:]') usage_exit() { echo "Usage: $0 [-c command] [-i image] PVC ..." 1>&2 exit 1 } if [ "$#" -ne 1 ]; then usage_exit fi while getopts i:h OPT do case $OPT in i) IMAGE=$OPTARG ;; c) COMMAND=$OPTARG ;; h) usage_exit ;; \?) usage_exit ;; esac done shift $(($OPTIND - 1)) VOL_MOUNTS="" VOLS="" COMMA="" for i in $@ do VOL_MOUNTS="${VOL_MOUNTS}${COMMA}{\"name\": \"${i}\",\"mountPath\": \"/pvcs/${i}\"}" VOLS="${VOLS}${COMMA}{\"name\": \"${i}\",\"persistentVolumeClaim\": {\"claimName\": \"${i}\"}}" COMMA="," done kubectl run -it --rm --restart=Never --image=${IMAGE} pvc-mounter-${SUFFIX} --overrides " { \"spec\": { \"hostNetwork\": true, \"containers\":[ { \"args\": [\"${COMMAND}\"], \"stdin\": true, \"tty\": true, \"name\": \"pvc\", \"image\": \"${IMAGE}\", \"volumeMounts\": [ ${VOL_MOUNTS} ] } ], \"volumes\": [ ${VOLS} ] } } " -- ${COMMAND}