@@ -15,6 +15,10 @@ CNIS_NAME="cni-plugins"
1515# running the latest available image my default, unless instructed to
1616KIND_IMAGE=" kindest/node:v1.24.0@sha256:0866296e693efe1fed79d5e6c7af8df71fc73ae45e3679af05342239cdc5bc8e"
1717[ -n " $1 " ] && KIND_IMAGE=$1
18+ SCHEDULER_VERSION=" "
19+ KUBE_SCHEDULER_API_VERSION=" "
20+ CONTROL_PLANE_NODE_AFINITY_LABEL=" control-plane"
21+ NODE_AFFINITY_LABEL_KEY=$CONTROL_PLANE_NODE_AFINITY_LABEL
1822
1923# private registry set-up variables
2024CHANGE_MIRROR_REPO=" false"
@@ -26,13 +30,50 @@ KIND_SET_UP_CONFIG_TEMPLATE="${root}/.github/scripts/kind/config-template.yaml"
2630KIND_SET_UP_CONFIG_FILE=" ${root} /.github/scripts/kind/config.yaml"
2731UBUNTU_CERTS_DIR=" /usr/local/share/ca-certificates/"
2832
33+ get_scheduler_version () {
34+ [ -z " ${KIND_IMAGE} " ] && echo " ### No image SHA provided for Kind: $KIND_IMAGE . Exit..." && exit 1
35+ scheduler_image_version=$( echo " $KIND_IMAGE " | cut -d " ." -f 2 )
36+ [ -z " ${scheduler_image_version} " ] && echo " ### Unable to determine K8s scheduler version from $KIND_IMAGE , got $scheduler_image_version . Exit..." && exit 1
37+
38+ SCHEDULER_VERSION=$scheduler_image_version
39+ }
40+
41+ get_kube_scheduler_api_version () {
42+ [ -z " ${SCHEDULER_VERSION} " ] && echo " ### UEmpty value for K8s scheduler version: $SCHEDULER_VERSION . Exit..." && exit 1
43+
44+ scheduler_image_version_19=19
45+ scheduler_image_version_22=22
46+ scheduler_image_version_25=25
47+ scheduler_config_api_versions_v1beta1=" v1beta1"
48+ scheduler_config_api_versions_v1beta2=" v1beta2"
49+ scheduler_config_api_versions_v1=" v1"
50+
51+ currentKubeSchedulerApiVersion=" "
52+ if [ " $SCHEDULER_VERSION " -lt $scheduler_image_version_19 ]; then
53+ echo " E2E tests will not execute for K8s version older than $scheduler_image_version_19 . Exit..."
54+ exit 1
55+ elif [ " $SCHEDULER_VERSION " -ge $scheduler_image_version_19 ] && [ " $SCHEDULER_VERSION " -lt $scheduler_image_version_22 ]; then
56+ currentKubeSchedulerApiVersion=$scheduler_config_api_versions_v1beta1
57+ elif [ " $SCHEDULER_VERSION " -ge $scheduler_image_version_22 ] && [ " $SCHEDULER_VERSION " -lt $scheduler_image_version_25 ]; then
58+ currentKubeSchedulerApiVersion=$scheduler_config_api_versions_v1beta2
59+ else
60+ currentKubeSchedulerApiVersion=$scheduler_config_api_versions_v1
61+ fi
62+
63+ [ -z " ${currentKubeSchedulerApiVersion} " ] && echo " Invalid API version for Kube Scheduler Configuration, got: $currentKubeSchedulerApiVersion . Exit..." && exit 1
64+
65+ KUBE_SCHEDULER_API_VERSION=$currentKubeSchedulerApiVersion
66+ }
67+
2968# create cluster CA and policy for Kubernetes Scheduler
3069# CA cert & key along with will be mounted to control plane
3170# path /etc/kubernetes/pki. Kubeadm will utilise generated CA cert/key as root
3271# Kubernetes CA. Cert for scheduler/TAS will be signed by this CA
3372generate_k8_scheduler_config_data () {
3473 mkdir -p " ${TMP_DIR} "
3574 mount_dir=" $( mktemp -q -p " ${TMP_DIR} " -d -t tas-e2e-k8-XXXXXXXX) "
75+ [ -z " ${KUBE_SCHEDULER_API_VERSION} " ] && echo " Invalid API version for Kube Scheduler Configuration, got: $KUBE_SCHEDULER_API_VERSION . Exit..." && exit 1
76+ sed -i " s/XVERSIONX/$currentKubeSchedulerApiVersion /g" " ${K8_ADDITIONS_PATH} /policy.yaml"
3677 cp " ${K8_ADDITIONS_PATH} /policy.yaml" " ${mount_dir} /"
3778}
3879
@@ -139,8 +180,20 @@ check_requirements() {
139180 done
140181}
141182
183+ set_node_affinity_expression_label_key () {
184+ scheduler_image_version_24=24
185+ [ -z " ${SCHEDULER_VERSION} " ] && echo " ### Unable to get K8s scheduler value, got $SCHEDULER_VERSION . Exit..." && exit 1
186+ if [ " $SCHEDULER_VERSION " -lt $scheduler_image_version_24 ]; then
187+ NODE_AFFINITY_LABEL_KEY=" master"
188+ fi
189+ }
190+
142191echo " ## checking requirements"
143192check_requirements
193+ echo " ## fetch K8s Scheduler version"
194+ get_scheduler_version
195+ echo " ## fetch K8s KubeSchedulerAPI version"
196+ get_kube_scheduler_api_version
144197# generate K8 API server CA key/cert and supporting files for mTLS with NRI
145198echo " ## generating K8s scheduler config"
146199generate_k8_scheduler_config_data
@@ -195,4 +248,8 @@ docker cp kind-control-plane:/etc/kubernetes/pki/ca.key "${mount_dir}/certs/clie
195248
196249kubectl create secret tls extender-secret --cert " ${mount_dir} /certs/client.crt" --key " ${mount_dir} /certs/client.key"
197250sed " s/intel\/telemetry-aware-scheduling/tasextender/g" " ${root} /telemetry-aware-scheduling/deploy/tas-deployment.yaml" -i
251+ set_node_affinity_expression_label_key
252+ if [ " $CONTROL_PLANE_NODE_AFINITY_LABEL " != " $NODE_AFFINITY_LABEL_KEY " ]; then
253+ sed " s/control-plane/$NODE_AFFINITY_LABEL_KEY /g" " $TAS_DEPLOYMENT_FILE " -i
254+ fi
198255kubectl apply -f " ${root} /telemetry-aware-scheduling/deploy/"
0 commit comments