Skip to content

Commit a915a0a

Browse files
committed
DRA canary: filter by kubelet version, use stable release for presubmit
As expected some tests fail because they test aspects of the kubelet which were added in more recent releases, like seamless upgrades. That test can labeled with KubeletMinVersion:1.33 to avoid running it with kubelet 1.32. The CI artifacts worked okay in previous canary tests, but want we want for presubmits are the stable releases to avoid breaking PR testing for reasons that are not under control of the PR author.
1 parent 2e20342 commit a915a0a

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)