talos/hack/test/libvirt/libvirt.sh
Spencer Smith e03a68f8eb feat: update k8s and sonobuoy versions
This PR will update k8s to the latest 1.18 release and bump sonobuoy to
help resolve some e2e flakes. Also adds some retry logic around the
sonobuoy run.

Signed-off-by: Spencer Smith <robertspencersmith@gmail.com>
2020-06-10 06:47:36 -07:00

88 lines
3.1 KiB
Bash
Executable File

#!/bin/bash
set -e
if [ "$EUID" -ne 0 ]
then echo "Please run as root"
exit
fi
function main {
case "$1" in
"up") up;;
"down") down;;
"workspace") workspace;;
*)
usage
exit 2
;;
esac
}
function usage {
echo "USAGE: ${0##*/} <command>"
echo "Commands:"
echo -e "\up\t\spin up QEMU/KVM nodes on the talos0 bridge"
echo -e "\down\t\tear down the QEMU/KVM nodes"
echo -e "\workspace\t\run and enter a docker container ready for talosctl and kubectl use"
}
NODES=(control-plane-1 control-plane-2 control-plane-3 worker-1)
INSTALLER=${INSTALLER:-docker.io/autonomy/installer:latest}
VM_MEMORY=${VM_MEMORY:-2048}
VM_DISK=${VM_DISK:-10}
CNI_URL=${CNI_URL:-https://raw.githubusercontent.com/cilium/cilium/1.6.4/install/kubernetes/quick-install.yaml}
COMMON_VIRT_OPTS="--memory=${VM_MEMORY} --cpu=host --vcpus=1 --disk pool=default,size=${VM_DISK} --os-type=linux --os-variant=generic --noautoconsole --graphics none --events on_poweroff=preserve --rng /dev/urandom"
CONTROL_PLANE_1_NAME=control-plane-1
CONTROL_PLANE_1_MAC=52:54:00:a1:9c:ae
CONTROL_PLANE_2_NAME=control-plane-2
CONTROL_PLANE_2_MAC=52:54:00:b2:2f:86
CONTROL_PLANE_3_NAME=control-plane-3
CONTROL_PLANE_3_MAC=52:54:00:c3:61:77
WORKER_1_NAME=worker-1
WORKER_1_MAC=52:54:00:d7:99:c7
function up {
echo ${INSTALLER}
cp $PWD/../../../${ARTIFACTS}/initramfs.xz ./matchbox/assets/
cp $PWD/../../../${ARTIFACTS}/vmlinuz ./matchbox/assets/
cd ./matchbox/assets
$PWD/../../../../../${ARTIFACTS}/talosctl-linux-amd64 config generate --install-image ${INSTALLER} integration-test https://kubernetes.talos.dev:6443
yq w -i init.yaml machine.install.extraKernelArgs[+] 'console=ttyS0'
yq w -i init.yaml cluster.network.cni.name 'custom'
yq w -i init.yaml cluster.network.cni.urls[+] "${CNI_URL}"
yq w -i controlplane.yaml machine.install.extraKernelArgs[+] 'console=ttyS0'
yq w -i join.yaml machine.install.extraKernelArgs[+] 'console=ttyS0'
cd -
virt-install --name $CONTROL_PLANE_1_NAME --network=bridge:talos0,model=e1000,mac=$CONTROL_PLANE_1_MAC $COMMON_VIRT_OPTS --boot=hd,network
virt-install --name $CONTROL_PLANE_2_NAME --network=bridge:talos0,model=e1000,mac=$CONTROL_PLANE_2_MAC $COMMON_VIRT_OPTS --boot=hd,network
virt-install --name $CONTROL_PLANE_3_NAME --network=bridge:talos0,model=e1000,mac=$CONTROL_PLANE_3_MAC $COMMON_VIRT_OPTS --boot=hd,network
virt-install --name $WORKER_1_NAME --network=bridge:talos0,model=e1000,mac=$WORKER_1_MAC $COMMON_VIRT_OPTS --boot=hd,network
}
function down {
for node in ${NODES[@]}; do
virsh destroy $node
done
for node in ${NODES[@]}; do
virsh undefine $node
done
virsh pool-refresh default
for node in ${NODES[@]}; do
virsh vol-delete --pool default $node.qcow2
done
}
function workspace {
docker run --rm -it -v $PWD:/workspace -v $PWD/../../../${ARTIFACTS}/talosctl-linux-amd64:/bin/talosctl:ro --network talos --dns 172.28.1.1 -w /workspace/matchbox/assets -e TALOSCONFIG='/workspace/matchbox/assets/talosconfig' -e KUBECONFIG='/workspace/matchbox/assets/kubeconfig' --entrypoint /bin/bash k8s.gcr.io/hyperkube:v1.18.3
}
main $@