|
#!/usr/bin/env bash |
|
################################################################### |
|
# Script Name : install-minikube-kvm.sh |
|
# Description : Install minikube and docker-machine with KVM driver |
|
# Args : |
|
# Author : kiba |
|
# Email : [email protected] |
|
################################################################### |
|
|
|
DISTR=$(lsb_release -is) |
|
CODENAME=$(lsb_release -cs) |
|
DISTR_VER=$(lsb_release -rs) |
|
DOCKER_MACHINE_LATEST="$(curl -s https://api.github.com/repos/docker/machine/releases/latest | grep "browser_download_url.*Linux-x86_64" | cut -d : -f 2,3 | tr -d \")" |
|
MINIKUBE_LATEST="$(curl -s https://api.github.com/repos/kubernetes/minikube/releases/latest | grep "browser_download_url.*deb" | cut -d : -f 2,3 | tr -d \")" |
|
|
|
# format output for shell commands |
|
echocode() { |
|
echo -e "\n\t\$ $@\n" |
|
} |
|
|
|
# 0. check dependencies |
|
virsh domcapabilities --virttype kvm >/dev/null 2>&1 |
|
if [ $? -ne 0 ] |
|
then |
|
echo "FATAL: please install qemu-kvm and libvirt-bin first." |
|
echocode sudo apt install qemu-kvm libvirt-bin |
|
echo "And reboot." |
|
exit 1 |
|
fi |
|
|
|
echo -e "## Start installation ##\n" |
|
|
|
# 1. install docker-machine |
|
if [ ! -f /usr/local/bin/docker-machine ] |
|
then |
|
curl -L $DOCKER_MACHINE_LATEST >/tmp/docker-machine && |
|
sudo mv /tmp/docker-machine /usr/local/bin/docker-machine && |
|
sudo chmod +x /usr/local/bin/docker-machine |
|
fi |
|
|
|
# 1a. install docker-machine completions |
|
if [ ! -f /etc/bash_completion.d/docker-machine.bash ] |
|
then |
|
base=https://raw.githubusercontent.com/docker/machine/master |
|
for i in docker-machine-prompt.bash docker-machine-wrapper.bash docker-machine.bash |
|
do |
|
sudo wget "$base/contrib/completion/bash/${i}" -P /etc/bash_completion.d |
|
done |
|
fi |
|
|
|
echo "To enable the docker-machine shell prompt, add \$(__docker_machine_ps1) to your PS1 setting in ~/.bashrc." |
|
echo "PS1='[\u@\h \W\$(__docker_machine_ps1)]\\\$ '" |
|
echo "" |
|
|
|
# 2 install minikube |
|
if [[ "$(which minikube | wc -l)" == "0" ]] |
|
then |
|
if [[ $DISTR =~ (Debian|Ubuntu) ]] |
|
then |
|
wget $MINIKUBE_LATEST && \ |
|
sudo dpkg -i "${MINIKUBE_LATEST##*/}" && \ |
|
rm -f "${MINIKUBE_LATEST##*/}" |
|
else |
|
wget https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 |
|
chmod +x minikube-linux-amd64 |
|
sudo mv minikube-linux-amd64 /usr/local/bin/minikube |
|
fi |
|
fi |
|
|
|
# 2a. show ver |
|
minikube version |
|
echo "" |
|
|
|
# 3. install kubectl |
|
if [[ "$(which kubectl | wc -l)" == "0" ]] |
|
then |
|
if [[ $DISTR =~ (Debian|Ubuntu) ]] |
|
then |
|
# no bionic repo nowadays |
|
[[ "${DISTR_VER//.}" -ge "1804" ]] && CODENAME="xenial" |
|
|
|
sudo apt-get update && sudo apt-get install -y apt-transport-https |
|
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - |
|
echo "deb https://apt.kubernetes.io/ kubernetes-${CODENAME} main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list |
|
sudo apt-get update |
|
sudo apt-get install -y kubectl |
|
else |
|
curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl |
|
chmod +x kubectl |
|
sudo mv kubectl /usr/local/bin/ |
|
fi |
|
fi |
|
|
|
# 3a. show ver |
|
kubectl version -o yaml |
|
echo "" |
|
|
|
# 3b. install kubectl completion |
|
source <(kubectl completion bash) |
|
if [ ! -s /etc/bash_completion.d/kubectl ] |
|
then |
|
kubectl completion bash | sudo tee -a /etc/bash_completion.d/kubectl >/dev/null |
|
fi |
|
|
|
# 4. install docker-machine KVM driver |
|
if [ ! -f /usr/local/bin/docker-machine-driver-kvm2 ] |
|
then |
|
curl -LO https://storage.googleapis.com/minikube/releases/latest/docker-machine-driver-kvm2 |
|
chmod +x docker-machine-driver-kvm2 |
|
sudo mv docker-machine-driver-kvm2 /usr/local/bin/ |
|
fi |
|
|
|
# 5. Finish |
|
echo "Done! You can now start your cluster: " |
|
echocode minikube start --vm-driver kvm2 |
|
echo "or set kvm driver as default:" |
|
echocode minikube config set vm-driver kvm2 |