X-Git-Url: https://gerrit.akraino.org/r/gitweb?a=blobdiff_plain;f=deploy%2Fkata%2Fkata.sh;h=39aa8ee03145f3ba33c9d72257b7b711c1935903;hb=b13f5643b2c17bca79fce39612f8c8c87158632a;hp=f0d1b3c4766aedfdff52a106f395876ded058fb9;hpb=7bfa2bb9c237da3866d22a2995ba7103c1ae9d7e;p=icn.git diff --git a/deploy/kata/kata.sh b/deploy/kata/kata.sh index f0d1b3c..39aa8ee 100755 --- a/deploy/kata/kata.sh +++ b/deploy/kata/kata.sh @@ -7,8 +7,8 @@ LIBDIR="$(dirname $(dirname ${SCRIPTDIR}))/env/lib" source $LIBDIR/logging.sh source $LIBDIR/common.sh -KATA_VERSION="2.1.0-rc0" -KATA_WEBHOOK_VERSION="2.1.0-rc0" +BUILDDIR=${SCRIPTDIR/deploy/build} +mkdir -p ${BUILDDIR} KATA_DEPLOY_URL="https://raw.githubusercontent.com/kata-containers/kata-containers/${KATA_VERSION}/tools/packaging/kata-deploy" KATA_WEBHOOK_URL="https://raw.githubusercontent.com/kata-containers/tests/${KATA_WEBHOOK_VERSION}/kata-webhook" @@ -22,16 +22,92 @@ function build_source { curl -sL ${KATA_DEPLOY_URL}/kata-rbac/base/kata-rbac.yaml -o ${SCRIPTDIR}/base/kata-rbac.yaml curl -sL ${KATA_DEPLOY_URL}/kata-deploy/base/kata-deploy.yaml -o ${SCRIPTDIR}/base/kata-deploy.yaml curl -sL ${KATA_DEPLOY_URL}/runtimeclasses/kata-runtimeClasses.yaml -o ${SCRIPTDIR}/base/kata-runtimeClasses.yaml + rm -f ${SCRIPTDIR}/base/kustomization.yaml pushd ${SCRIPTDIR}/base && kustomize create --autodetect && popd } +function deploy_webhook { + local -r cluster_name=$1 + local -r cluster_kubeconfig="${BUILDDIR}/${cluster_name}.conf" + + # Note that the webhook-registration.yaml.tpl file is fetched here + # but webhook-registration.yaml is deployed: this is intentional, + # create-certs.sh takes care of converting the .yaml.tpl into the + # .yaml file + mkdir -p ${BUILDDIR}/webhook/base/deploy + curl -sL ${KATA_WEBHOOK_URL}/common.bash -o ${BUILDDIR}/webhook/base/common.bash + curl -sL ${KATA_WEBHOOK_URL}/create-certs.sh -o ${BUILDDIR}/webhook/base/create-certs.sh + curl -sL ${KATA_WEBHOOK_URL}/deploy/webhook-registration.yaml.tpl -o ${BUILDDIR}/webhook/base/deploy/webhook-registration.yaml.tpl + curl -sL ${KATA_WEBHOOK_URL}/deploy/webhook.yaml -o ${BUILDDIR}/webhook/base/deploy/webhook.yaml + + chmod +x ${BUILDDIR}/webhook/base/create-certs.sh + sed 's/value: kata/value: ${KATA_WEBHOOK_RUNTIMECLASS}/g' ${BUILDDIR}/webhook/base/deploy/webhook.yaml | tee ${BUILDDIR}/webhook/base/deploy/webhook-${KATA_WEBHOOK_RUNTIMECLASS}.yaml + pushd ${BUILDDIR}/webhook/base && ./create-certs.sh && popd + + cat <${BUILDDIR}/webhook/base/kustomization.yaml +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: +- deploy/webhook-certs.yaml +- deploy/webhook-registration.yaml +- deploy/webhook-${KATA_WEBHOOK_RUNTIMECLASS}.yaml +EOF + + kustomize build ${BUILDDIR}/webhook/base | KUBECONFIG=${cluster_kubeconfig} kubectl apply -f - +} + +function clean_webhook { + local -r cluster_name=$1 + local -r cluster_kubeconfig="${BUILDDIR}/${cluster_name}.conf" + + kustomize build ${BUILDDIR}/webhook/base | KUBECONFIG=${cluster_kubeconfig} kubectl delete -f - +} + +function is_kata_deployed { + local -r cluster_name=${CLUSTER_NAME:-icn} + local -r cluster_kubeconfig="${BUILDDIR}/${cluster_name}.conf" + kubectl --kubeconfig=${cluster_kubeconfig} get runtimeclass/kata-qemu +} + +function test_kata { + # Create a temporary kubeconfig file for the tests + local -r cluster_name=${CLUSTER_NAME:-icn} + local -r cluster_kubeconfig="${BUILDDIR}/${cluster_name}.conf" + clusterctl -n metal3 get kubeconfig ${cluster_name} >${cluster_kubeconfig} + + # Ensure that Kata has been deployed first + WAIT_FOR_TRIES=30 + wait_for is_kata_deployed + + deploy_webhook ${cluster_name} + clone_kud_repository + pushd ${KUDPATH}/kud/tests + failed_kud_tests="" + KUBECONFIG=${cluster_kubeconfig} bash kata.sh || failed_kud_tests="${failed_kud_tests} kata" + popd + clean_webhook ${cluster_name} + if [[ ! -z "$failed_kud_tests" ]]; then + echo "Test cases failed:${failed_kud_tests}" + exit 1 + fi + echo "All test cases passed" + + rm ${cluster_kubeconfig} +} + case $1 in "build-source") build_source ;; + "test") test_kata ;; *) cat <