55# SPDX-License-Identifier: Apache-2.0
66#
77
8- set -e
8+ set -o errexit
9+ set -o nounset
10+ set -o pipefail
11+
912
1013SCRIPT_PATH=$( dirname " $( readlink -f " $0 " ) " )
1114source " ${SCRIPT_PATH} /../../.ci/lib.sh"
1215source " ${SCRIPT_PATH} /../../lib/common.bash"
1316
1417cri_runtime=" ${CRI_RUNTIME:- crio} "
18+ use_runtime_class=${use_runtime_class:- false}
19+ kubernetes_version=$( get_version " externals.kubernetes.version" )
1520
1621case " ${cri_runtime} " in
1722containerd)
@@ -46,6 +51,12 @@ kubeadm_config_file="$(mktemp --tmpdir kubeadm_config.XXXXXX.yaml)"
4651
4752sed -e " s|CRI_RUNTIME_SOCKET|${cri_runtime_socket} |" " ${kubeadm_config_template} " > " ${kubeadm_config_file} "
4853
54+ if [ " ${use_runtime_class} " == true ]; then
55+ echo " Add RuntimeClass feature for apiserver in kubeadm config file"
56+ echo " apiServerExtraArgs:" >> " ${kubeadm_config_file} "
57+ echo " feature-gates: RuntimeClass=true" >> " ${kubeadm_config_file} "
58+ fi
59+
4960sudo -E kubeadm init --config " ${kubeadm_config_file} "
5061
5162export KUBECONFIG=/etc/kubernetes/admin.conf
@@ -66,5 +77,14 @@ sleep_time=5
6677cmd=" sudo -E kubectl get pods --all-namespaces | grep 'coredns.*1/1.*Running'"
6778waitForProcess " $dns_wait_time " " $sleep_time " " $cmd "
6879
80+ if [ " ${use_runtime_class} " == true ]; then
81+ runtimeclass_files_path=" ${SCRIPT_PATH} /runtimeclass_workloads"
82+ echo " Install RuntimeClass resource definition"
83+ sudo -E kubectl apply -f \
84+ " https://raw.githubusercontent.com/kubernetes/kubernetes/v${kubernetes_version/ -* } /cluster/addons/runtimeclass/runtimeclass_crd.yaml"
85+ echo " Create kata RuntimeClass resource"
86+ sudo -E kubectl create -f " ${runtimeclass_files_path} /kata-runtimeclass.yaml"
87+ fi
88+
6989# Enable the master node to be able to schedule pods.
7090sudo -E kubectl taint nodes " $( hostname) " node-role.kubernetes.io/master:NoSchedule-
0 commit comments