mirror of
https://github.com/k3s-io/kubernetes.git
synced 2026-07-17 20:00:07 +00:00
Label unlabeled e2e node tests
Signed-off-by: Sascha Grunert <sgrunert@redhat.com>
This commit is contained in:
@@ -261,7 +261,7 @@ var _ = SIGDescribe("Probing container", func() {
|
||||
Testname: Pod liveness probe, container exec timeout, restart
|
||||
Description: A Pod is created with liveness probe with a Exec action on the Pod. If the liveness probe call does not return within the timeout specified, liveness probe MUST restart the Pod.
|
||||
*/
|
||||
ginkgo.It("should be restarted with a failing exec liveness probe that took longer than the timeout", func(ctx context.Context) {
|
||||
f.It("should be restarted with a failing exec liveness probe that took longer than the timeout", f.WithNodeConformance(), func(ctx context.Context) {
|
||||
cmd := []string{"/bin/sh", "-c", "sleep 600"}
|
||||
livenessProbe := &v1.Probe{
|
||||
ProbeHandler: execHandler([]string{"/bin/sh", "-c", "sleep 10 & exit 1"}),
|
||||
@@ -278,7 +278,7 @@ var _ = SIGDescribe("Probing container", func() {
|
||||
Testname: Pod http liveness probe, redirected to a local address
|
||||
Description: A Pod is created with liveness probe on http endpoint /redirect?loc=healthz. The http handler on the /redirect will redirect to the /healthz endpoint, which will return a http error after 10 seconds since the Pod is started. This MUST result in liveness check failure. The Pod MUST now be killed and restarted incrementing restart count to 1.
|
||||
*/
|
||||
ginkgo.It("should be restarted with a local redirect http liveness probe", func(ctx context.Context) {
|
||||
f.It("should be restarted with a local redirect http liveness probe", f.WithNodeConformance(), func(ctx context.Context) {
|
||||
livenessProbe := &v1.Probe{
|
||||
ProbeHandler: httpGetHandler("/redirect?loc="+url.QueryEscape("/healthz"), 8080),
|
||||
InitialDelaySeconds: 15,
|
||||
@@ -293,7 +293,7 @@ var _ = SIGDescribe("Probing container", func() {
|
||||
Testname: Pod http liveness probe, redirected to a non-local address
|
||||
Description: A Pod is created with liveness probe on http endpoint /redirect with a redirect to http://0.0.0.0/. The http handler on the /redirect should not follow the redirect, but instead treat it as a success and generate an event.
|
||||
*/
|
||||
ginkgo.It("should *not* be restarted with a non-local redirect http liveness probe", func(ctx context.Context) {
|
||||
f.It("should *not* be restarted with a non-local redirect http liveness probe", f.WithNodeConformance(), func(ctx context.Context) {
|
||||
livenessProbe := &v1.Probe{
|
||||
ProbeHandler: httpGetHandler("/redirect?loc="+url.QueryEscape("http://0.0.0.0/"), 8080),
|
||||
InitialDelaySeconds: 15,
|
||||
@@ -317,7 +317,7 @@ var _ = SIGDescribe("Probing container", func() {
|
||||
Testname: Pod startup probe restart
|
||||
Description: A Pod is created with a failing startup probe. The Pod MUST be killed and restarted incrementing restart count to 1, even if liveness would succeed.
|
||||
*/
|
||||
ginkgo.It("should be restarted startup probe fails", func(ctx context.Context) {
|
||||
f.It("should be restarted startup probe fails", f.WithNodeConformance(), func(ctx context.Context) {
|
||||
cmd := []string{"/bin/sh", "-c", "sleep 600"}
|
||||
livenessProbe := &v1.Probe{
|
||||
ProbeHandler: v1.ProbeHandler{
|
||||
@@ -346,7 +346,7 @@ var _ = SIGDescribe("Probing container", func() {
|
||||
Testname: Pod liveness probe delayed (long) by startup probe
|
||||
Description: A Pod is created with failing liveness and startup probes. Liveness probe MUST NOT fail until startup probe expires.
|
||||
*/
|
||||
ginkgo.It("should *not* be restarted by liveness probe because startup probe delays it", func(ctx context.Context) {
|
||||
f.It("should *not* be restarted by liveness probe because startup probe delays it", f.WithNodeConformance(), func(ctx context.Context) {
|
||||
cmd := []string{"/bin/sh", "-c", "sleep 600"}
|
||||
livenessProbe := &v1.Probe{
|
||||
ProbeHandler: v1.ProbeHandler{
|
||||
@@ -375,7 +375,7 @@ var _ = SIGDescribe("Probing container", func() {
|
||||
Testname: Pod liveness probe fails after startup success
|
||||
Description: A Pod is created with failing liveness probe and delayed startup probe that uses 'exec' command to cat /temp/health file. The Container is started by creating /tmp/startup after 10 seconds, triggering liveness probe to fail. The Pod MUST now be killed and restarted incrementing restart count to 1.
|
||||
*/
|
||||
ginkgo.It("should be restarted by liveness probe after startup probe enables it", func(ctx context.Context) {
|
||||
f.It("should be restarted by liveness probe after startup probe enables it", f.WithNodeConformance(), func(ctx context.Context) {
|
||||
cmd := []string{"/bin/sh", "-c", "sleep 10; echo ok >/tmp/startup; sleep 600"}
|
||||
livenessProbe := &v1.Probe{
|
||||
ProbeHandler: v1.ProbeHandler{
|
||||
@@ -404,7 +404,7 @@ var _ = SIGDescribe("Probing container", func() {
|
||||
Testname: Pod readiness probe, delayed by startup probe
|
||||
Description: A Pod is created with startup and readiness probes. The Container is started by creating /tmp/startup after 45 seconds, delaying the ready state by this amount of time. This is similar to the "Pod readiness probe, with initial delay" test.
|
||||
*/
|
||||
ginkgo.It("should be ready immediately after startupProbe succeeds", func(ctx context.Context) {
|
||||
f.It("should be ready immediately after startupProbe succeeds", f.WithNodeConformance(), func(ctx context.Context) {
|
||||
// Probe workers sleep at Kubelet start for a random time which is at most PeriodSeconds
|
||||
// this test requires both readiness and startup workers running before updating statuses
|
||||
// to avoid flakes, ensure sleep before startup (32s) > readinessProbe.PeriodSeconds
|
||||
@@ -562,7 +562,7 @@ var _ = SIGDescribe("Probing container", func() {
|
||||
RunLivenessTest(ctx, f, pod, 1, defaultObservationTimeout)
|
||||
})
|
||||
|
||||
ginkgo.It("should mark readiness on pods to false while pod is in progress of terminating when a pod has a readiness probe", func(ctx context.Context) {
|
||||
f.It("should mark readiness on pods to false while pod is in progress of terminating when a pod has a readiness probe", f.WithNodeConformance(), func(ctx context.Context) {
|
||||
podName := "probe-test-" + string(uuid.NewUUID())
|
||||
podClient := e2epod.NewPodClient(f)
|
||||
terminationGracePeriod := int64(30)
|
||||
@@ -628,7 +628,7 @@ done
|
||||
framework.ExpectNoError(err)
|
||||
})
|
||||
|
||||
ginkgo.It("should mark readiness on pods to false and disable liveness probes while pod is in progress of terminating", func(ctx context.Context) {
|
||||
f.It("should mark readiness on pods to false and disable liveness probes while pod is in progress of terminating", f.WithNodeConformance(), func(ctx context.Context) {
|
||||
podName := "probe-test-" + string(uuid.NewUUID())
|
||||
podClient := e2epod.NewPodClient(f)
|
||||
terminationGracePeriod := int64(30)
|
||||
|
||||
@@ -139,7 +139,7 @@ var _ = SIGDescribe("Downward API", func() {
|
||||
testDownwardAPI(ctx, f, podName, env, expectations)
|
||||
})
|
||||
|
||||
ginkgo.It("should provide host IP and pod IP as an env var if pod uses host network [LinuxOnly]", func(ctx context.Context) {
|
||||
f.It("should provide host IP and pod IP as an env var if pod uses host network [LinuxOnly]", f.WithNodeConformance(), func(ctx context.Context) {
|
||||
podName := "downward-api-" + string(uuid.NewUUID())
|
||||
env := []v1.EnvVar{
|
||||
{
|
||||
|
||||
@@ -28,6 +28,7 @@ import (
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/util/uuid"
|
||||
"k8s.io/kubernetes/pkg/features"
|
||||
"k8s.io/kubernetes/test/e2e/feature"
|
||||
"k8s.io/kubernetes/test/e2e/framework"
|
||||
e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
|
||||
e2epodoutput "k8s.io/kubernetes/test/e2e/framework/pod/output"
|
||||
@@ -38,7 +39,7 @@ import (
|
||||
"github.com/onsi/gomega"
|
||||
)
|
||||
|
||||
var _ = SIGDescribe("FileKeyRef", framework.WithFeatureGate(features.EnvFiles), func() {
|
||||
var _ = SIGDescribe("FileKeyRef", feature.EnvFiles, framework.WithFeatureGate(features.EnvFiles), func() {
|
||||
f := framework.NewDefaultFramework("filekeyref")
|
||||
f.NamespacePodSecurityLevel = admissionapi.LevelBaseline
|
||||
|
||||
|
||||
@@ -575,7 +575,7 @@ func validDuration(duration time.Duration, low, high int64) bool {
|
||||
return duration >= time.Second*time.Duration(low) && duration <= time.Second*time.Duration(high)
|
||||
}
|
||||
|
||||
var _ = SIGDescribe("Lifecycle Sleep Hook", func() {
|
||||
var _ = SIGDescribe("Lifecycle Sleep Hook", framework.WithNodeConformance(), func() {
|
||||
f := framework.NewDefaultFramework("pod-lifecycle-sleep-action")
|
||||
f.NamespacePodSecurityLevel = admissionapi.LevelBaseline
|
||||
var podClient *e2epod.PodClient
|
||||
@@ -732,7 +732,7 @@ var _ = SIGDescribe("Lifecycle Sleep Hook", func() {
|
||||
})
|
||||
})
|
||||
|
||||
var _ = SIGDescribe("Lifecycle sleep action zero value", func() {
|
||||
var _ = SIGDescribe("Lifecycle sleep action zero value", framework.WithNodeConformance(), func() {
|
||||
f := framework.NewDefaultFramework("pod-lifecycle-sleep-action-allow-zero")
|
||||
f.NamespacePodSecurityLevel = admissionapi.LevelBaseline
|
||||
var podClient *e2epod.PodClient
|
||||
|
||||
@@ -38,7 +38,7 @@ import (
|
||||
"github.com/onsi/gomega"
|
||||
)
|
||||
|
||||
var _ = SIGDescribe("NodeLease", func() {
|
||||
var _ = SIGDescribe("NodeLease", framework.WithNodeConformance(), func() {
|
||||
var nodeName string
|
||||
f := framework.NewDefaultFramework("node-lease-test")
|
||||
f.NamespacePodSecurityLevel = admissionapi.LevelPrivileged
|
||||
|
||||
@@ -52,7 +52,7 @@ func newTestPod(namespace string) *v1.Pod {
|
||||
}
|
||||
}
|
||||
|
||||
var _ = SIGDescribe("Override hostname of Pod", framework.WithFeatureGate(features.HostnameOverride), func() {
|
||||
var _ = SIGDescribe("Override hostname of Pod", framework.WithNodeConformance(), framework.WithFeatureGate(features.HostnameOverride), func() {
|
||||
f := framework.NewDefaultFramework("hostfqdn")
|
||||
f.NamespacePodSecurityLevel = admissionapi.LevelBaseline
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@ import (
|
||||
"k8s.io/apimachinery/pkg/types"
|
||||
"k8s.io/kubernetes/test/e2e/common/node/framework/cgroups"
|
||||
"k8s.io/kubernetes/test/e2e/common/node/framework/podresize"
|
||||
"k8s.io/kubernetes/test/e2e/feature"
|
||||
"k8s.io/kubernetes/test/e2e/framework"
|
||||
e2enode "k8s.io/kubernetes/test/e2e/framework/node"
|
||||
e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
|
||||
@@ -80,7 +81,7 @@ func offsetMemory(index int64, value string) string {
|
||||
}
|
||||
|
||||
func doGuaranteedPodResizeTests(f *framework.Framework) {
|
||||
ginkgo.DescribeTableSubtree("guaranteed qos - 1 container with resize policy", func(cpuPolicy, memPolicy v1.ResourceResizeRestartPolicy, resizeInitCtrs bool) {
|
||||
ginkgo.DescribeTableSubtree("guaranteed qos - 1 container with resize policy", feature.InPlacePodVerticalScaling, func(cpuPolicy, memPolicy v1.ResourceResizeRestartPolicy, resizeInitCtrs bool) {
|
||||
ginkgo.DescribeTable("resizing", func(ctx context.Context, desiredCPU, desiredMem string) {
|
||||
|
||||
// The tests for guaranteed pods include extended resources.
|
||||
@@ -237,7 +238,7 @@ type resourceRequestsLimits struct {
|
||||
}
|
||||
|
||||
func doBurstablePodResizeTests(f *framework.Framework) {
|
||||
ginkgo.DescribeTableSubtree("burstable pods - 1 container with all requests & limits set and resize policy", func(cpuPolicy, memPolicy v1.ResourceResizeRestartPolicy) {
|
||||
ginkgo.DescribeTableSubtree("burstable pods - 1 container with all requests & limits set and resize policy", feature.InPlacePodVerticalScaling, func(cpuPolicy, memPolicy v1.ResourceResizeRestartPolicy) {
|
||||
ginkgo.DescribeTable("resizing", func(ctx context.Context, desiredContainerResources resourceRequestsLimits) {
|
||||
originalContainers := makeBurstableContainers(1, cpuPolicy, memPolicy, originalCPU, originalCPULimit, originalMem, originalMemLimit)
|
||||
expectedContainers := makeBurstableContainers(1, cpuPolicy, memPolicy, desiredContainerResources.cpuReq, desiredContainerResources.cpuLim, desiredContainerResources.memReq, desiredContainerResources.memLim)
|
||||
@@ -366,7 +367,7 @@ func doBurstablePodResizeTests(f *framework.Framework) {
|
||||
}
|
||||
|
||||
func doPodResizePatchErrorTests(f *framework.Framework) {
|
||||
ginkgo.DescribeTable("apply invalid resize patch requests", func(ctx context.Context, originalContainers, desiredContainers []podresize.ResizableContainerInfo, patchError string, waitForStart bool) {
|
||||
ginkgo.DescribeTable("apply invalid resize patch requests", feature.InPlacePodVerticalScaling, func(ctx context.Context, originalContainers, desiredContainers []podresize.ResizableContainerInfo, patchError string, waitForStart bool) {
|
||||
podClient := e2epod.NewPodClient(f)
|
||||
var newPod *v1.Pod
|
||||
|
||||
@@ -611,7 +612,7 @@ func doPodResizeMemoryLimitDecreaseTest(f *framework.Framework) {
|
||||
// 1. Decrease the limit a little bit - should succeed
|
||||
// 2. Decrease the limit down to a tiny amount - should fail
|
||||
// 3. Revert the limit back to the original value - should succeed
|
||||
ginkgo.It("decrease memory limit below usage", func(ctx context.Context) {
|
||||
ginkgo.It("decrease memory limit below usage", feature.InPlacePodVerticalScaling, func(ctx context.Context) {
|
||||
podClient := e2epod.NewPodClient(f)
|
||||
original := []podresize.ResizableContainerInfo{{
|
||||
Name: "c1",
|
||||
|
||||
@@ -549,7 +549,7 @@ var _ = SIGDescribe("Security Context", func() {
|
||||
})
|
||||
})
|
||||
|
||||
ginkgo.Context("When creating a container with runAsNonRoot", func() {
|
||||
f.Context("When creating a container with runAsNonRoot", f.WithNodeConformance(), func() {
|
||||
rootImage := imageutils.GetE2EImage(imageutils.BusyBox)
|
||||
nonRootImage := imageutils.GetE2EImage(imageutils.NonRoot)
|
||||
makeNonRootPod := func(podName, image string, userid *int64) *v1.Pod {
|
||||
@@ -821,7 +821,7 @@ var _ = SIGDescribe("Security Context", func() {
|
||||
})
|
||||
})
|
||||
|
||||
f.Context("SupplementalGroupsPolicy [LinuxOnly]", func() {
|
||||
f.Context("SupplementalGroupsPolicy [LinuxOnly]", feature.SupplementalGroupsPolicy, func() {
|
||||
timeout := 1 * time.Minute
|
||||
|
||||
agnhostImage := imageutils.GetE2EImage(imageutils.Agnhost)
|
||||
|
||||
@@ -59,7 +59,7 @@ var _ = SIGDescribe("ConfigMap", func() {
|
||||
doConfigMapE2EWithoutMappings(ctx, f, false, 0, &defaultMode)
|
||||
})
|
||||
|
||||
f.It("should be consumable from pods in volume as non-root with defaultMode and fsGroup set [LinuxOnly]", func(ctx context.Context) {
|
||||
f.It("should be consumable from pods in volume as non-root with defaultMode and fsGroup set [LinuxOnly]", f.WithNodeConformance(), func(ctx context.Context) {
|
||||
// Windows does not support RunAsUser / FSGroup SecurityContext options, and it does not support setting file permissions.
|
||||
e2eskipper.SkipIfNodeOSDistroIs("windows")
|
||||
defaultMode := int32(0440) /* setting fsGroup sets mode to at least 440 */
|
||||
@@ -75,7 +75,7 @@ var _ = SIGDescribe("ConfigMap", func() {
|
||||
doConfigMapE2EWithoutMappings(ctx, f, true, 0, nil)
|
||||
})
|
||||
|
||||
f.It("should be consumable from pods in volume as non-root with FSGroup [LinuxOnly]", func(ctx context.Context) {
|
||||
f.It("should be consumable from pods in volume as non-root with FSGroup [LinuxOnly]", f.WithNodeConformance(), func(ctx context.Context) {
|
||||
// Windows does not support RunAsUser / FSGroup SecurityContext options.
|
||||
e2eskipper.SkipIfNodeOSDistroIs("windows")
|
||||
doConfigMapE2EWithoutMappings(ctx, f, true, 1001, nil)
|
||||
@@ -110,7 +110,7 @@ var _ = SIGDescribe("ConfigMap", func() {
|
||||
doConfigMapE2EWithMappings(ctx, f, true, 0, nil)
|
||||
})
|
||||
|
||||
f.It("should be consumable from pods in volume with mappings as non-root with FSGroup [LinuxOnly]", func(ctx context.Context) {
|
||||
f.It("should be consumable from pods in volume with mappings as non-root with FSGroup [LinuxOnly]", f.WithNodeConformance(), func(ctx context.Context) {
|
||||
// Windows does not support RunAsUser / FSGroup SecurityContext options.
|
||||
e2eskipper.SkipIfNodeOSDistroIs("windows")
|
||||
doConfigMapE2EWithMappings(ctx, f, true, 1001, nil)
|
||||
@@ -554,7 +554,7 @@ var _ = SIGDescribe("ConfigMap", func() {
|
||||
// The pod is in pending during volume creation until the configMap objects are available
|
||||
// or until mount the configMap volume times out. There is no configMap object defined for the pod, so it should return timeout exception unless it is marked optional.
|
||||
// Slow (~5 mins)
|
||||
f.It("Should fail non-optional pod creation due to configMap object does not exist", f.WithSlow(), func(ctx context.Context) {
|
||||
f.It("Should fail non-optional pod creation due to configMap object does not exist", f.WithSlow(), f.WithNodeConformance(), func(ctx context.Context) {
|
||||
volumeMountPath := "/etc/configmap-volumes"
|
||||
pod := createNonOptionalConfigMapPod(ctx, f, volumeMountPath)
|
||||
getPod := e2epod.Get(f.ClientSet, pod)
|
||||
@@ -564,7 +564,7 @@ var _ = SIGDescribe("ConfigMap", func() {
|
||||
// ConfigMap object defined for the pod, If a key is specified which is not present in the ConfigMap,
|
||||
// the volume setup will error unless it is marked optional, during the pod creation.
|
||||
// Slow (~5 mins)
|
||||
f.It("Should fail non-optional pod creation due to the key in the configMap object does not exist", f.WithSlow(), func(ctx context.Context) {
|
||||
f.It("Should fail non-optional pod creation due to the key in the configMap object does not exist", f.WithSlow(), f.WithNodeConformance(), func(ctx context.Context) {
|
||||
volumeMountPath := "/etc/configmap-volumes"
|
||||
pod := createNonOptionalConfigMapPodWithConfig(ctx, f, volumeMountPath)
|
||||
getPod := e2epod.Get(f.ClientSet, pod)
|
||||
|
||||
@@ -92,7 +92,7 @@ var _ = SIGDescribe("Downward API volume", func() {
|
||||
})
|
||||
})
|
||||
|
||||
f.It("should provide podname as non-root with fsgroup [LinuxOnly]", func(ctx context.Context) {
|
||||
f.It("should provide podname as non-root with fsgroup [LinuxOnly]", f.WithNodeConformance(), func(ctx context.Context) {
|
||||
// Windows does not support RunAsUser / FSGroup SecurityContext options.
|
||||
e2eskipper.SkipIfNodeOSDistroIs("windows")
|
||||
podName := "metadata-volume-" + string(uuid.NewUUID())
|
||||
@@ -107,7 +107,7 @@ var _ = SIGDescribe("Downward API volume", func() {
|
||||
})
|
||||
})
|
||||
|
||||
f.It("should provide podname as non-root with fsgroup and defaultMode [LinuxOnly]", func(ctx context.Context) {
|
||||
f.It("should provide podname as non-root with fsgroup and defaultMode [LinuxOnly]", f.WithNodeConformance(), func(ctx context.Context) {
|
||||
// Windows does not support RunAsUser / FSGroup SecurityContext options, and it does not support setting file permissions.
|
||||
e2eskipper.SkipIfNodeOSDistroIs("windows")
|
||||
podName := "metadata-volume-" + string(uuid.NewUUID())
|
||||
|
||||
@@ -48,7 +48,7 @@ var _ = SIGDescribe("EmptyDir volumes", func() {
|
||||
f := framework.NewDefaultFramework("emptydir")
|
||||
f.NamespacePodSecurityLevel = admissionapi.LevelBaseline
|
||||
|
||||
f.Context("when FSGroup is specified [LinuxOnly]", func() {
|
||||
f.Context("when FSGroup is specified [LinuxOnly]", f.WithNodeConformance(), func() {
|
||||
|
||||
ginkgo.BeforeEach(func() {
|
||||
// Windows does not support the FSGroup SecurityContext option.
|
||||
@@ -298,7 +298,7 @@ var _ = SIGDescribe("EmptyDir volumes", func() {
|
||||
Testname: EmptyDir, Memory backed volume is sized to specified limit
|
||||
Description: A Pod created with an 'emptyDir' Volume backed by memory should be sized to user provided value.
|
||||
*/
|
||||
ginkgo.It("pod should support memory backed volumes of specified size", func(ctx context.Context) {
|
||||
f.It("pod should support memory backed volumes of specified size", f.WithNodeConformance(), func(ctx context.Context) {
|
||||
var (
|
||||
volumeName = "shared-data"
|
||||
busyBoxMainVolumeMountPath = "/usr/share/volumeshare"
|
||||
|
||||
@@ -59,7 +59,7 @@ var _ = SIGDescribe("Projected configMap", func() {
|
||||
doProjectedConfigMapE2EWithoutMappings(ctx, f, false, 0, &defaultMode)
|
||||
})
|
||||
|
||||
f.It("should be consumable from pods in volume as non-root with defaultMode and fsGroup set [LinuxOnly]", func(ctx context.Context) {
|
||||
f.It("should be consumable from pods in volume as non-root with defaultMode and fsGroup set [LinuxOnly]", f.WithNodeConformance(), func(ctx context.Context) {
|
||||
// Windows does not support RunAsUser / FSGroup SecurityContext options, and it does not support setting file permissions.
|
||||
e2eskipper.SkipIfNodeOSDistroIs("windows")
|
||||
defaultMode := int32(0440) /* setting fsGroup sets mode to at least 440 */
|
||||
@@ -75,7 +75,7 @@ var _ = SIGDescribe("Projected configMap", func() {
|
||||
doProjectedConfigMapE2EWithoutMappings(ctx, f, true, 0, nil)
|
||||
})
|
||||
|
||||
f.It("should be consumable from pods in volume as non-root with FSGroup [LinuxOnly]", func(ctx context.Context) {
|
||||
f.It("should be consumable from pods in volume as non-root with FSGroup [LinuxOnly]", f.WithNodeConformance(), func(ctx context.Context) {
|
||||
// Windows does not support RunAsUser / FSGroup SecurityContext options.
|
||||
e2eskipper.SkipIfNodeOSDistroIs("windows")
|
||||
doProjectedConfigMapE2EWithoutMappings(ctx, f, true, 1001, nil)
|
||||
@@ -110,7 +110,7 @@ var _ = SIGDescribe("Projected configMap", func() {
|
||||
doProjectedConfigMapE2EWithMappings(ctx, f, true, 0, nil)
|
||||
})
|
||||
|
||||
f.It("should be consumable from pods in volume with mappings as non-root with FSGroup [LinuxOnly]", func(ctx context.Context) {
|
||||
f.It("should be consumable from pods in volume with mappings as non-root with FSGroup [LinuxOnly]", f.WithNodeConformance(), func(ctx context.Context) {
|
||||
// Windows does not support RunAsUser / FSGroup SecurityContext options.
|
||||
e2eskipper.SkipIfNodeOSDistroIs("windows")
|
||||
doProjectedConfigMapE2EWithMappings(ctx, f, true, 1001, nil)
|
||||
@@ -460,7 +460,7 @@ var _ = SIGDescribe("Projected configMap", func() {
|
||||
//The pod is in pending during volume creation until the configMap objects are available
|
||||
//or until mount the configMap volume times out. There is no configMap object defined for the pod, so it should return timeout exception unless it is marked optional.
|
||||
//Slow (~5 mins)
|
||||
f.It("Should fail non-optional pod creation due to configMap object does not exist", f.WithSlow(), func(ctx context.Context) {
|
||||
f.It("Should fail non-optional pod creation due to configMap object does not exist", f.WithSlow(), f.WithNodeConformance(), func(ctx context.Context) {
|
||||
volumeMountPath := "/etc/projected-configmap-volumes"
|
||||
pod := createNonOptionalConfigMapPod(ctx, f, volumeMountPath)
|
||||
getPod := e2epod.Get(f.ClientSet, pod)
|
||||
@@ -470,7 +470,7 @@ var _ = SIGDescribe("Projected configMap", func() {
|
||||
//ConfigMap object defined for the pod, If a key is specified which is not present in the ConfigMap,
|
||||
// the volume setup will error unless it is marked optional, during the pod creation.
|
||||
//Slow (~5 mins)
|
||||
f.It("Should fail non-optional pod creation due to the key in the configMap object does not exist", f.WithSlow(), func(ctx context.Context) {
|
||||
f.It("Should fail non-optional pod creation due to the key in the configMap object does not exist", f.WithSlow(), f.WithNodeConformance(), func(ctx context.Context) {
|
||||
volumeMountPath := "/etc/configmap-volumes"
|
||||
pod := createNonOptionalConfigMapPodWithConfig(ctx, f, volumeMountPath)
|
||||
getPod := e2epod.Get(f.ClientSet, pod)
|
||||
|
||||
@@ -92,7 +92,7 @@ var _ = SIGDescribe("Projected downwardAPI", func() {
|
||||
})
|
||||
})
|
||||
|
||||
f.It("should provide podname as non-root with fsgroup [LinuxOnly]", func(ctx context.Context) {
|
||||
f.It("should provide podname as non-root with fsgroup [LinuxOnly]", f.WithNodeConformance(), func(ctx context.Context) {
|
||||
// Windows does not support RunAsUser / FSGroup SecurityContext options.
|
||||
e2eskipper.SkipIfNodeOSDistroIs("windows")
|
||||
podName := "metadata-volume-" + string(uuid.NewUUID())
|
||||
@@ -107,7 +107,7 @@ var _ = SIGDescribe("Projected downwardAPI", func() {
|
||||
})
|
||||
})
|
||||
|
||||
f.It("should provide podname as non-root with fsgroup and defaultMode [LinuxOnly]", func(ctx context.Context) {
|
||||
f.It("should provide podname as non-root with fsgroup and defaultMode [LinuxOnly]", f.WithNodeConformance(), func(ctx context.Context) {
|
||||
// Windows does not support RunAsUser / FSGroup SecurityContext options, and it does not support setting file permissions.
|
||||
e2eskipper.SkipIfNodeOSDistroIs("windows")
|
||||
podName := "metadata-volume-" + string(uuid.NewUUID())
|
||||
|
||||
@@ -411,7 +411,7 @@ var _ = SIGDescribe("Projected secret", func() {
|
||||
//The secret is in pending during volume creation until the secret objects are available
|
||||
//or until mount the secret volume times out. There is no secret object defined for the pod, so it should return timeout exception unless it is marked optional.
|
||||
//Slow (~5 mins)
|
||||
f.It("Should fail non-optional pod creation due to secret object does not exist", f.WithSlow(), func(ctx context.Context) {
|
||||
f.It("Should fail non-optional pod creation due to secret object does not exist", f.WithSlow(), f.WithNodeConformance(), func(ctx context.Context) {
|
||||
volumeMountPath := "/etc/projected-secret-volumes"
|
||||
podName := "pod-secrets-" + string(uuid.NewUUID())
|
||||
pod := createNonOptionalSecretPod(ctx, f, volumeMountPath, podName)
|
||||
@@ -422,7 +422,7 @@ var _ = SIGDescribe("Projected secret", func() {
|
||||
//Secret object defined for the pod, If a key is specified which is not present in the secret,
|
||||
// the volume setup will error unless it is marked optional, during the pod creation.
|
||||
//Slow (~5 mins)
|
||||
f.It("Should fail non-optional pod creation due to the key in the secret object does not exist", f.WithSlow(), func(ctx context.Context) {
|
||||
f.It("Should fail non-optional pod creation due to the key in the secret object does not exist", f.WithSlow(), f.WithNodeConformance(), func(ctx context.Context) {
|
||||
volumeMountPath := "/etc/secret-volumes"
|
||||
podName := "pod-secrets-" + string(uuid.NewUUID())
|
||||
pod := createNonOptionalSecretPodWithSecret(ctx, f, volumeMountPath, podName)
|
||||
|
||||
@@ -436,7 +436,7 @@ var _ = SIGDescribe("Secrets", func() {
|
||||
// The secret is in pending during volume creation until the secret objects are available
|
||||
// or until mount the secret volume times out. There is no secret object defined for the pod, so it should return timeout exception unless it is marked optional.
|
||||
// Slow (~5 mins)
|
||||
f.It("Should fail non-optional pod creation due to secret object does not exist", f.WithSlow(), func(ctx context.Context) {
|
||||
f.It("Should fail non-optional pod creation due to secret object does not exist", f.WithSlow(), f.WithNodeConformance(), func(ctx context.Context) {
|
||||
volumeMountPath := "/etc/secret-volumes"
|
||||
podName := "pod-secrets-" + string(uuid.NewUUID())
|
||||
pod := createNonOptionalSecretPod(ctx, f, volumeMountPath, podName)
|
||||
@@ -447,7 +447,7 @@ var _ = SIGDescribe("Secrets", func() {
|
||||
// Secret object defined for the pod, If a key is specified which is not present in the secret,
|
||||
// the volume setup will error unless it is marked optional, during the pod creation.
|
||||
// Slow (~5 mins)
|
||||
f.It("Should fail non-optional pod creation due to the key in the secret object does not exist", f.WithSlow(), func(ctx context.Context) {
|
||||
f.It("Should fail non-optional pod creation due to the key in the secret object does not exist", f.WithSlow(), f.WithNodeConformance(), func(ctx context.Context) {
|
||||
volumeMountPath := "/etc/secret-volumes"
|
||||
podName := "pod-secrets-" + string(uuid.NewUUID())
|
||||
pod := createNonOptionalSecretPodWithSecret(ctx, f, volumeMountPath, podName)
|
||||
|
||||
@@ -129,6 +129,10 @@ var (
|
||||
// their dependency on specific feature gates and the corresponding API groups.
|
||||
DynamicResourceAllocation = framework.WithFeature(framework.ValidFeatures.Add("DynamicResourceAllocation"))
|
||||
|
||||
// Owner: sig-node
|
||||
// EnvFiles is used for testing the EnvFiles feature (file-based environment variables).
|
||||
EnvFiles = framework.WithFeature(framework.ValidFeatures.Add("EnvFiles"))
|
||||
|
||||
// TODO: document the feature (owning SIG, when to use this feature for a test)
|
||||
EphemeralStorage = framework.WithFeature(framework.ValidFeatures.Add("EphemeralStorage"))
|
||||
|
||||
@@ -202,6 +206,10 @@ var (
|
||||
// ImageVolume is used for testing the image volume source feature (https://kep.k8s.io/4639).
|
||||
ImageVolume = framework.WithFeature(framework.ValidFeatures.Add("ImageVolume"))
|
||||
|
||||
// Owner: sig-node
|
||||
// InPlacePodVerticalScaling is used for testing in-place pod vertical scaling (https://kep.k8s.io/1287).
|
||||
InPlacePodVerticalScaling = framework.WithFeature(framework.ValidFeatures.Add("InPlacePodVerticalScaling"))
|
||||
|
||||
// Owner: sig-network
|
||||
// Marks tests that require a conforming implementation of
|
||||
// Ingress.networking.k8s.io to be present.
|
||||
@@ -446,6 +454,10 @@ var (
|
||||
// TODO: document the feature (owning SIG, when to use this feature for a test)
|
||||
StorageVersionAPI = framework.WithFeature(framework.ValidFeatures.Add("StorageVersionAPI"))
|
||||
|
||||
// Owner: sig-node
|
||||
// SupplementalGroupsPolicy is used for testing the SupplementalGroupsPolicy feature.
|
||||
SupplementalGroupsPolicy = framework.WithFeature(framework.ValidFeatures.Add("SupplementalGroupsPolicy"))
|
||||
|
||||
// The Swap feature tests must run on nodes with the swap memory allocated and kubelet swap enabled. KEP-2400 (Node Swap Support)
|
||||
Swap = framework.WithFeature(framework.ValidFeatures.Add("NodeSwap"))
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ import (
|
||||
"k8s.io/utils/ptr"
|
||||
)
|
||||
|
||||
var _ = SIGDescribe("Mount recursive read-only [LinuxOnly]", func() {
|
||||
var _ = SIGDescribe("Mount recursive read-only [LinuxOnly]", framework.WithNodeConformance(), func() {
|
||||
f := framework.NewDefaultFramework("mount-rro")
|
||||
f.NamespacePodSecurityLevel = admissionapi.LevelPrivileged
|
||||
ginkgo.Describe("Mount recursive read-only", func() {
|
||||
|
||||
@@ -62,7 +62,7 @@ var _ = SIGDescribe("Pod conditions managed by Kubelet", func() {
|
||||
addAfterEachForCleaningUpPods(f)
|
||||
})
|
||||
|
||||
ginkgo.Context("without PodReadyToStartContainersCondition condition", func() {
|
||||
f.Context("without PodReadyToStartContainersCondition condition", f.WithNodeConformance(), func() {
|
||||
ginkgo.It("a pod without init containers should report all conditions set in expected order after the pod is up", runPodReadyConditionsTest(f, false, false))
|
||||
ginkgo.It("a pod with init containers should report all conditions set in expected order after the pod is up", runPodReadyConditionsTest(f, true, false))
|
||||
ginkgo.It("a pod failing to mount volumes and without init containers should report scheduled and initialized conditions set", runPodFailingConditionsTest(f, false, false))
|
||||
|
||||
@@ -37,7 +37,7 @@ import (
|
||||
admissionapi "k8s.io/pod-security-admission/api"
|
||||
)
|
||||
|
||||
var _ = common.SIGDescribe("Pod Host IPs", func() {
|
||||
var _ = common.SIGDescribe("Pod Host IPs", framework.WithNodeConformance(), func() {
|
||||
f := framework.NewDefaultFramework("host-ips")
|
||||
f.NamespacePodSecurityLevel = admissionapi.LevelPrivileged
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ import (
|
||||
admissionapi "k8s.io/pod-security-admission/api"
|
||||
)
|
||||
|
||||
var _ = common.SIGDescribe("Pod IPs", func() {
|
||||
var _ = common.SIGDescribe("Pod IPs", framework.WithNodeConformance(), func() {
|
||||
f := framework.NewDefaultFramework("pod-ips")
|
||||
f.NamespacePodSecurityLevel = admissionapi.LevelRestricted
|
||||
testFinalizer := "example.com/test-finalizer"
|
||||
|
||||
@@ -90,7 +90,7 @@ func makePodToVerifyCgroupSize(cgroupNames []string, expectedCPU string, expecte
|
||||
return pod
|
||||
}
|
||||
|
||||
var _ = SIGDescribe("Kubelet PodOverhead handling [LinuxOnly]", func() {
|
||||
var _ = SIGDescribe("Kubelet PodOverhead handling [LinuxOnly]", framework.WithNodeConformance(), func() {
|
||||
f := framework.NewDefaultFramework("podoverhead-handling")
|
||||
f.NamespacePodSecurityLevel = admissionapi.LevelPrivileged
|
||||
ginkgo.Describe("PodOverhead cgroup accounting", func() {
|
||||
|
||||
@@ -32,7 +32,7 @@ import (
|
||||
e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
|
||||
)
|
||||
|
||||
var _ = SIGDescribe("Terminate Pods", func() {
|
||||
var _ = SIGDescribe("Terminate Pods", framework.WithNodeConformance(), func() {
|
||||
f := framework.NewDefaultFramework("terminate-pods")
|
||||
f.NamespacePodSecurityLevel = admissionapi.LevelBaseline
|
||||
|
||||
|
||||
Reference in New Issue
Block a user