Skip to content

Commit 3c83389

Browse files
authored
Merge pull request #34981 from pohly/dra-version-skew
DRA canary: filter by kubelet version, use stable release for presubmit
2 parents 5ef3dc8 + a915a0a commit 3c83389

File tree

2 files changed

+38
-13
lines changed

2 files changed

+38
-13
lines changed

config/jobs/kubernetes/sig-node/dra-canary.yaml

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -248,9 +248,9 @@ presubmits:
248248
major=$(echo "$revision" | sed -e 's/^v\([0-9]*\).*/\1/')
249249
minor=$(echo "$revision" | sed -e 's/^v[0-9]*\.\([0-9]*\).*/\1/')
250250
previous_minor=$((minor - 1))
251-
# TODO: use dl.k8s.io/release for presubmits.
252-
previous=$(curl --silent -L "https://dl.k8s.io/ci/latest-$major.$previous_minor.txt" )
253-
curl --silent -L "https://dl.k8s.io/ci/$previous/kubernetes-server-linux-amd64.tar.gz" | tar zxOf - kubernetes/server/bin/kubelet >/tmp/kubelet
251+
# Test with the lastest stable release to avoid breaking presubmits because of unrelated issues in a release candidate.
252+
previous=$(curl --silent -L "https://dl.k8s.io/release/stable-$major.$previous_minor.txt" )
253+
curl --silent -L "https://dl.k8s.io/release/$previous/kubernetes-server-linux-amd64.tar.gz" | tar zxOf - kubernetes/server/bin/kubelet >/tmp/kubelet
254254
chmod a+rx /tmp/kubelet
255255
/tmp/kubelet --version
256256
worker_nodes=$(kind get nodes | grep worker)
@@ -259,9 +259,15 @@ presubmits:
259259
docker exec $n systemctl restart kubelet
260260
done
261261
262-
# We might need support for disabling tests which need a recent kubelet. We'll see...
262+
# We need support for disabling tests which need a recent kubelet.
263+
# If a test is labeled with `KubeletMinVersion:1.34`, then it cannot run
264+
# when the deployed kubelet is 1.32. This is enforced by
265+
# generating `KubeletMinVersion: isSubsetOf { 1.33, 1.34 }`, i.e.
266+
# not including the actual kubelet version and anything older
267+
# in an allow list.
268+
kubelet_label_filter="&& KubeletMinVersion: isSubsetOf { $( for v in $(seq $((previous_minor + 1)) $((minor - 1))); do echo "1.$v, "; done)1.$minor }"
263269
264-
KUBECONFIG=${HOME}/.kube/config ${ginkgo} run --nodes=8 --timeout=24h --silence-skips --force-newlines --no-color --label-filter="DRA && Feature: isSubsetOf { OffByDefault, DynamicResourceAllocation } && !Alpha && !Flaky && !Slow" ${e2e_test} -- -provider=local -report-dir="${ARTIFACTS}" -report-complete-ginkgo -report-complete-junit &
270+
KUBECONFIG=${HOME}/.kube/config ${ginkgo} run --nodes=8 --timeout=24h --silence-skips --force-newlines --no-color --label-filter="DRA && Feature: isSubsetOf { OffByDefault, DynamicResourceAllocation }$kubelet_label_filter && !Alpha && !Flaky && !Slow" ${e2e_test} -- -provider=local -report-dir="${ARTIFACTS}" -report-complete-ginkgo -report-complete-junit &
265271
GINKGO_E2E_PID=$!
266272
wait "${GINKGO_E2E_PID}"
267273
# docker-in-docker needs privileged mode
@@ -350,9 +356,9 @@ presubmits:
350356
major=$(echo "$revision" | sed -e 's/^v\([0-9]*\).*/\1/')
351357
minor=$(echo "$revision" | sed -e 's/^v[0-9]*\.\([0-9]*\).*/\1/')
352358
previous_minor=$((minor - 2))
353-
# TODO: use dl.k8s.io/release for presubmits.
354-
previous=$(curl --silent -L "https://dl.k8s.io/ci/latest-$major.$previous_minor.txt" )
355-
curl --silent -L "https://dl.k8s.io/ci/$previous/kubernetes-server-linux-amd64.tar.gz" | tar zxOf - kubernetes/server/bin/kubelet >/tmp/kubelet
359+
# Test with the lastest stable release to avoid breaking presubmits because of unrelated issues in a release candidate.
360+
previous=$(curl --silent -L "https://dl.k8s.io/release/stable-$major.$previous_minor.txt" )
361+
curl --silent -L "https://dl.k8s.io/release/$previous/kubernetes-server-linux-amd64.tar.gz" | tar zxOf - kubernetes/server/bin/kubelet >/tmp/kubelet
356362
chmod a+rx /tmp/kubelet
357363
/tmp/kubelet --version
358364
worker_nodes=$(kind get nodes | grep worker)
@@ -361,9 +367,15 @@ presubmits:
361367
docker exec $n systemctl restart kubelet
362368
done
363369
364-
# We might need support for disabling tests which need a recent kubelet. We'll see...
370+
# We need support for disabling tests which need a recent kubelet.
371+
# If a test is labeled with `KubeletMinVersion:1.34`, then it cannot run
372+
# when the deployed kubelet is 1.32. This is enforced by
373+
# generating `KubeletMinVersion: isSubsetOf { 1.33, 1.34 }`, i.e.
374+
# not including the actual kubelet version and anything older
375+
# in an allow list.
376+
kubelet_label_filter="&& KubeletMinVersion: isSubsetOf { $( for v in $(seq $((previous_minor + 1)) $((minor - 1))); do echo "1.$v, "; done)1.$minor }"
365377
366-
KUBECONFIG=${HOME}/.kube/config ${ginkgo} run --nodes=8 --timeout=24h --silence-skips --force-newlines --no-color --label-filter="DRA && Feature: isSubsetOf { OffByDefault, DynamicResourceAllocation } && !Alpha && !Flaky && !Slow" ${e2e_test} -- -provider=local -report-dir="${ARTIFACTS}" -report-complete-ginkgo -report-complete-junit &
378+
KUBECONFIG=${HOME}/.kube/config ${ginkgo} run --nodes=8 --timeout=24h --silence-skips --force-newlines --no-color --label-filter="DRA && Feature: isSubsetOf { OffByDefault, DynamicResourceAllocation }$kubelet_label_filter && !Alpha && !Flaky && !Slow" ${e2e_test} -- -provider=local -report-dir="${ARTIFACTS}" -report-complete-ginkgo -report-complete-junit &
367379
GINKGO_E2E_PID=$!
368380
wait "${GINKGO_E2E_PID}"
369381
# docker-in-docker needs privileged mode

config/jobs/kubernetes/sig-node/dra.jinja

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -189,9 +189,16 @@ presubmits:
189189
major=$(echo "$revision" | sed -e 's/^v\([0-9]*\).*/\1/')
190190
minor=$(echo "$revision" | sed -e 's/^v[0-9]*\.\([0-9]*\).*/\1/')
191191
previous_minor=$((minor - {{kubelet_skew}}))
192-
# TODO: use dl.k8s.io/release for presubmits.
192+
{%- if ci %}
193+
# Test with the most recent CI build, doesn't even need to be released yet.
194+
# We want to know if those are broken.
193195
previous=$(curl --silent -L "https://dl.k8s.io/ci/latest-$major.$previous_minor.txt" )
194196
curl --silent -L "https://dl.k8s.io/ci/$previous/kubernetes-server-linux-amd64.tar.gz" | tar zxOf - kubernetes/server/bin/kubelet >/tmp/kubelet
197+
{%- else %}
198+
# Test with the lastest stable release to avoid breaking presubmits because of unrelated issues in a release candidate.
199+
previous=$(curl --silent -L "https://dl.k8s.io/release/stable-$major.$previous_minor.txt" )
200+
curl --silent -L "https://dl.k8s.io/release/$previous/kubernetes-server-linux-amd64.tar.gz" | tar zxOf - kubernetes/server/bin/kubelet >/tmp/kubelet
201+
{%- endif %}
195202
chmod a+rx /tmp/kubelet
196203
/tmp/kubelet --version
197204
worker_nodes=$(kind get nodes | grep worker)
@@ -200,10 +207,16 @@ presubmits:
200207
docker exec $n systemctl restart kubelet
201208
done
202209

203-
# We might need support for disabling tests which need a recent kubelet. We'll see...
210+
# We need support for disabling tests which need a recent kubelet.
211+
# If a test is labeled with `KubeletMinVersion:1.34`, then it cannot run
212+
# when the deployed kubelet is 1.32. This is enforced by
213+
# generating `KubeletMinVersion: isSubsetOf { 1.33, 1.34 }`, i.e.
214+
# not including the actual kubelet version and anything older
215+
# in an allow list.
216+
kubelet_label_filter="&& KubeletMinVersion: isSubsetOf { $( for v in $(seq $((previous_minor + 1)) $((minor - 1))); do echo "1.$v, "; done)1.$minor }"
204217
{%- endif %}
205218

206-
KUBECONFIG=${HOME}/.kube/config ${ginkgo} run --nodes=8 --timeout=24h --silence-skips --force-newlines --no-color --label-filter="DRA && Feature: isSubsetOf { OffByDefault, DynamicResourceAllocation } {%- if not all_features %} && !Alpha {%- endif %} && !Flaky {%- if not ci %} && !Slow {%- endif %}" ${e2e_test} -- -provider=local -report-dir="${ARTIFACTS}" -report-complete-ginkgo -report-complete-junit &
219+
KUBECONFIG=${HOME}/.kube/config ${ginkgo} run --nodes=8 --timeout=24h --silence-skips --force-newlines --no-color --label-filter="DRA && Feature: isSubsetOf { OffByDefault, DynamicResourceAllocation } {%- if kubelet_skew|int > 0 %}$kubelet_label_filter{%- endif %} {%- if not all_features %} && !Alpha {%- endif %} && !Flaky {%- if not ci %} && !Slow {%- endif %}" ${e2e_test} -- -provider=local -report-dir="${ARTIFACTS}" -report-complete-ginkgo -report-complete-junit &
207220
GINKGO_E2E_PID=$!
208221
wait "${GINKGO_E2E_PID}"
209222
{%- else -%}

0 commit comments

Comments
 (0)