mirror of
https://github.com/ceph/ceph-csi.git
synced 2024-11-26 08:10:20 +00:00
b2300b0835
Minikube from v1.23.0 supports adding extra disks in kvm2 and hyperkit VM drivers. This commit makes use of that functionality and removes steps to attack disks externally. Signed-off-by: Rakshith R <rar@redhat.com>
154 lines
4.5 KiB
Bash
Executable File
154 lines
4.5 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Start minukube with the selected k8s version and deploy rook.
|
|
#
|
|
# This script uses helper scripts from the main ceph-csi branch.
|
|
#
|
|
|
|
# fail when a command returns an error
|
|
set -e -o pipefail
|
|
|
|
ARGUMENT_LIST=(
|
|
"k8s-version"
|
|
)
|
|
|
|
opts=$(getopt \
|
|
--longoptions "$(printf "%s:," "${ARGUMENT_LIST[@]}")help" \
|
|
--name "$(basename "${0}")" \
|
|
--options "" \
|
|
-- "$@"
|
|
)
|
|
ret=$?
|
|
|
|
if [ ${ret} -ne 0 ]
|
|
then
|
|
echo "Try '--help' for more information."
|
|
exit 1
|
|
fi
|
|
|
|
eval set -- "${opts}"
|
|
|
|
while true; do
|
|
case "${1}" in
|
|
--help)
|
|
shift
|
|
echo "Options:"
|
|
echo "--help|-h specify the flags"
|
|
echo "--k8s-version specify the kubernetes version"
|
|
|
|
echo " "
|
|
echo "Sample Usage:"
|
|
echo "./single-node-k8s.sh --k8s-version=v1.18.3"
|
|
exit 0
|
|
;;
|
|
--k8s-version)
|
|
shift
|
|
k8s_version=${1}
|
|
;;
|
|
--)
|
|
shift
|
|
break
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
test -n "${k8s_version}" || { echo "k8s_version is not set"; exit 1;}
|
|
|
|
function set_env() {
|
|
export GOPATH="/opt/build/go"
|
|
# build.env is not part of the ci/centos branch, so shellcheck can not find
|
|
# it and will cause a failure if not annotated with /dev/null.
|
|
# shellcheck source=/dev/null
|
|
source "${GOPATH}"/src/github.com/ceph/ceph-csi/build.env
|
|
CSI_IMAGE_VERSION=${CSI_IMAGE_VERSION:-"canary"}
|
|
export GO111MODULE="on"
|
|
export TEST_COVERAGE="stdout"
|
|
export VM_DRIVER="kvm2"
|
|
export MEMORY="14336"
|
|
export NUM_DISKS="3"
|
|
export DISK_SIZE="32gb"
|
|
export CEPH_CSI_RUN_ALL_TESTS=true
|
|
# downloading rook images is sometimes slow, extend timeout to 15 minutes
|
|
export ROOK_VERSION=${ROOK_VERSION:-'v1.3.9'}
|
|
export ROOK_DEPLOY_TIMEOUT=900
|
|
export ROOK_CEPH_CLUSTER_IMAGE="${ROOK_CEPH_CLUSTER_IMAGE}"
|
|
# use podman for minikube.sh, Docker is not installed on the host
|
|
export CONTAINER_CMD='podman'
|
|
|
|
export CSI_ATTACHER_VERSION=${CSI_ATTACHER_VERSION:-"v3.2.1"}
|
|
export CSI_SNAPSHOTTER_VERSION=${CSI_SNAPSHOTTER_VERSION:-"v4.1.1"}
|
|
export CSI_PROVISIONER_VERSION=${CSI_PROVISIONER_VERSION:-"v2.2.2"}
|
|
export CSI_RESIZER_VERSION=${CSI_RESIZER_VERSION:-"v1.2.0"}
|
|
export CSI_NODE_DRIVER_REGISTRAR_VERSION=${CSI_NODE_DRIVER_REGISTRAR_VERSION:-"v2.2.0"}
|
|
|
|
# script/minikube.sh installs under /usr/local/bin
|
|
export PATH=$PATH:/usr/local/bin
|
|
}
|
|
|
|
function install_minikube()
|
|
{
|
|
dnf -y groupinstall 'Virtualization Host'
|
|
systemctl enable --now libvirtd
|
|
# Warning about "No ACPI IVRS table found", not critical
|
|
virt-host-validate || true
|
|
|
|
# minikube needs socat
|
|
dnf -y install socat
|
|
|
|
# deploy minikube
|
|
MINIKUBE_VERSION="${MINIKUBE_VERSION}" KUBE_VERSION="${k8s_version}" ${GOPATH}/src/github.com/ceph/ceph-csi/scripts/minikube.sh up
|
|
|
|
# copy kubectl from minikube to /usr/bin
|
|
cp ~/.minikube/cache/linux/"${k8s_version}"/kubectl /usr/bin/
|
|
|
|
# scan for extra disks
|
|
minikube ssh 'echo 1 | sudo tee /sys/bus/pci/rescan > /dev/null ; dmesg | grep virtio_blk'
|
|
}
|
|
|
|
function deploy_rook()
|
|
{
|
|
${GOPATH}/src/github.com/ceph/ceph-csi/scripts/minikube.sh deploy-rook
|
|
${GOPATH}/src/github.com/ceph/ceph-csi/scripts/minikube.sh create-block-pool
|
|
${GOPATH}/src/github.com/ceph/ceph-csi/scripts/minikube.sh k8s-sidecar
|
|
|
|
# TODO: only needed for k8s 1.17.0 and newer
|
|
# delete snapshot CRD created by ceph-csi in rook
|
|
${GOPATH}/src/github.com/ceph/ceph-csi/scripts/install-snapshot.sh delete-crd || true
|
|
# install snapshot controller
|
|
${GOPATH}/src/github.com/ceph/ceph-csi/scripts/install-snapshot.sh install
|
|
}
|
|
|
|
# Set environment variables
|
|
set_env
|
|
|
|
# prepare minikube environment
|
|
install_minikube
|
|
|
|
./podman2minikube.sh "quay.io/cephcsi/cephcsi:${CSI_IMAGE_VERSION}"
|
|
|
|
# incase rook/ceph is available on the local system, push it into the VM
|
|
if podman inspect "rook/ceph:${ROOK_VERSION}" > /dev/null
|
|
then
|
|
./podman2minikube.sh "rook/ceph:${ROOK_VERSION}"
|
|
fi
|
|
|
|
# Rook also uses ceph/ceph:v15 (build.env:BASE_IMAGE), so push it into the VM
|
|
if [ -n "${BASE_IMAGE}" ] && podman inspect "${BASE_IMAGE}" > /dev/null
|
|
then
|
|
./podman2minikube.sh "${BASE_IMAGE}"
|
|
fi
|
|
|
|
# Rook also uses ceph/ceph:v15 (build.env:ROOK_CEPH_CLUSTER_IMAGE), so push it into the VM
|
|
if [ -n "${ROOK_CEPH_CLUSTER_IMAGE}" ] && podman inspect "${ROOK_CEPH_CLUSTER_IMAGE}" > /dev/null
|
|
then
|
|
./podman2minikube.sh "${ROOK_CEPH_CLUSTER_IMAGE}"
|
|
fi
|
|
|
|
deploy_rook
|
|
|
|
# running e2e.test requires librados and librbd
|
|
dnf -y install librados2 librbd1
|
|
|
|
# now it is time to run the e2e tests!
|