66 lines
1.3 KiB
Bash
66 lines
1.3 KiB
Bash
|
#!/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}
|