From ee4d54c70c98d89e06d66142345791db852f8278 Mon Sep 17 00:00:00 2001 From: Manjunath A Kumatagi Date: Tue, 29 Aug 2017 14:02:08 +0530 Subject: [PATCH] Port e2e tests for multi architecture --- test/e2e/apimachinery/garbage_collector.go | 7 +- test/e2e/apimachinery/generated_clientset.go | 7 +- test/e2e/apimachinery/initializers.go | 3 +- test/e2e/apimachinery/table_conversion.go | 3 +- test/e2e/apps/cronjob.go | 3 +- test/e2e/apps/rc.go | 6 +- test/e2e/apps/replica_set.go | 6 +- test/e2e/apps/statefulset.go | 3 +- test/e2e/apps/types.go | 11 +- test/e2e/auth/service_accounts.go | 11 +- test/e2e/common/apparmor.go | 2 +- test/e2e/common/autoscaling_utils.go | 8 +- test/e2e/common/configmap.go | 26 ++-- test/e2e/common/container_probe.go | 15 +- test/e2e/common/docker_containers.go | 3 +- test/e2e/common/downward_api.go | 4 +- test/e2e/common/downwardapi_volume.go | 20 +-- test/e2e/common/empty_dir.go | 10 +- test/e2e/common/expansion.go | 6 +- test/e2e/common/host_path.go | 4 +- test/e2e/common/init_container.go | 20 +-- test/e2e/common/kubelet_etc_hosts.go | 4 +- test/e2e/common/pods.go | 19 +-- test/e2e/common/privileged.go | 6 +- test/e2e/common/projected.go | 50 +++---- test/e2e/common/secrets.go | 22 +-- test/e2e/common/sysctl.go | 2 +- test/e2e/common/util.go | 27 ++-- test/e2e/framework/jobs_util.go | 2 +- test/e2e/framework/networking_utils.go | 5 +- test/e2e/framework/nodes_util.go | 3 +- test/e2e/framework/pv_util.go | 2 +- test/e2e/framework/service_util.go | 5 +- test/e2e/framework/statefulset_utils.go | 3 +- test/e2e/framework/util.go | 17 ++- test/e2e/framework/volume_util.go | 3 +- .../instrumentation/logging/generic_soak.go | 3 +- test/e2e/kubectl/kubectl.go | 141 ++++++++++-------- test/e2e/kubectl/portforward.go | 5 +- test/e2e/lifecycle/addon_update.go | 15 +- test/e2e/network/dns.go | 7 +- test/e2e/network/dns_common.go | 3 +- test/e2e/network/kube_proxy.go | 3 +- test/e2e/network/network_policy.go | 5 +- test/e2e/network/networking_perf.go | 5 +- test/e2e/network/no_snat.go | 10 +- test/e2e/network/proxy.go | 3 +- test/e2e/network/service.go | 3 +- test/e2e/node/kubelet.go | 3 +- test/e2e/node/security_context.go | 3 +- test/e2e/pod_gc.go | 3 +- test/e2e/pods.go | 5 +- test/e2e/pre_stop.go | 5 +- test/e2e/scheduling/nvidia-gpus.go | 4 +- test/e2e/servicecatalog/podpreset.go | 5 +- test/e2e/storage/empty_dir_wrapper.go | 7 +- test/e2e/storage/pd.go | 3 +- test/e2e/storage/volume_provisioning.go | 3 +- test/e2e/storage/vsphere_utils.go | 5 +- test/e2e/upgrades/apps/deployments.go | 3 +- test/e2e/upgrades/configmaps.go | 5 +- test/e2e/upgrades/secrets.go | 5 +- test/e2e/upgrades/sysctl.go | 3 +- test/e2e_federation/job.go | 3 +- test/e2e_federation/util.go | 3 +- test/e2e_node/apparmor_test.go | 2 +- test/e2e_node/container_manager_test.go | 5 +- test/e2e_node/disk_eviction_test.go | 2 +- test/e2e_node/docker_test.go | 5 +- test/e2e_node/garbage_collector_test.go | 2 +- test/e2e_node/gpus.go | 2 +- test/e2e_node/image_list.go | 9 +- test/e2e_node/inode_eviction_test.go | 6 +- test/e2e_node/kubelet_test.go | 8 +- test/e2e_node/lifecycle_hook_test.go | 7 +- ...local_storage_allocatable_eviction_test.go | 4 +- .../local_storage_isolation_eviction_test.go | 8 +- test/e2e_node/log_path_test.go | 4 +- test/e2e_node/mirror_pod_test.go | 3 +- test/e2e_node/pods_container_manager_test.go | 4 +- test/e2e_node/runtime_conformance_test.go | 12 +- test/e2e_node/security_context_test.go | 15 +- test/e2e_node/summary_test.go | 2 +- test/e2e_node/util.go | 2 + test/e2e_node/volume_manager_test.go | 4 +- 85 files changed, 411 insertions(+), 314 deletions(-) diff --git a/test/e2e/apimachinery/garbage_collector.go b/test/e2e/apimachinery/garbage_collector.go index b9dedf9353..0bb39b08ab 100644 --- a/test/e2e/apimachinery/garbage_collector.go +++ b/test/e2e/apimachinery/garbage_collector.go @@ -41,6 +41,7 @@ import ( . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" + imageutils "k8s.io/kubernetes/test/utils/image" ) func getForegroundOptions() *metav1.DeleteOptions { @@ -79,7 +80,7 @@ func getPodTemplateSpec(labels map[string]string) v1.PodTemplateSpec { Containers: []v1.Container{ { Name: "nginx", - Image: "gcr.io/google_containers/nginx-slim:0.7", + Image: imageutils.GetE2EImage(imageutils.NginxSlim), }, }, }, @@ -179,7 +180,7 @@ func newGCPod(name string) *v1.Pod { Containers: []v1.Container{ { Name: "nginx", - Image: "gcr.io/google_containers/nginx:1.7.9", + Image: imageutils.GetE2EImage(imageutils.NginxSlim), }, }, }, @@ -287,7 +288,7 @@ func newCronJob(name, schedule string) *batchv2alpha1.CronJob { Containers: []v1.Container{ { Name: "c", - Image: "gcr.io/google_containers/busybox:1.24", + Image: imageutils.GetBusyBoxImage(), Command: []string{"sleep", "300"}, }, }, diff --git a/test/e2e/apimachinery/generated_clientset.go b/test/e2e/apimachinery/generated_clientset.go index f5ac6b42db..19988f2bfc 100644 --- a/test/e2e/apimachinery/generated_clientset.go +++ b/test/e2e/apimachinery/generated_clientset.go @@ -34,6 +34,7 @@ import ( . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" + imageutils "k8s.io/kubernetes/test/utils/image" ) func stagingClientPod(name, value string) v1.Pod { @@ -49,7 +50,7 @@ func stagingClientPod(name, value string) v1.Pod { Containers: []v1.Container{ { Name: "nginx", - Image: "gcr.io/google_containers/nginx-slim:0.7", + Image: imageutils.GetE2EImage(imageutils.NginxSlim), Ports: []v1.ContainerPort{{ContainerPort: 80}}, }, }, @@ -70,7 +71,7 @@ func testingPod(name, value string) v1.Pod { Containers: []v1.Container{ { Name: "nginx", - Image: "gcr.io/google_containers/nginx-slim:0.7", + Image: imageutils.GetE2EImage(imageutils.NginxSlim), Ports: []v1.ContainerPort{{ContainerPort: 80}}, LivenessProbe: &v1.Probe{ Handler: v1.Handler{ @@ -243,7 +244,7 @@ func newTestingCronJob(name string, value string) *batchv2alpha1.CronJob { Containers: []v1.Container{ { Name: "c", - Image: "gcr.io/google_containers/busybox:1.24", + Image: imageutils.GetBusyBoxImage(), VolumeMounts: []v1.VolumeMount{ { MountPath: "/data", diff --git a/test/e2e/apimachinery/initializers.go b/test/e2e/apimachinery/initializers.go index 61224ecba8..babf1ecebb 100644 --- a/test/e2e/apimachinery/initializers.go +++ b/test/e2e/apimachinery/initializers.go @@ -34,6 +34,7 @@ import ( clientset "k8s.io/client-go/kubernetes" clientretry "k8s.io/client-go/util/retry" "k8s.io/kubernetes/test/e2e/framework" + imageutils "k8s.io/kubernetes/test/utils/image" ) var _ = SIGDescribe("Initializers [Feature:Initializers]", func() { @@ -334,7 +335,7 @@ func newInitPod(podName string) *v1.Pod { Containers: []v1.Container{ { Name: containerName, - Image: "gcr.io/google_containers/porter:4524579c0eb935c056c8e75563b4e1eda31587e0", + Image: imageutils.GetE2EImage(imageutils.Porter), Env: []v1.EnvVar{{Name: fmt.Sprintf("SERVE_PORT_%d", port), Value: "foo"}}, Ports: []v1.ContainerPort{{ContainerPort: int32(port)}}, }, diff --git a/test/e2e/apimachinery/table_conversion.go b/test/e2e/apimachinery/table_conversion.go index 21620c769e..a3dc3bd6e4 100644 --- a/test/e2e/apimachinery/table_conversion.go +++ b/test/e2e/apimachinery/table_conversion.go @@ -30,6 +30,7 @@ import ( metav1alpha1 "k8s.io/apimachinery/pkg/apis/meta/v1alpha1" "k8s.io/kubernetes/pkg/printers" "k8s.io/kubernetes/test/e2e/framework" + imageutils "k8s.io/kubernetes/test/utils/image" ) var _ = SIGDescribe("Servers with support for Table transformation", func() { @@ -110,7 +111,7 @@ func newTablePod(podName string) *v1.Pod { Containers: []v1.Container{ { Name: containerName, - Image: "gcr.io/google_containers/porter:4524579c0eb935c056c8e75563b4e1eda31587e0", + Image: imageutils.GetE2EImage(imageutils.Porter), Env: []v1.EnvVar{{Name: fmt.Sprintf("SERVE_PORT_%d", port), Value: "foo"}}, Ports: []v1.ContainerPort{{ContainerPort: int32(port)}}, }, diff --git a/test/e2e/apps/cronjob.go b/test/e2e/apps/cronjob.go index 3d8f70e35d..c5c1802612 100644 --- a/test/e2e/apps/cronjob.go +++ b/test/e2e/apps/cronjob.go @@ -35,6 +35,7 @@ import ( "k8s.io/kubernetes/pkg/controller/job" "k8s.io/kubernetes/pkg/kubectl" "k8s.io/kubernetes/test/e2e/framework" + imageutils "k8s.io/kubernetes/test/utils/image" ) const ( @@ -303,7 +304,7 @@ func newTestCronJob(name, schedule string, concurrencyPolicy batchv2alpha1.Concu Containers: []v1.Container{ { Name: "c", - Image: "gcr.io/google_containers/busybox:1.24", + Image: imageutils.GetBusyBoxImage(), VolumeMounts: []v1.VolumeMount{ { MountPath: "/data", diff --git a/test/e2e/apps/rc.go b/test/e2e/apps/rc.go index 62ef1704a9..8d61c3f480 100644 --- a/test/e2e/apps/rc.go +++ b/test/e2e/apps/rc.go @@ -29,6 +29,7 @@ import ( "k8s.io/apimachinery/pkg/util/wait" "k8s.io/kubernetes/pkg/controller/replication" "k8s.io/kubernetes/test/e2e/framework" + imageutils "k8s.io/kubernetes/test/utils/image" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" @@ -44,8 +45,9 @@ var _ = SIGDescribe("ReplicationController", func() { It("should serve a basic image on each replica with a private image", func() { // requires private images framework.SkipUnlessProviderIs("gce", "gke") - - TestReplicationControllerServeImageOrFail(f, "private", "gcr.io/k8s-authenticated-test/serve_hostname:v1.4") + privateimage := imageutils.ServeHostname + privateimage.SetRegistry(imageutils.PrivateRegistry) + TestReplicationControllerServeImageOrFail(f, "private", imageutils.GetE2EImage(privateimage)) }) It("should surface a failure condition on a common issue like exceeded quota", func() { diff --git a/test/e2e/apps/replica_set.go b/test/e2e/apps/replica_set.go index a1c15d44e9..1b9293c68e 100644 --- a/test/e2e/apps/replica_set.go +++ b/test/e2e/apps/replica_set.go @@ -33,6 +33,7 @@ import ( . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" + imageutils "k8s.io/kubernetes/test/utils/image" ) func newRS(rsName string, replicas int32, rsPodLabels map[string]string, imageName string, image string) *extensions.ReplicaSet { @@ -84,8 +85,9 @@ var _ = SIGDescribe("ReplicaSet", func() { It("should serve a basic image on each replica with a private image", func() { // requires private images framework.SkipUnlessProviderIs("gce", "gke") - - testReplicaSetServeImageOrFail(f, "private", "gcr.io/k8s-authenticated-test/serve_hostname:v1.4") + privateimage := imageutils.ServeHostname + privateimage.SetRegistry(imageutils.PrivateRegistry) + testReplicaSetServeImageOrFail(f, "private", imageutils.GetE2EImage(privateimage)) }) It("should surface a failure condition on a common issue like exceeded quota", func() { diff --git a/test/e2e/apps/statefulset.go b/test/e2e/apps/statefulset.go index 416f5a9cef..eef79cb43a 100644 --- a/test/e2e/apps/statefulset.go +++ b/test/e2e/apps/statefulset.go @@ -33,6 +33,7 @@ import ( "k8s.io/apimachinery/pkg/watch" clientset "k8s.io/client-go/kubernetes" "k8s.io/kubernetes/test/e2e/framework" + imageutils "k8s.io/kubernetes/test/utils/image" ) const ( @@ -777,7 +778,7 @@ var _ = SIGDescribe("StatefulSet", func() { Containers: []v1.Container{ { Name: "nginx", - Image: "gcr.io/google_containers/nginx-slim:0.7", + Image: imageutils.GetE2EImage(imageutils.NginxSlim), Ports: []v1.ContainerPort{conflictingPort}, }, }, diff --git a/test/e2e/apps/types.go b/test/e2e/apps/types.go index 2f875e947a..9922ddba47 100644 --- a/test/e2e/apps/types.go +++ b/test/e2e/apps/types.go @@ -19,18 +19,19 @@ package apps import ( "k8s.io/apimachinery/pkg/runtime/schema" batchv2alpha1 "k8s.io/kubernetes/pkg/apis/batch/v2alpha1" + imageutils "k8s.io/kubernetes/test/utils/image" ) const ( - NautilusImage = "gcr.io/google_containers/update-demo:nautilus" - KittenImage = "gcr.io/google_containers/update-demo:kitten" - NginxImage = "gcr.io/google_containers/nginx-slim:0.7" NginxImageName = "nginx" - RedisImage = "gcr.io/k8s-testimages/redis:e2e" RedisImageName = "redis" - NewNginxImage = "gcr.io/google_containers/nginx-slim:0.8" ) var ( CronJobGroupVersionResource = schema.GroupVersionResource{Group: batchv2alpha1.GroupName, Version: "v2alpha1", Resource: "cronjobs"} + NautilusImage = imageutils.GetE2EImage(imageutils.Nautilus) + KittenImage = imageutils.GetE2EImage(imageutils.Kitten) + NginxImage = imageutils.GetE2EImage(imageutils.NginxSlim) + NewNginxImage = imageutils.GetE2EImage(imageutils.NginxSlimNew) + RedisImage = imageutils.GetE2EImage(imageutils.Redis) ) diff --git a/test/e2e/auth/service_accounts.go b/test/e2e/auth/service_accounts.go index 010fc5dc79..98776d8c4f 100644 --- a/test/e2e/auth/service_accounts.go +++ b/test/e2e/auth/service_accounts.go @@ -28,11 +28,14 @@ import ( utilversion "k8s.io/kubernetes/pkg/util/version" "k8s.io/kubernetes/plugin/pkg/admission/serviceaccount" "k8s.io/kubernetes/test/e2e/framework" + imageutils "k8s.io/kubernetes/test/utils/image" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) +var mountImage = imageutils.GetE2EImage(imageutils.Mounttest) + var serviceAccountTokenNamespaceVersion = utilversion.MustParseSemantic("v1.2.0") var serviceAccountTokenAutomountVersion = utilversion.MustParseSemantic("v1.6.0-alpha.2") @@ -200,14 +203,14 @@ var _ = SIGDescribe("ServiceAccounts", func() { Containers: []v1.Container{ { Name: "token-test", - Image: "gcr.io/google_containers/mounttest:0.8", + Image: mountImage, Args: []string{ fmt.Sprintf("--file_content=%s/%s", serviceaccount.DefaultAPITokenMountPath, v1.ServiceAccountTokenKey), }, }, { Name: "root-ca-test", - Image: "gcr.io/google_containers/mounttest:0.8", + Image: mountImage, Args: []string{ fmt.Sprintf("--file_content=%s/%s", serviceaccount.DefaultAPITokenMountPath, v1.ServiceAccountRootCAKey), }, @@ -221,7 +224,7 @@ var _ = SIGDescribe("ServiceAccounts", func() { if supportsTokenNamespace { pod.Spec.Containers = append(pod.Spec.Containers, v1.Container{ Name: "namespace-test", - Image: "gcr.io/google_containers/mounttest:0.8", + Image: mountImage, Args: []string{ fmt.Sprintf("--file_content=%s/%s", serviceaccount.DefaultAPITokenMountPath, v1.ServiceAccountNamespaceKey), }, @@ -356,7 +359,7 @@ var _ = SIGDescribe("ServiceAccounts", func() { pod := &v1.Pod{ ObjectMeta: metav1.ObjectMeta{Name: tc.PodName}, Spec: v1.PodSpec{ - Containers: []v1.Container{{Name: "token-test", Image: "gcr.io/google_containers/mounttest:0.8"}}, + Containers: []v1.Container{{Name: "token-test", Image: mountImage}}, RestartPolicy: v1.RestartPolicyNever, ServiceAccountName: tc.ServiceAccountName, AutomountServiceAccountToken: tc.AutomountPodSpec, diff --git a/test/e2e/common/apparmor.go b/test/e2e/common/apparmor.go index 277ad51d96..efe8716222 100644 --- a/test/e2e/common/apparmor.go +++ b/test/e2e/common/apparmor.go @@ -84,7 +84,7 @@ done`, testCmd) Spec: api.PodSpec{ Containers: []api.Container{{ Name: "test", - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Command: []string{"sh", "-c", testCmd}, }}, RestartPolicy: api.RestartPolicyNever, diff --git a/test/e2e/common/autoscaling_utils.go b/test/e2e/common/autoscaling_utils.go index 16cb7793b8..bb6d54ad02 100644 --- a/test/e2e/common/autoscaling_utils.go +++ b/test/e2e/common/autoscaling_utils.go @@ -37,6 +37,7 @@ import ( testutils "k8s.io/kubernetes/test/utils" . "github.com/onsi/ginkgo" + imageutils "k8s.io/kubernetes/test/utils/image" ) const ( @@ -50,8 +51,6 @@ const ( timeoutRC = 120 * time.Second startServiceTimeout = time.Minute startServiceInterval = 5 * time.Second - resourceConsumerImage = "gcr.io/google_containers/resource_consumer:beta4" - resourceConsumerControllerImage = "gcr.io/google_containers/resource_consumer/controller:beta4" rcIsNil = "ERROR: replicationController = nil" deploymentIsNil = "ERROR: deployment = nil" rsIsNil = "ERROR: replicaset = nil" @@ -61,6 +60,11 @@ const ( serviceInitializationInterval = 15 * time.Second ) +var ( + resourceConsumerImage = imageutils.GetE2EImage(imageutils.ResourceConsumer) + resourceConsumerControllerImage = imageutils.GetE2EImage(imageutils.ResourceController) +) + const ( KindRC = "ReplicationController" KindDeployment = "Deployment" diff --git a/test/e2e/common/configmap.go b/test/e2e/common/configmap.go index cabc049752..098ef1fbc2 100644 --- a/test/e2e/common/configmap.go +++ b/test/e2e/common/configmap.go @@ -116,8 +116,8 @@ var _ = framework.KubeDescribe("ConfigMap", func() { Containers: []v1.Container{ { Name: containerName, - Image: "gcr.io/google_containers/mounttest:0.8", - Command: []string{"/mt", "--break_on_expected_content=false", containerTimeoutArg, "--file_content_in_loop=/etc/configmap-volume/data-1"}, + Image: mountImage, + Command: []string{"/mounttest", "--break_on_expected_content=false", containerTimeoutArg, "--file_content_in_loop=/etc/configmap-volume/data-1"}, VolumeMounts: []v1.VolumeMount{ { Name: volumeName, @@ -248,8 +248,8 @@ var _ = framework.KubeDescribe("ConfigMap", func() { Containers: []v1.Container{ { Name: deleteContainerName, - Image: "gcr.io/google_containers/mounttest:0.8", - Command: []string{"/mt", "--break_on_expected_content=false", containerTimeoutArg, "--file_content_in_loop=/etc/configmap-volumes/delete/data-1"}, + Image: mountImage, + Command: []string{"/mounttest", "--break_on_expected_content=false", containerTimeoutArg, "--file_content_in_loop=/etc/configmap-volumes/delete/data-1"}, VolumeMounts: []v1.VolumeMount{ { Name: deleteVolumeName, @@ -260,8 +260,8 @@ var _ = framework.KubeDescribe("ConfigMap", func() { }, { Name: updateContainerName, - Image: "gcr.io/google_containers/mounttest:0.8", - Command: []string{"/mt", "--break_on_expected_content=false", containerTimeoutArg, "--file_content_in_loop=/etc/configmap-volumes/update/data-3"}, + Image: mountImage, + Command: []string{"/mounttest", "--break_on_expected_content=false", containerTimeoutArg, "--file_content_in_loop=/etc/configmap-volumes/update/data-3"}, VolumeMounts: []v1.VolumeMount{ { Name: updateVolumeName, @@ -272,8 +272,8 @@ var _ = framework.KubeDescribe("ConfigMap", func() { }, { Name: createContainerName, - Image: "gcr.io/google_containers/mounttest:0.8", - Command: []string{"/mt", "--break_on_expected_content=false", containerTimeoutArg, "--file_content_in_loop=/etc/configmap-volumes/create/data-1"}, + Image: mountImage, + Command: []string{"/mounttest", "--break_on_expected_content=false", containerTimeoutArg, "--file_content_in_loop=/etc/configmap-volumes/create/data-1"}, VolumeMounts: []v1.VolumeMount{ { Name: createVolumeName, @@ -344,7 +344,7 @@ var _ = framework.KubeDescribe("ConfigMap", func() { Containers: []v1.Container{ { Name: "env-test", - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Command: []string{"sh", "-c", "env"}, Env: []v1.EnvVar{ { @@ -387,7 +387,7 @@ var _ = framework.KubeDescribe("ConfigMap", func() { Containers: []v1.Container{ { Name: "env-test", - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Command: []string{"sh", "-c", "env"}, EnvFrom: []v1.EnvFromSource{ { @@ -456,7 +456,7 @@ var _ = framework.KubeDescribe("ConfigMap", func() { Containers: []v1.Container{ { Name: "configmap-volume-test", - Image: "gcr.io/google_containers/mounttest:0.8", + Image: mountImage, Args: []string{"--file_content=/etc/configmap-volume/data-1"}, VolumeMounts: []v1.VolumeMount{ { @@ -550,7 +550,7 @@ func doConfigMapE2EWithoutMappings(f *framework.Framework, uid, fsGroup int64, d Containers: []v1.Container{ { Name: "configmap-volume-test", - Image: "gcr.io/google_containers/mounttest:0.8", + Image: mountImage, Args: []string{ "--file_content=/etc/configmap-volume/data-1", "--file_mode=/etc/configmap-volume/data-1"}, @@ -636,7 +636,7 @@ func doConfigMapE2EWithMappings(f *framework.Framework, uid, fsGroup int64, item Containers: []v1.Container{ { Name: "configmap-volume-test", - Image: "gcr.io/google_containers/mounttest:0.8", + Image: mountImage, Args: []string{"--file_content=/etc/configmap-volume/path/to/data-2", "--file_mode=/etc/configmap-volume/path/to/data-2"}, VolumeMounts: []v1.VolumeMount{ diff --git a/test/e2e/common/container_probe.go b/test/e2e/common/container_probe.go index 140ccf7e0d..7611b2903a 100644 --- a/test/e2e/common/container_probe.go +++ b/test/e2e/common/container_probe.go @@ -30,6 +30,7 @@ import ( . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" + imageutils "k8s.io/kubernetes/test/utils/image" ) const ( @@ -105,7 +106,7 @@ var _ = framework.KubeDescribe("Probing container", func() { Containers: []v1.Container{ { Name: "liveness", - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Command: []string{"/bin/sh", "-c", "echo ok >/tmp/health; sleep 10; rm -rf /tmp/health; sleep 600"}, LivenessProbe: &v1.Probe{ Handler: v1.Handler{ @@ -132,7 +133,7 @@ var _ = framework.KubeDescribe("Probing container", func() { Containers: []v1.Container{ { Name: "liveness", - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Command: []string{"/bin/sh", "-c", "echo ok >/tmp/health; sleep 600"}, LivenessProbe: &v1.Probe{ Handler: v1.Handler{ @@ -159,7 +160,7 @@ var _ = framework.KubeDescribe("Probing container", func() { Containers: []v1.Container{ { Name: "liveness", - Image: "gcr.io/google_containers/liveness:e2e", + Image: imageutils.GetE2EImage(imageutils.Liveness), Command: []string{"/server"}, LivenessProbe: &v1.Probe{ Handler: v1.Handler{ @@ -188,7 +189,7 @@ var _ = framework.KubeDescribe("Probing container", func() { Containers: []v1.Container{ { Name: "liveness", - Image: "gcr.io/google_containers/liveness:e2e", + Image: imageutils.GetE2EImage(imageutils.Liveness), Command: []string{"/server"}, LivenessProbe: &v1.Probe{ Handler: v1.Handler{ @@ -216,7 +217,7 @@ var _ = framework.KubeDescribe("Probing container", func() { Containers: []v1.Container{ { Name: "liveness", - Image: "gcr.io/google_containers/nginx-slim:0.7", + Image: imageutils.GetE2EImage(imageutils.NginxSlim), Ports: []v1.ContainerPort{{ContainerPort: 80}}, LivenessProbe: &v1.Probe{ Handler: v1.Handler{ @@ -247,7 +248,7 @@ var _ = framework.KubeDescribe("Probing container", func() { Containers: []v1.Container{ { Name: "liveness", - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Command: []string{"/bin/sh", "-c", "sleep 600"}, LivenessProbe: &v1.Probe{ Handler: v1.Handler{ @@ -303,7 +304,7 @@ func makePodSpec(readinessProbe, livenessProbe *v1.Probe) *v1.Pod { Containers: []v1.Container{ { Name: probTestContainerName, - Image: "gcr.io/google_containers/test-webserver:e2e", + Image: imageutils.GetE2EImage(imageutils.TestWebserver), LivenessProbe: livenessProbe, ReadinessProbe: readinessProbe, }, diff --git a/test/e2e/common/docker_containers.go b/test/e2e/common/docker_containers.go index e9f019ef62..c527976d59 100644 --- a/test/e2e/common/docker_containers.go +++ b/test/e2e/common/docker_containers.go @@ -21,6 +21,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/uuid" "k8s.io/kubernetes/test/e2e/framework" + imageutils "k8s.io/kubernetes/test/utils/image" . "github.com/onsi/ginkgo" ) @@ -80,7 +81,7 @@ func entrypointTestPod() *v1.Pod { Containers: []v1.Container{ { Name: testContainerName, - Image: "gcr.io/google_containers/eptest:0.1", + Image: imageutils.GetE2EImage(imageutils.EntrypointTester), }, }, RestartPolicy: v1.RestartPolicyNever, diff --git a/test/e2e/common/downward_api.go b/test/e2e/common/downward_api.go index c2347949cb..cab32eaf28 100644 --- a/test/e2e/common/downward_api.go +++ b/test/e2e/common/downward_api.go @@ -172,7 +172,7 @@ var _ = framework.KubeDescribe("Downward API", func() { Containers: []v1.Container{ { Name: "dapi-container", - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Command: []string{"sh", "-c", "env"}, Env: env, }, @@ -195,7 +195,7 @@ func testDownwardAPI(f *framework.Framework, podName string, env []v1.EnvVar, ex Containers: []v1.Container{ { Name: "dapi-container", - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Command: []string{"sh", "-c", "env"}, Resources: v1.ResourceRequirements{ Requests: v1.ResourceList{ diff --git a/test/e2e/common/downwardapi_volume.go b/test/e2e/common/downwardapi_volume.go index 6dba89d9bc..4e0ce16e85 100644 --- a/test/e2e/common/downwardapi_volume.go +++ b/test/e2e/common/downwardapi_volume.go @@ -211,8 +211,8 @@ func downwardAPIVolumePodForModeTest(name, filePath string, itemMode, defaultMod pod.Spec.Containers = []v1.Container{ { Name: "client-container", - Image: "gcr.io/google_containers/mounttest:0.8", - Command: []string{"/mt", "--file_mode=" + filePath}, + Image: mountImage, + Command: []string{"/mounttest", "--file_mode=" + filePath}, VolumeMounts: []v1.VolumeMount{ { Name: "podinfo", @@ -237,8 +237,8 @@ func downwardAPIVolumePodForSimpleTest(name string, filePath string) *v1.Pod { pod.Spec.Containers = []v1.Container{ { Name: "client-container", - Image: "gcr.io/google_containers/mounttest:0.8", - Command: []string{"/mt", "--file_content=" + filePath}, + Image: mountImage, + Command: []string{"/mounttest", "--file_content=" + filePath}, VolumeMounts: []v1.VolumeMount{ { Name: "podinfo", @@ -268,8 +268,8 @@ func downwardAPIVolumeBaseContainers(name, filePath string) []v1.Container { return []v1.Container{ { Name: name, - Image: "gcr.io/google_containers/mounttest:0.8", - Command: []string{"/mt", "--file_content=" + filePath}, + Image: mountImage, + Command: []string{"/mounttest", "--file_content=" + filePath}, Resources: v1.ResourceRequirements{ Requests: v1.ResourceList{ v1.ResourceCPU: resource.MustParse("250m"), @@ -296,8 +296,8 @@ func downwardAPIVolumeDefaultBaseContainer(name, filePath string) []v1.Container return []v1.Container{ { Name: name, - Image: "gcr.io/google_containers/mounttest:0.8", - Command: []string{"/mt", "--file_content=" + filePath}, + Image: mountImage, + Command: []string{"/mounttest", "--file_content=" + filePath}, VolumeMounts: []v1.VolumeMount{ { Name: "podinfo", @@ -315,8 +315,8 @@ func downwardAPIVolumePodForUpdateTest(name string, labels, annotations map[stri pod.Spec.Containers = []v1.Container{ { Name: "client-container", - Image: "gcr.io/google_containers/mounttest:0.8", - Command: []string{"/mt", "--break_on_expected_content=false", "--retry_time=120", "--file_content_in_loop=" + filePath}, + Image: mountImage, + Command: []string{"/mounttest", "--break_on_expected_content=false", "--retry_time=120", "--file_content_in_loop=" + filePath}, VolumeMounts: []v1.VolumeMount{ { Name: "podinfo", diff --git a/test/e2e/common/empty_dir.go b/test/e2e/common/empty_dir.go index 8e48dfc9f9..06b7fc271c 100644 --- a/test/e2e/common/empty_dir.go +++ b/test/e2e/common/empty_dir.go @@ -26,12 +26,16 @@ import ( "k8s.io/apimachinery/pkg/util/uuid" "k8s.io/kubernetes/pkg/api/testapi" "k8s.io/kubernetes/test/e2e/framework" + imageutils "k8s.io/kubernetes/test/utils/image" ) const ( - testImageRootUid = "gcr.io/google_containers/mounttest:0.8" - testImageNonRootUid = "gcr.io/google_containers/mounttest-user:0.5" - volumePath = "/test-volume" + volumePath = "/test-volume" +) + +var ( + testImageRootUid = imageutils.GetE2EImage(imageutils.Mounttest) + testImageNonRootUid = imageutils.GetE2EImage(imageutils.MounttestUser) ) var _ = framework.KubeDescribe("EmptyDir volumes", func() { diff --git a/test/e2e/common/expansion.go b/test/e2e/common/expansion.go index 8356d57da8..b93266a20b 100644 --- a/test/e2e/common/expansion.go +++ b/test/e2e/common/expansion.go @@ -41,7 +41,7 @@ var _ = framework.KubeDescribe("Variable Expansion", func() { Containers: []v1.Container{ { Name: "dapi-container", - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Command: []string{"sh", "-c", "env"}, Env: []v1.EnvVar{ { @@ -81,7 +81,7 @@ var _ = framework.KubeDescribe("Variable Expansion", func() { Containers: []v1.Container{ { Name: "dapi-container", - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Command: []string{"sh", "-c", "TEST_VAR=wrong echo \"$(TEST_VAR)\""}, Env: []v1.EnvVar{ { @@ -111,7 +111,7 @@ var _ = framework.KubeDescribe("Variable Expansion", func() { Containers: []v1.Container{ { Name: "dapi-container", - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Command: []string{"sh", "-c"}, Args: []string{"TEST_VAR=wrong echo \"$(TEST_VAR)\""}, Env: []v1.EnvVar{ diff --git a/test/e2e/common/host_path.go b/test/e2e/common/host_path.go index 769fd1ed22..dbe80924f8 100644 --- a/test/e2e/common/host_path.go +++ b/test/e2e/common/host_path.go @@ -231,7 +231,7 @@ func testPodWithHostVol(path string, source *v1.HostPathVolumeSource) *v1.Pod { Containers: []v1.Container{ { Name: containerName1, - Image: "gcr.io/google_containers/mounttest:0.8", + Image: mountImage, VolumeMounts: []v1.VolumeMount{ { Name: volumeName, @@ -244,7 +244,7 @@ func testPodWithHostVol(path string, source *v1.HostPathVolumeSource) *v1.Pod { }, { Name: containerName2, - Image: "gcr.io/google_containers/mounttest:0.8", + Image: mountImage, VolumeMounts: []v1.VolumeMount{ { Name: volumeName, diff --git a/test/e2e/common/init_container.go b/test/e2e/common/init_container.go index 4d499bd479..b5d8a50cce 100644 --- a/test/e2e/common/init_container.go +++ b/test/e2e/common/init_container.go @@ -60,19 +60,19 @@ var _ = framework.KubeDescribe("InitContainer", func() { InitContainers: []v1.Container{ { Name: "init1", - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Command: []string{"/bin/true"}, }, { Name: "init2", - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Command: []string{"/bin/true"}, }, }, Containers: []v1.Container{ { Name: "run1", - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Command: []string{"/bin/true"}, }, }, @@ -135,12 +135,12 @@ var _ = framework.KubeDescribe("InitContainer", func() { InitContainers: []v1.Container{ { Name: "init1", - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Command: []string{"/bin/true"}, }, { Name: "init2", - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Command: []string{"/bin/true"}, }, }, @@ -216,12 +216,12 @@ var _ = framework.KubeDescribe("InitContainer", func() { InitContainers: []v1.Container{ { Name: "init1", - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Command: []string{"/bin/false"}, }, { Name: "init2", - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Command: []string{"/bin/true"}, }, }, @@ -349,19 +349,19 @@ var _ = framework.KubeDescribe("InitContainer", func() { InitContainers: []v1.Container{ { Name: "init1", - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Command: []string{"/bin/true"}, }, { Name: "init2", - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Command: []string{"/bin/false"}, }, }, Containers: []v1.Container{ { Name: "run1", - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Command: []string{"/bin/true"}, Resources: v1.ResourceRequirements{ Limits: v1.ResourceList{ diff --git a/test/e2e/common/kubelet_etc_hosts.go b/test/e2e/common/kubelet_etc_hosts.go index 1a69d691e5..72ba28c5e7 100644 --- a/test/e2e/common/kubelet_etc_hosts.go +++ b/test/e2e/common/kubelet_etc_hosts.go @@ -25,15 +25,17 @@ import ( "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/kubernetes/test/e2e/framework" + imageutils "k8s.io/kubernetes/test/utils/image" ) const ( - etcHostsImageName = "gcr.io/google_containers/netexec:1.7" etcHostsPodName = "test-pod" etcHostsHostNetworkPodName = "test-host-network-pod" etcHostsPartialContent = "# Kubernetes-managed hosts file." ) +var etcHostsImageName = imageutils.GetE2EImage(imageutils.Netexec) + type KubeletManagedHostConfig struct { hostNetworkPod *v1.Pod pod *v1.Pod diff --git a/test/e2e/common/pods.go b/test/e2e/common/pods.go index 8e0178c4e0..a793f71e2c 100644 --- a/test/e2e/common/pods.go +++ b/test/e2e/common/pods.go @@ -39,6 +39,7 @@ import ( . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" + imageutils "k8s.io/kubernetes/test/utils/image" ) var ( @@ -160,7 +161,7 @@ var _ = framework.KubeDescribe("Pods", func() { Containers: []v1.Container{ { Name: "nginx", - Image: "gcr.io/google_containers/nginx-slim:0.7", + Image: imageutils.GetE2EImage(imageutils.NginxSlim), }, }, }, @@ -281,7 +282,7 @@ var _ = framework.KubeDescribe("Pods", func() { Containers: []v1.Container{ { Name: "nginx", - Image: "gcr.io/google_containers/nginx-slim:0.7", + Image: imageutils.GetE2EImage(imageutils.NginxSlim), }, }, }, @@ -330,7 +331,7 @@ var _ = framework.KubeDescribe("Pods", func() { Containers: []v1.Container{ { Name: "nginx", - Image: "gcr.io/google_containers/nginx-slim:0.7", + Image: imageutils.GetE2EImage(imageutils.NginxSlim), }, }, }, @@ -416,7 +417,7 @@ var _ = framework.KubeDescribe("Pods", func() { Containers: []v1.Container{ { Name: containerName, - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Command: []string{"sh", "-c", "env"}, }, }, @@ -455,7 +456,7 @@ var _ = framework.KubeDescribe("Pods", func() { Containers: []v1.Container{ { Name: "main", - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Command: []string{"/bin/sh", "-c", "echo container is alive; sleep 600"}, }, }, @@ -525,7 +526,7 @@ var _ = framework.KubeDescribe("Pods", func() { Containers: []v1.Container{ { Name: "main", - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Command: []string{"/bin/sh", "-c", "echo container is alive; sleep 10000"}, }, }, @@ -580,7 +581,7 @@ var _ = framework.KubeDescribe("Pods", func() { Containers: []v1.Container{ { Name: containerName, - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Command: []string{"/bin/sh", "-c", "sleep 5", "/crash/missing"}, }, }, @@ -591,7 +592,7 @@ var _ = framework.KubeDescribe("Pods", func() { By("updating the image") podClient.Update(podName, func(pod *v1.Pod) { - pod.Spec.Containers[0].Image = "gcr.io/google_containers/nginx-slim:0.7" + pod.Spec.Containers[0].Image = imageutils.GetE2EImage(imageutils.NginxSlim) }) time.Sleep(syncLoopFrequency) @@ -621,7 +622,7 @@ var _ = framework.KubeDescribe("Pods", func() { Containers: []v1.Container{ { Name: containerName, - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Command: []string{"/bin/sh", "-c", "sleep 5", "/crash/missing"}, }, }, diff --git a/test/e2e/common/privileged.go b/test/e2e/common/privileged.go index 7f2a3daf29..a56b062735 100644 --- a/test/e2e/common/privileged.go +++ b/test/e2e/common/privileged.go @@ -81,8 +81,6 @@ func (c *PrivilegedPodTestConfig) createPodsSpec() *v1.Pod { isPrivileged := true notPrivileged := false - const image = "gcr.io/google_containers/busybox:1.24" - return &v1.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: c.privilegedPod, @@ -92,14 +90,14 @@ func (c *PrivilegedPodTestConfig) createPodsSpec() *v1.Pod { Containers: []v1.Container{ { Name: c.privilegedContainer, - Image: image, + Image: busyboxImage, ImagePullPolicy: v1.PullIfNotPresent, SecurityContext: &v1.SecurityContext{Privileged: &isPrivileged}, Command: []string{"/bin/sleep", "10000"}, }, { Name: c.notPrivilegedContainer, - Image: image, + Image: busyboxImage, ImagePullPolicy: v1.PullIfNotPresent, SecurityContext: &v1.SecurityContext{Privileged: ¬Privileged}, Command: []string{"/bin/sleep", "10000"}, diff --git a/test/e2e/common/projected.go b/test/e2e/common/projected.go index 5d84c71e7c..535db71f61 100644 --- a/test/e2e/common/projected.go +++ b/test/e2e/common/projected.go @@ -142,7 +142,7 @@ var _ = framework.KubeDescribe("Projected", func() { Containers: []v1.Container{ { Name: "secret-volume-test", - Image: "gcr.io/google_containers/mounttest:0.8", + Image: mountImage, Args: []string{ "--file_content=/etc/projected-secret-volume/data-1", "--file_mode=/etc/projected-secret-volume/data-1"}, @@ -287,8 +287,8 @@ var _ = framework.KubeDescribe("Projected", func() { Containers: []v1.Container{ { Name: deleteContainerName, - Image: "gcr.io/google_containers/mounttest:0.8", - Command: []string{"/mt", "--break_on_expected_content=false", containerTimeoutArg, "--file_content_in_loop=/etc/projected-secret-volumes/delete/data-1"}, + Image: mountImage, + Command: []string{"/mounttest", "--break_on_expected_content=false", containerTimeoutArg, "--file_content_in_loop=/etc/projected-secret-volumes/delete/data-1"}, VolumeMounts: []v1.VolumeMount{ { Name: deleteVolumeName, @@ -299,8 +299,8 @@ var _ = framework.KubeDescribe("Projected", func() { }, { Name: updateContainerName, - Image: "gcr.io/google_containers/mounttest:0.8", - Command: []string{"/mt", "--break_on_expected_content=false", containerTimeoutArg, "--file_content_in_loop=/etc/projected-secret-volumes/update/data-3"}, + Image: mountImage, + Command: []string{"/mounttest", "--break_on_expected_content=false", containerTimeoutArg, "--file_content_in_loop=/etc/projected-secret-volumes/update/data-3"}, VolumeMounts: []v1.VolumeMount{ { Name: updateVolumeName, @@ -311,8 +311,8 @@ var _ = framework.KubeDescribe("Projected", func() { }, { Name: createContainerName, - Image: "gcr.io/google_containers/mounttest:0.8", - Command: []string{"/mt", "--break_on_expected_content=false", containerTimeoutArg, "--file_content_in_loop=/etc/projected-secret-volumes/create/data-1"}, + Image: mountImage, + Command: []string{"/mounttest", "--break_on_expected_content=false", containerTimeoutArg, "--file_content_in_loop=/etc/projected-secret-volumes/create/data-1"}, VolumeMounts: []v1.VolumeMount{ { Name: createVolumeName, @@ -456,8 +456,8 @@ var _ = framework.KubeDescribe("Projected", func() { Containers: []v1.Container{ { Name: containerName, - Image: "gcr.io/google_containers/mounttest:0.8", - Command: []string{"/mt", "--break_on_expected_content=false", containerTimeoutArg, "--file_content_in_loop=/etc/projected-configmap-volume/data-1"}, + Image: mountImage, + Command: []string{"/mounttest", "--break_on_expected_content=false", containerTimeoutArg, "--file_content_in_loop=/etc/projected-configmap-volume/data-1"}, VolumeMounts: []v1.VolumeMount{ { Name: volumeName, @@ -606,8 +606,8 @@ var _ = framework.KubeDescribe("Projected", func() { Containers: []v1.Container{ { Name: deleteContainerName, - Image: "gcr.io/google_containers/mounttest:0.8", - Command: []string{"/mt", "--break_on_expected_content=false", containerTimeoutArg, "--file_content_in_loop=/etc/projected-configmap-volumes/delete/data-1"}, + Image: mountImage, + Command: []string{"/mounttest", "--break_on_expected_content=false", containerTimeoutArg, "--file_content_in_loop=/etc/projected-configmap-volumes/delete/data-1"}, VolumeMounts: []v1.VolumeMount{ { Name: deleteVolumeName, @@ -618,8 +618,8 @@ var _ = framework.KubeDescribe("Projected", func() { }, { Name: updateContainerName, - Image: "gcr.io/google_containers/mounttest:0.8", - Command: []string{"/mt", "--break_on_expected_content=false", containerTimeoutArg, "--file_content_in_loop=/etc/projected-configmap-volumes/update/data-3"}, + Image: mountImage, + Command: []string{"/mounttest", "--break_on_expected_content=false", containerTimeoutArg, "--file_content_in_loop=/etc/projected-configmap-volumes/update/data-3"}, VolumeMounts: []v1.VolumeMount{ { Name: updateVolumeName, @@ -630,8 +630,8 @@ var _ = framework.KubeDescribe("Projected", func() { }, { Name: createContainerName, - Image: "gcr.io/google_containers/mounttest:0.8", - Command: []string{"/mt", "--break_on_expected_content=false", containerTimeoutArg, "--file_content_in_loop=/etc/projected-configmap-volumes/create/data-1"}, + Image: mountImage, + Command: []string{"/mounttest", "--break_on_expected_content=false", containerTimeoutArg, "--file_content_in_loop=/etc/projected-configmap-volumes/create/data-1"}, VolumeMounts: []v1.VolumeMount{ { Name: createVolumeName, @@ -744,7 +744,7 @@ var _ = framework.KubeDescribe("Projected", func() { Containers: []v1.Container{ { Name: "projected-configmap-volume-test", - Image: "gcr.io/google_containers/mounttest:0.8", + Image: mountImage, Args: []string{"--file_content=/etc/projected-configmap-volume/data-1"}, VolumeMounts: []v1.VolumeMount{ { @@ -980,7 +980,7 @@ var _ = framework.KubeDescribe("Projected", func() { pod.Spec.Containers = []v1.Container{ { Name: "projected-all-volume-test", - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Command: []string{"sh", "-c", "cat /all/podname && cat /all/secret-data && cat /all/configmap-data"}, VolumeMounts: []v1.VolumeMount{ { @@ -1040,7 +1040,7 @@ func doProjectedSecretE2EWithoutMapping(f *framework.Framework, defaultMode *int Containers: []v1.Container{ { Name: "projected-secret-volume-test", - Image: "gcr.io/google_containers/mounttest:0.8", + Image: mountImage, Args: []string{ "--file_content=/etc/projected-secret-volume/data-1", "--file_mode=/etc/projected-secret-volume/data-1"}, @@ -1126,7 +1126,7 @@ func doProjectedSecretE2EWithMapping(f *framework.Framework, mode *int32) { Containers: []v1.Container{ { Name: "projected-secret-volume-test", - Image: "gcr.io/google_containers/mounttest:0.8", + Image: mountImage, Args: []string{ "--file_content=/etc/projected-secret-volume/new-path-data-1", "--file_mode=/etc/projected-secret-volume/new-path-data-1"}, @@ -1203,7 +1203,7 @@ func doProjectedConfigMapE2EWithoutMappings(f *framework.Framework, uid, fsGroup Containers: []v1.Container{ { Name: "projected-configmap-volume-test", - Image: "gcr.io/google_containers/mounttest:0.8", + Image: mountImage, Args: []string{ "--file_content=/etc/projected-configmap-volume/data-1", "--file_mode=/etc/projected-configmap-volume/data-1"}, @@ -1294,7 +1294,7 @@ func doProjectedConfigMapE2EWithMappings(f *framework.Framework, uid, fsGroup in Containers: []v1.Container{ { Name: "projected-configmap-volume-test", - Image: "gcr.io/google_containers/mounttest:0.8", + Image: mountImage, Args: []string{"--file_content=/etc/projected-configmap-volume/path/to/data-2", "--file_mode=/etc/projected-configmap-volume/path/to/data-2"}, VolumeMounts: []v1.VolumeMount{ @@ -1344,8 +1344,8 @@ func projectedDownwardAPIVolumePodForModeTest(name, filePath string, itemMode, d pod.Spec.Containers = []v1.Container{ { Name: "client-container", - Image: "gcr.io/google_containers/mounttest:0.8", - Command: []string{"/mt", "--file_mode=" + filePath}, + Image: mountImage, + Command: []string{"/mounttest", "--file_mode=" + filePath}, VolumeMounts: []v1.VolumeMount{ { Name: "podinfo", @@ -1370,8 +1370,8 @@ func projectedDownwardAPIVolumePodForUpdateTest(name string, labels, annotations pod.Spec.Containers = []v1.Container{ { Name: "client-container", - Image: "gcr.io/google_containers/mounttest:0.8", - Command: []string{"/mt", "--break_on_expected_content=false", "--retry_time=120", "--file_content_in_loop=" + filePath}, + Image: mountImage, + Command: []string{"/mounttest", "--break_on_expected_content=false", "--retry_time=120", "--file_content_in_loop=" + filePath}, VolumeMounts: []v1.VolumeMount{ { Name: "podinfo", diff --git a/test/e2e/common/secrets.go b/test/e2e/common/secrets.go index 671b942a01..bceb386a0b 100644 --- a/test/e2e/common/secrets.go +++ b/test/e2e/common/secrets.go @@ -124,7 +124,7 @@ var _ = framework.KubeDescribe("Secrets", func() { Containers: []v1.Container{ { Name: "secret-volume-test", - Image: "gcr.io/google_containers/mounttest:0.8", + Image: mountImage, Args: []string{ "--file_content=/etc/secret-volume/data-1", "--file_mode=/etc/secret-volume/data-1"}, @@ -245,8 +245,8 @@ var _ = framework.KubeDescribe("Secrets", func() { Containers: []v1.Container{ { Name: deleteContainerName, - Image: "gcr.io/google_containers/mounttest:0.8", - Command: []string{"/mt", "--break_on_expected_content=false", containerTimeoutArg, "--file_content_in_loop=/etc/secret-volumes/delete/data-1"}, + Image: mountImage, + Command: []string{"/mounttest", "--break_on_expected_content=false", containerTimeoutArg, "--file_content_in_loop=/etc/secret-volumes/delete/data-1"}, VolumeMounts: []v1.VolumeMount{ { Name: deleteVolumeName, @@ -257,8 +257,8 @@ var _ = framework.KubeDescribe("Secrets", func() { }, { Name: updateContainerName, - Image: "gcr.io/google_containers/mounttest:0.8", - Command: []string{"/mt", "--break_on_expected_content=false", containerTimeoutArg, "--file_content_in_loop=/etc/secret-volumes/update/data-3"}, + Image: mountImage, + Command: []string{"/mounttest", "--break_on_expected_content=false", containerTimeoutArg, "--file_content_in_loop=/etc/secret-volumes/update/data-3"}, VolumeMounts: []v1.VolumeMount{ { Name: updateVolumeName, @@ -269,8 +269,8 @@ var _ = framework.KubeDescribe("Secrets", func() { }, { Name: createContainerName, - Image: "gcr.io/google_containers/mounttest:0.8", - Command: []string{"/mt", "--break_on_expected_content=false", containerTimeoutArg, "--file_content_in_loop=/etc/secret-volumes/create/data-1"}, + Image: mountImage, + Command: []string{"/mounttest", "--break_on_expected_content=false", containerTimeoutArg, "--file_content_in_loop=/etc/secret-volumes/create/data-1"}, VolumeMounts: []v1.VolumeMount{ { Name: createVolumeName, @@ -342,7 +342,7 @@ var _ = framework.KubeDescribe("Secrets", func() { Containers: []v1.Container{ { Name: "secret-env-test", - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Command: []string{"sh", "-c", "env"}, Env: []v1.EnvVar{ { @@ -385,7 +385,7 @@ var _ = framework.KubeDescribe("Secrets", func() { Containers: []v1.Container{ { Name: "env-test", - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Command: []string{"sh", "-c", "env"}, EnvFrom: []v1.EnvFromSource{ { @@ -470,7 +470,7 @@ func doSecretE2EWithoutMapping(f *framework.Framework, defaultMode *int32, secre Containers: []v1.Container{ { Name: "secret-volume-test", - Image: "gcr.io/google_containers/mounttest:0.8", + Image: mountImage, Args: []string{ "--file_content=/etc/secret-volume/data-1", "--file_mode=/etc/secret-volume/data-1"}, @@ -547,7 +547,7 @@ func doSecretE2EWithMapping(f *framework.Framework, mode *int32) { Containers: []v1.Container{ { Name: "secret-volume-test", - Image: "gcr.io/google_containers/mounttest:0.8", + Image: mountImage, Args: []string{ "--file_content=/etc/secret-volume/new-path-data-1", "--file_mode=/etc/secret-volume/new-path-data-1"}, diff --git a/test/e2e/common/sysctl.go b/test/e2e/common/sysctl.go index 306b21bebd..989fc3a56f 100644 --- a/test/e2e/common/sysctl.go +++ b/test/e2e/common/sysctl.go @@ -43,7 +43,7 @@ var _ = framework.KubeDescribe("Sysctls", func() { Containers: []v1.Container{ { Name: "test-container", - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, }, }, RestartPolicy: v1.RestartPolicyNever, diff --git a/test/e2e/common/util.go b/test/e2e/common/util.go index 65c451bb4b..aa6bfc1e98 100644 --- a/test/e2e/common/util.go +++ b/test/e2e/common/util.go @@ -27,6 +27,7 @@ import ( "k8s.io/apimachinery/pkg/util/wait" clientset "k8s.io/client-go/kubernetes" "k8s.io/kubernetes/test/e2e/framework" + imageutils "k8s.io/kubernetes/test/utils/image" . "github.com/onsi/ginkgo" ) @@ -39,6 +40,11 @@ const ( FederationE2E Suite = "federation e2e" ) +var ( + mountImage = imageutils.GetE2EImage(imageutils.Mounttest) + busyboxImage = imageutils.GetBusyBoxImage() +) + var CurrentSuite Suite // CommonImageWhiteList is the list of images used in common test. These images should be prepulled @@ -46,17 +52,16 @@ var CurrentSuite Suite // only used by node e2e test. // TODO(random-liu): Change the image puller pod to use similar mechanism. var CommonImageWhiteList = sets.NewString( - "gcr.io/google_containers/busybox:1.24", - "gcr.io/google_containers/eptest:0.1", - "gcr.io/google_containers/liveness:e2e", - "gcr.io/google_containers/mounttest:0.8", - "gcr.io/google_containers/mounttest-user:0.5", - "gcr.io/google_containers/netexec:1.4", - "gcr.io/google_containers/netexec:1.5", - "gcr.io/google_containers/nginx-slim:0.7", - "gcr.io/google_containers/serve_hostname:v1.4", - "gcr.io/google_containers/test-webserver:e2e", - "gcr.io/google_containers/hostexec:1.2", + imageutils.GetBusyBoxImage(), + imageutils.GetE2EImage(imageutils.EntrypointTester), + imageutils.GetE2EImage(imageutils.Liveness), + imageutils.GetE2EImage(imageutils.Mounttest), + imageutils.GetE2EImage(imageutils.MounttestUser), + imageutils.GetE2EImage(imageutils.Netexec), + imageutils.GetE2EImage(imageutils.NginxSlim), + imageutils.GetE2EImage(imageutils.ServeHostname), + imageutils.GetE2EImage(imageutils.TestWebserver), + imageutils.GetE2EImage(imageutils.Hostexec), "gcr.io/google_containers/volume-nfs:0.8", "gcr.io/google_containers/volume-gluster:0.2", "gcr.io/google_containers/e2e-net-amd64:1.0", diff --git a/test/e2e/framework/jobs_util.go b/test/e2e/framework/jobs_util.go index 778b507fc6..c8d3bd026c 100644 --- a/test/e2e/framework/jobs_util.go +++ b/test/e2e/framework/jobs_util.go @@ -73,7 +73,7 @@ func NewTestJob(behavior, name string, rPol v1.RestartPolicy, parallelism, compl Containers: []v1.Container{ { Name: "c", - Image: "gcr.io/google_containers/busybox:1.24", + Image: BusyBoxImage, Command: []string{}, VolumeMounts: []v1.VolumeMount{ { diff --git a/test/e2e/framework/networking_utils.go b/test/e2e/framework/networking_utils.go index 512bf0ca42..0914c0641b 100644 --- a/test/e2e/framework/networking_utils.go +++ b/test/e2e/framework/networking_utils.go @@ -41,6 +41,7 @@ import ( clientset "k8s.io/client-go/kubernetes" coreclientset "k8s.io/client-go/kubernetes/typed/core/v1" "k8s.io/kubernetes/pkg/api/testapi" + imageutils "k8s.io/kubernetes/test/utils/image" ) const ( @@ -49,8 +50,6 @@ const ( TestContainerHttpPort = 8080 ClusterHttpPort = 80 ClusterUdpPort = 90 - NetexecImageName = "gcr.io/google_containers/netexec:1.7" - HostexecImageName = "gcr.io/google_containers/hostexec:1.2" testPodName = "test-container-pod" hostTestPodName = "host-test-container-pod" nodePortServiceName = "node-port-service" @@ -64,6 +63,8 @@ const ( maxNetProxyPodsCount = 10 ) +var NetexecImageName = imageutils.GetE2EImage(imageutils.Netexec) + // NewNetworkingTestConfig creates and sets up a new test config helper. func NewNetworkingTestConfig(f *Framework) *NetworkingTestConfig { config := &NetworkingTestConfig{f: f, Namespace: f.Namespace.Name} diff --git a/test/e2e/framework/nodes_util.go b/test/e2e/framework/nodes_util.go index 5eef8d3115..e8df06ba3c 100644 --- a/test/e2e/framework/nodes_util.go +++ b/test/e2e/framework/nodes_util.go @@ -28,6 +28,7 @@ import ( "k8s.io/apimachinery/pkg/fields" "k8s.io/apimachinery/pkg/util/wait" clientset "k8s.io/client-go/kubernetes" + imageutils "k8s.io/kubernetes/test/utils/image" ) func EtcdUpgrade(target_storage, target_version string) error { @@ -286,7 +287,7 @@ func gceUpgradeScript() string { func waitForSSHTunnels() { Logf("Waiting for SSH tunnels to establish") RunKubectl("run", "ssh-tunnel-test", - "--image=gcr.io/google_containers/busybox:1.24", + "--image="+imageutils.GetBusyBoxImage(), "--restart=Never", "--command", "--", "echo", "Hello") diff --git a/test/e2e/framework/pv_util.go b/test/e2e/framework/pv_util.go index 129a9a1f04..c2be2dfeb6 100644 --- a/test/e2e/framework/pv_util.go +++ b/test/e2e/framework/pv_util.go @@ -815,7 +815,7 @@ func MakePod(ns string, pvclaims []*v1.PersistentVolumeClaim, isPrivileged bool, Containers: []v1.Container{ { Name: "write-pod", - Image: "gcr.io/google_containers/busybox:1.24", + Image: BusyBoxImage, Command: []string{"/bin/sh"}, Args: []string{"-c", command}, SecurityContext: &v1.SecurityContext{ diff --git a/test/e2e/framework/service_util.go b/test/e2e/framework/service_util.go index d25511f260..d8ea2891f5 100644 --- a/test/e2e/framework/service_util.go +++ b/test/e2e/framework/service_util.go @@ -42,6 +42,7 @@ import ( azurecloud "k8s.io/kubernetes/pkg/cloudprovider/providers/azure" gcecloud "k8s.io/kubernetes/pkg/cloudprovider/providers/gce" testutils "k8s.io/kubernetes/test/utils" + imageutils "k8s.io/kubernetes/test/utils/image" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" @@ -601,7 +602,7 @@ func (j *ServiceTestJig) newRCTemplate(namespace string) *v1.ReplicationControll Containers: []v1.Container{ { Name: "netexec", - Image: "gcr.io/google_containers/netexec:1.7", + Image: imageutils.GetE2EImage(imageutils.Netexec), Args: []string{"--http-port=80", "--udp-port=80"}, ReadinessProbe: &v1.Probe{ PeriodSeconds: 3, @@ -948,7 +949,7 @@ func NewServerTest(client clientset.Interface, namespace string, serviceName str t.services = make(map[string]bool) t.Name = "webserver" - t.Image = "gcr.io/google_containers/test-webserver:e2e" + t.Image = imageutils.GetE2EImage(imageutils.TestWebserver) return t } diff --git a/test/e2e/framework/statefulset_utils.go b/test/e2e/framework/statefulset_utils.go index 79e929653c..65345fe493 100644 --- a/test/e2e/framework/statefulset_utils.go +++ b/test/e2e/framework/statefulset_utils.go @@ -41,6 +41,7 @@ import ( clientset "k8s.io/client-go/kubernetes" podutil "k8s.io/kubernetes/pkg/api/v1/pod" "k8s.io/kubernetes/test/e2e/manifest" + imageutils "k8s.io/kubernetes/test/utils/image" ) const ( @@ -812,7 +813,7 @@ func NewStatefulSet(name, ns, governingSvcName string, replicas int32, statefulP Containers: []v1.Container{ { Name: "nginx", - Image: "gcr.io/google_containers/nginx-slim:0.7", + Image: imageutils.GetE2EImage(imageutils.NginxSlim), VolumeMounts: mounts, }, }, diff --git a/test/e2e/framework/util.go b/test/e2e/framework/util.go index f5485be796..cbe8d94e71 100644 --- a/test/e2e/framework/util.go +++ b/test/e2e/framework/util.go @@ -95,6 +95,7 @@ import ( "k8s.io/kubernetes/plugin/pkg/scheduler/schedulercache" "k8s.io/kubernetes/test/e2e/framework/ginkgowrapper" testutil "k8s.io/kubernetes/test/utils" + imageutils "k8s.io/kubernetes/test/utils/image" uexec "k8s.io/utils/exec" ) @@ -178,8 +179,6 @@ const ( // TODO(justinsb): Avoid hardcoding this. awsMasterIP = "172.20.0.9" - // Serve hostname image name - ServeHostnameImage = "gcr.io/google_containers/serve_hostname:v1.4" // ssh port sshPort = "22" @@ -191,6 +190,7 @@ const ( ) var ( + BusyBoxImage = imageutils.GetBusyBoxImage() // Label allocated to the image puller static pod that runs on each node // before e2es. ImagePullerLabels = map[string]string{"name": "e2e-image-puller"} @@ -204,6 +204,9 @@ var ( regexp.MustCompile(".*fluentd-elasticsearch.*"), regexp.MustCompile(".*node-problem-detector.*"), } + + // Serve hostname image name + ServeHostnameImage = imageutils.GetE2EImage(imageutils.ServeHostname) ) type Address struct { @@ -417,7 +420,7 @@ func ProxyMode(f *Framework) (string, error) { Containers: []v1.Container{ { Name: "detector", - Image: "gcr.io/google_containers/e2e-net-amd64:1.0", + Image: imageutils.GetE2EImage(imageutils.Net), Command: []string{"/bin/sleep", "3600"}, }, }, @@ -3260,7 +3263,7 @@ func NewHostExecPodSpec(ns, name string) *v1.Pod { Containers: []v1.Container{ { Name: "hostexec", - Image: "gcr.io/google_containers/hostexec:1.2", + Image: imageutils.GetE2EImage(imageutils.Hostexec), ImagePullPolicy: v1.PullIfNotPresent, }, }, @@ -3328,7 +3331,7 @@ func newExecPodSpec(ns, generateName string) *v1.Pod { Containers: []v1.Container{ { Name: "exec", - Image: "gcr.io/google_containers/busybox:1.24", + Image: BusyBoxImage, Command: []string{"sh", "-c", "while true; do sleep 5; done"}, }, }, @@ -4425,7 +4428,7 @@ func LaunchWebserverPod(f *Framework, podName, nodeName string) (ip string) { Containers: []v1.Container{ { Name: containerName, - Image: "gcr.io/google_containers/porter:4524579c0eb935c056c8e75563b4e1eda31587e0", + Image: imageutils.GetE2EImage(imageutils.Porter), Env: []v1.EnvVar{{Name: fmt.Sprintf("SERVE_PORT_%d", port), Value: "foo"}}, Ports: []v1.ContainerPort{{ContainerPort: int32(port)}}, }, @@ -4468,7 +4471,7 @@ func CheckConnectivityToHost(f *Framework, nodeName, podName, host string, timeo Containers: []v1.Container{ { Name: contName, - Image: "gcr.io/google_containers/busybox:1.24", + Image: BusyBoxImage, Command: command, }, }, diff --git a/test/e2e/framework/volume_util.go b/test/e2e/framework/volume_util.go index 373bbdf2aa..8a86fe70d7 100644 --- a/test/e2e/framework/volume_util.go +++ b/test/e2e/framework/volume_util.go @@ -61,7 +61,6 @@ const ( GlusterfsServerImage string = "gcr.io/google_containers/volume-gluster:0.2" CephServerImage string = "gcr.io/google_containers/volume-ceph:0.1" RbdServerImage string = "gcr.io/google_containers/volume-rbd:0.1" - BusyBoxImage string = "gcr.io/google_containers/busybox:1.24" ) const ( @@ -457,7 +456,7 @@ func InjectHtml(client clientset.Interface, config VolumeTestConfig, volume v1.V Containers: []v1.Container{ { Name: config.Prefix + "-injector", - Image: "gcr.io/google_containers/busybox:1.24", + Image: BusyBoxImage, Command: []string{"/bin/sh"}, Args: []string{"-c", "echo '" + content + "' > /mnt/index.html && chmod o+rX /mnt /mnt/index.html"}, VolumeMounts: []v1.VolumeMount{ diff --git a/test/e2e/instrumentation/logging/generic_soak.go b/test/e2e/instrumentation/logging/generic_soak.go index 40535b6ce1..d08e9ad22e 100644 --- a/test/e2e/instrumentation/logging/generic_soak.go +++ b/test/e2e/instrumentation/logging/generic_soak.go @@ -28,6 +28,7 @@ import ( "k8s.io/api/core/v1" "k8s.io/kubernetes/test/e2e/framework" instrumentation "k8s.io/kubernetes/test/e2e/instrumentation/common" + imageutils "k8s.io/kubernetes/test/utils/image" ) var _ = instrumentation.SIGDescribe("Logging soak [Performance] [Slow] [Disruptive]", func() { @@ -100,7 +101,7 @@ func RunLogPodsWithSleepOf(f *framework.Framework, sleep time.Duration, podname return v1.PodSpec{ Containers: []v1.Container{{ Name: "logging-soak", - Image: "gcr.io/google_containers/busybox:1.24", + Image: imageutils.GetBusyBoxImage(), Args: []string{ "/bin/sh", "-c", diff --git a/test/e2e/kubectl/kubectl.go b/test/e2e/kubectl/kubectl.go index fc1b597b91..6ab323ad72 100644 --- a/test/e2e/kubectl/kubectl.go +++ b/test/e2e/kubectl/kubectl.go @@ -38,6 +38,7 @@ import ( "sort" "strconv" "strings" + "text/template" "time" "github.com/elazarl/goproxy" @@ -68,21 +69,11 @@ import ( . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" + imageutils "k8s.io/kubernetes/test/utils/image" ) const ( - nautilusImage = "gcr.io/google_containers/update-demo:nautilus" - kittenImage = "gcr.io/google_containers/update-demo:kitten" updateDemoSelector = "name=update-demo" - updateDemoContainer = "update-demo" - frontendSelector = "app=guestbook,tier=frontend" - redisMasterSelector = "app=redis,role=master" - redisSlaveSelector = "app=redis,role=slave" - goproxyContainer = "goproxy" - goproxyPodSelector = "name=goproxy" - netexecContainer = "netexec" - netexecPodSelector = "name=netexec" - kubectlProxyPort = 8011 guestbookStartupTimeout = 10 * time.Minute guestbookResponseTimeout = 3 * time.Minute simplePodSelector = "name=nginx" @@ -92,18 +83,41 @@ const ( pausePodSelector = "name=pause" pausePodName = "pause" runJobTimeout = 5 * time.Minute - busyboxImage = "gcr.io/google_containers/busybox:1.24" - nginxImage = "gcr.io/google_containers/nginx-slim:0.7" - newNginxImage = "gcr.io/google_containers/nginx-slim:0.8" kubeCtlManifestPath = "test/e2e/testing-manifests/kubectl" - redisControllerFilename = "redis-master-controller.json" + redisControllerFilename = "redis-master-controller.json.in" redisServiceFilename = "redis-master-service.json" - nginxDeployment1Filename = "nginx-deployment1.yaml" - nginxDeployment2Filename = "nginx-deployment2.yaml" - nginxDeployment3Filename = "nginx-deployment3.yaml" - redisImage = "gcr.io/k8s-testimages/redis:e2e" + nginxDeployment1Filename = "nginx-deployment1.yaml.in" + nginxDeployment2Filename = "nginx-deployment2.yaml.in" + nginxDeployment3Filename = "nginx-deployment3.yaml.in" ) +var ( + nautilusImage = imageutils.GetE2EImage(imageutils.Nautilus) + kittenImage = imageutils.GetE2EImage(imageutils.Kitten) + redisImage = imageutils.GetE2EImage(imageutils.Redis) + nginxImage = imageutils.GetE2EImage(imageutils.NginxSlim) + busyboxImage = imageutils.GetBusyBoxImage() +) + +var testImages = struct { + FrontendImage string + PauseImage string + NginxSlimImage string + NginxSlimNewImage string + RedisImage string + RedisslaveImage string + NautilusImage string + KittenImage string +}{ + imageutils.GetE2EImage(imageutils.Frontend), + imageutils.GetE2EImage(imageutils.Pause), + imageutils.GetE2EImage(imageutils.NginxSlim), + imageutils.GetE2EImage(imageutils.NginxSlimNew), + imageutils.GetE2EImage(imageutils.Redis), + imageutils.GetE2EImage(imageutils.Redisslave), + imageutils.GetE2EImage(imageutils.Nautilus), + imageutils.GetE2EImage(imageutils.Kitten), +} var ( proxyRegexp = regexp.MustCompile("Starting to serve on 127.0.0.1:([0-9]+)") @@ -162,6 +176,19 @@ func cleanupKubectlInputs(fileContents string, ns string, selectors ...string) { framework.AssertCleanup(ns, selectors...) } +func substituteImageName(content string) string { + contentWithImageName := new(bytes.Buffer) + tmpl, err := template.New("imagemanifest").Parse(content) + if err != nil { + framework.Failf("Failed Parse the template:", err) + } + err = tmpl.Execute(contentWithImageName, testImages) + if err != nil { + framework.Failf("Failed executing template:", err) + } + return contentWithImageName.String() +} + func readTestFileOrDie(file string) []byte { return generated.ReadOrDie(path.Join(kubeCtlManifestPath, file)) } @@ -272,25 +299,25 @@ var _ = SIGDescribe("Kubectl client", func() { } framework.KubeDescribe("Update Demo", func() { - var nautilus, kitten []byte + var nautilus, kitten string BeforeEach(func() { updateDemoRoot := "test/fixtures/doc-yaml/user-guide/update-demo" - nautilus = generated.ReadOrDie(filepath.Join(updateDemoRoot, "nautilus-rc.yaml")) - kitten = generated.ReadOrDie(filepath.Join(updateDemoRoot, "kitten-rc.yaml")) + nautilus = substituteImageName(string(generated.ReadOrDie(filepath.Join(updateDemoRoot, "nautilus-rc.yaml.in")))) + kitten = substituteImageName(string(generated.ReadOrDie(filepath.Join(updateDemoRoot, "kitten-rc.yaml.in")))) }) It("should create and stop a replication controller [Conformance]", func() { - defer cleanupKubectlInputs(string(nautilus), ns, updateDemoSelector) + defer cleanupKubectlInputs(nautilus, ns, updateDemoSelector) By("creating a replication controller") - framework.RunKubectlOrDieInput(string(nautilus[:]), "create", "-f", "-", fmt.Sprintf("--namespace=%v", ns)) + framework.RunKubectlOrDieInput(nautilus, "create", "-f", "-", fmt.Sprintf("--namespace=%v", ns)) framework.ValidateController(c, nautilusImage, 2, "update-demo", updateDemoSelector, getUDData("nautilus.jpg", ns), ns) }) It("should scale a replication controller [Conformance]", func() { - defer cleanupKubectlInputs(string(nautilus[:]), ns, updateDemoSelector) + defer cleanupKubectlInputs(nautilus, ns, updateDemoSelector) By("creating a replication controller") - framework.RunKubectlOrDieInput(string(nautilus[:]), "create", "-f", "-", fmt.Sprintf("--namespace=%v", ns)) + framework.RunKubectlOrDieInput(nautilus, "create", "-f", "-", fmt.Sprintf("--namespace=%v", ns)) framework.ValidateController(c, nautilusImage, 2, "update-demo", updateDemoSelector, getUDData("nautilus.jpg", ns), ns) By("scaling down the replication controller") framework.RunKubectlOrDie("scale", "rc", "update-demo-nautilus", "--replicas=1", "--timeout=5m", fmt.Sprintf("--namespace=%v", ns)) @@ -344,16 +371,14 @@ var _ = SIGDescribe("Kubectl client", func() { }) framework.KubeDescribe("Simple pod", func() { - var podPath []byte - + podYaml := substituteImageName(string(readTestFileOrDie("pod-with-readiness-probe.yaml.in"))) BeforeEach(func() { - podPath = generated.ReadOrDie(path.Join(kubeCtlManifestPath, "pod-with-readiness-probe.yaml")) - By(fmt.Sprintf("creating the pod from %v", string(podPath))) - framework.RunKubectlOrDieInput(string(podPath[:]), "create", "-f", "-", fmt.Sprintf("--namespace=%v", ns)) + By(fmt.Sprintf("creating the pod from %v", podYaml)) + framework.RunKubectlOrDieInput(podYaml, "create", "-f", "-", fmt.Sprintf("--namespace=%v", ns)) Expect(framework.CheckPodsRunningReady(c, ns, []string{simplePodName}, framework.PodStartTimeout)).To(BeTrue()) }) AfterEach(func() { - cleanupKubectlInputs(string(podPath[:]), ns, simplePodSelector) + cleanupKubectlInputs(podYaml, ns, simplePodSelector) }) It("should support exec", func() { @@ -707,13 +732,13 @@ metadata: framework.KubeDescribe("Kubectl apply", func() { It("should apply a new configuration to an existing RC", func() { - controllerJson := readTestFileOrDie(redisControllerFilename) + controllerJson := substituteImageName(string(readTestFileOrDie(redisControllerFilename))) nsFlag := fmt.Sprintf("--namespace=%v", ns) By("creating Redis RC") - framework.RunKubectlOrDieInput(string(controllerJson), "create", "-f", "-", nsFlag) + framework.RunKubectlOrDieInput(controllerJson, "create", "-f", "-", nsFlag) By("applying a modified configuration") - stdin := modifyReplicationControllerConfiguration(string(controllerJson)) + stdin := modifyReplicationControllerConfiguration(controllerJson) framework.NewKubectlCommand("apply", "-f", "-", nsFlag). WithStdinReader(stdin). ExecOrDie() @@ -743,26 +768,26 @@ metadata: }) It("apply set/view last-applied", func() { - deployment1Yaml := readTestFileOrDie(nginxDeployment1Filename) - deployment2Yaml := readTestFileOrDie(nginxDeployment2Filename) - deployment3Yaml := readTestFileOrDie(nginxDeployment3Filename) + deployment1Yaml := substituteImageName(string(readTestFileOrDie(nginxDeployment1Filename))) + deployment2Yaml := substituteImageName(string(readTestFileOrDie(nginxDeployment2Filename))) + deployment3Yaml := substituteImageName(string(readTestFileOrDie(nginxDeployment3Filename))) nsFlag := fmt.Sprintf("--namespace=%v", ns) By("deployment replicas number is 2") - framework.RunKubectlOrDieInput(string(deployment1Yaml[:]), "apply", "-f", "-", nsFlag) + framework.RunKubectlOrDieInput(deployment1Yaml, "apply", "-f", "-", nsFlag) By("check the last-applied matches expectations annotations") - output := framework.RunKubectlOrDieInput(string(deployment1Yaml[:]), "apply", "view-last-applied", "-f", "-", nsFlag, "-o", "json") + output := framework.RunKubectlOrDieInput(deployment1Yaml, "apply", "view-last-applied", "-f", "-", nsFlag, "-o", "json") requiredString := "\"replicas\": 2" if !strings.Contains(output, requiredString) { framework.Failf("Missing %s in kubectl view-last-applied", requiredString) } By("apply file doesn't have replicas") - framework.RunKubectlOrDieInput(string(deployment2Yaml[:]), "apply", "set-last-applied", "-f", "-", nsFlag) + framework.RunKubectlOrDieInput(deployment2Yaml, "apply", "set-last-applied", "-f", "-", nsFlag) By("check last-applied has been updated, annotations doesn't replicas") - output = framework.RunKubectlOrDieInput(string(deployment1Yaml[:]), "apply", "view-last-applied", "-f", "-", nsFlag, "-o", "json") + output = framework.RunKubectlOrDieInput(deployment1Yaml, "apply", "view-last-applied", "-f", "-", nsFlag, "-o", "json") requiredString = "\"replicas\": 2" if strings.Contains(output, requiredString) { framework.Failf("Missing %s in kubectl view-last-applied", requiredString) @@ -773,11 +798,11 @@ metadata: framework.RunKubectlOrDie("scale", "deployment", nginxDeploy, "--replicas=3", nsFlag) By("apply file doesn't have replicas but image changed") - framework.RunKubectlOrDieInput(string(deployment3Yaml[:]), "apply", "-f", "-", nsFlag) + framework.RunKubectlOrDieInput(deployment3Yaml, "apply", "-f", "-", nsFlag) By("verify replicas still is 3 and image has been updated") - output = framework.RunKubectlOrDieInput(string(deployment3Yaml[:]), "get", "-f", "-", nsFlag, "-o", "json") - requiredItems := []string{"\"replicas\": 3", "nginx-slim:0.7"} + output = framework.RunKubectlOrDieInput(deployment3Yaml, "get", "-f", "-", nsFlag, "-o", "json") + requiredItems := []string{"\"replicas\": 3", imageutils.GetE2EImage(imageutils.NginxSlim)} for _, item := range requiredItems { if !strings.Contains(output, item) { framework.Failf("Missing %s in kubectl apply", item) @@ -809,11 +834,11 @@ metadata: kv, err := framework.KubectlVersion() Expect(err).NotTo(HaveOccurred()) framework.SkipUnlessServerVersionGTE(kv, c.Discovery()) - controllerJson := readTestFileOrDie(redisControllerFilename) + controllerJson := substituteImageName(string(readTestFileOrDie(redisControllerFilename))) serviceJson := readTestFileOrDie(redisServiceFilename) nsFlag := fmt.Sprintf("--namespace=%v", ns) - framework.RunKubectlOrDieInput(string(controllerJson[:]), "create", "-f", "-", nsFlag) + framework.RunKubectlOrDieInput(controllerJson, "create", "-f", "-", nsFlag) framework.RunKubectlOrDieInput(string(serviceJson[:]), "create", "-f", "-", nsFlag) By("Waiting for Redis master to start.") @@ -910,7 +935,7 @@ metadata: framework.KubeDescribe("Kubectl expose", func() { It("should create services for rc [Conformance]", func() { - controllerJson := readTestFileOrDie(redisControllerFilename) + controllerJson := substituteImageName(string(readTestFileOrDie(redisControllerFilename))) nsFlag := fmt.Sprintf("--namespace=%v", ns) redisPort := 6379 @@ -918,7 +943,7 @@ metadata: By("creating Redis RC") framework.Logf("namespace %v", ns) - framework.RunKubectlOrDieInput(string(controllerJson[:]), "create", "-f", "-", nsFlag) + framework.RunKubectlOrDieInput(controllerJson, "create", "-f", "-", nsFlag) // It may take a while for the pods to get registered in some cases, wait to be sure. By("Waiting for Redis master to start.") @@ -988,17 +1013,16 @@ metadata: }) framework.KubeDescribe("Kubectl label", func() { - var pod []byte + podYaml := substituteImageName(string(readTestFileOrDie("pause-pod.yaml.in"))) var nsFlag string BeforeEach(func() { - pod = readTestFileOrDie("pause-pod.yaml") By("creating the pod") nsFlag = fmt.Sprintf("--namespace=%v", ns) - framework.RunKubectlOrDieInput(string(pod), "create", "-f", "-", nsFlag) + framework.RunKubectlOrDieInput(podYaml, "create", "-f", "-", nsFlag) Expect(framework.CheckPodsRunningReady(c, ns, []string{pausePodName}, framework.PodStartTimeout)).To(BeTrue()) }) AfterEach(func() { - cleanupKubectlInputs(string(pod[:]), ns, pausePodSelector) + cleanupKubectlInputs(podYaml, ns, pausePodSelector) }) It("should update the label on a resource [Conformance]", func() { @@ -1024,17 +1048,16 @@ metadata: }) framework.KubeDescribe("Kubectl logs", func() { - var rc []byte var nsFlag string + rc := substituteImageName(string(readTestFileOrDie(redisControllerFilename))) containerName := "redis-master" BeforeEach(func() { - rc = readTestFileOrDie(redisControllerFilename) By("creating an rc") nsFlag = fmt.Sprintf("--namespace=%v", ns) - framework.RunKubectlOrDieInput(string(rc[:]), "create", "-f", "-", nsFlag) + framework.RunKubectlOrDieInput(rc, "create", "-f", "-", nsFlag) }) AfterEach(func() { - cleanupKubectlInputs(string(rc[:]), ns, simplePodSelector) + cleanupKubectlInputs(rc, ns, simplePodSelector) }) It("should be able to retrieve and filter logs [Conformance]", func() { @@ -1091,10 +1114,10 @@ metadata: framework.KubeDescribe("Kubectl patch", func() { It("should add annotations for pods in rc [Conformance]", func() { - controllerJson := readTestFileOrDie(redisControllerFilename) + controllerJson := substituteImageName(string(readTestFileOrDie(redisControllerFilename))) nsFlag := fmt.Sprintf("--namespace=%v", ns) By("creating Redis RC") - framework.RunKubectlOrDieInput(string(controllerJson[:]), "create", "-f", "-", nsFlag) + framework.RunKubectlOrDieInput(controllerJson, "create", "-f", "-", nsFlag) By("Waiting for Redis master to start.") waitForOrFailWithDebug(1) By("patching all pods") diff --git a/test/e2e/kubectl/portforward.go b/test/e2e/kubectl/portforward.go index 9fb21d8179..a06d264818 100644 --- a/test/e2e/kubectl/portforward.go +++ b/test/e2e/kubectl/portforward.go @@ -39,6 +39,7 @@ import ( utilversion "k8s.io/kubernetes/pkg/util/version" "k8s.io/kubernetes/test/e2e/framework" testutils "k8s.io/kubernetes/test/utils" + imageutils "k8s.io/kubernetes/test/utils/image" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" @@ -64,7 +65,7 @@ func pfPod(expectedClientData, chunks, chunkSize, chunkIntervalMillis string, bi Containers: []v1.Container{ { Name: "readiness", - Image: "gcr.io/google_containers/netexec:1.7", + Image: imageutils.GetE2EImage(imageutils.Netexec), ReadinessProbe: &v1.Probe{ Handler: v1.Handler{ Exec: &v1.ExecAction{ @@ -79,7 +80,7 @@ func pfPod(expectedClientData, chunks, chunkSize, chunkIntervalMillis string, bi }, { Name: "portforwardtester", - Image: "gcr.io/google_containers/portforwardtester:1.2", + Image: imageutils.GetE2EImage(imageutils.PortForwardTester), Env: []v1.EnvVar{ { Name: "BIND_PORT", diff --git a/test/e2e/lifecycle/addon_update.go b/test/e2e/lifecycle/addon_update.go index 970decaf83..1b01469dc6 100644 --- a/test/e2e/lifecycle/addon_update.go +++ b/test/e2e/lifecycle/addon_update.go @@ -32,6 +32,7 @@ import ( . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" + imageutils "k8s.io/kubernetes/test/utils/image" ) // TODO: it would probably be slightly better to build up the objects @@ -56,7 +57,7 @@ spec: k8s-app: addon-reconcile-test spec: containers: - - image: gcr.io/google_containers/serve_hostname:v1.4 + - image: %s name: addon-reconcile-test ports: - containerPort: 9376 @@ -85,7 +86,7 @@ spec: k8s-app: addon-reconcile-test spec: containers: - - image: gcr.io/google_containers/serve_hostname:v1.4 + - image: %s name: addon-reconcile-test ports: - containerPort: 9376 @@ -188,7 +189,7 @@ spec: k8s-app: invalid-addon-test spec: containers: - - image: gcr.io/google_containers/serve_hostname:v1.4 + - image: %s name: invalid-addon-test ports: - containerPort: 9376 @@ -201,6 +202,8 @@ const ( addonNsName = metav1.NamespaceSystem ) +var serveHostnameImage = imageutils.GetE2EImage(imageutils.ServeHostname) + type stringPair struct { data, fileName string } @@ -259,13 +262,13 @@ var _ = SIGDescribe("Addon update", func() { svcAddonEnsureExistsUpdated := "addon-ensure-exists-service-updated.yaml" var remoteFiles []stringPair = []stringPair{ - {fmt.Sprintf(reconcile_addon_controller, addonNsName), rcAddonReconcile}, - {fmt.Sprintf(reconcile_addon_controller_updated, addonNsName), rcAddonReconcileUpdated}, + {fmt.Sprintf(reconcile_addon_controller, addonNsName, serveHostnameImage), rcAddonReconcile}, + {fmt.Sprintf(reconcile_addon_controller_updated, addonNsName, serveHostnameImage), rcAddonReconcileUpdated}, {fmt.Sprintf(deprecated_label_addon_service, addonNsName), svcAddonDeprecatedLabel}, {fmt.Sprintf(deprecated_label_addon_service_updated, addonNsName), svcAddonDeprecatedLabelUpdated}, {fmt.Sprintf(ensure_exists_addon_service, addonNsName), svcAddonEnsureExists}, {fmt.Sprintf(ensure_exists_addon_service_updated, addonNsName), svcAddonEnsureExistsUpdated}, - {fmt.Sprintf(invalid_addon_controller, addonNsName), rcInvalid}, + {fmt.Sprintf(invalid_addon_controller, addonNsName, serveHostnameImage), rcInvalid}, } for _, p := range remoteFiles { diff --git a/test/e2e/network/dns.go b/test/e2e/network/dns.go index 5f18eff220..539938288e 100644 --- a/test/e2e/network/dns.go +++ b/test/e2e/network/dns.go @@ -32,6 +32,7 @@ import ( clientset "k8s.io/client-go/kubernetes" "k8s.io/kubernetes/pkg/api/testapi" "k8s.io/kubernetes/test/e2e/framework" + imageutils "k8s.io/kubernetes/test/utils/image" ) const dnsTestPodHostName = "dns-querier-1" @@ -65,7 +66,7 @@ func createDNSPod(namespace, wheezyProbeCmd, jessieProbeCmd string, useAnnotatio // TODO: Consider scraping logs instead of running a webserver. { Name: "webserver", - Image: "gcr.io/google_containers/test-webserver:e2e", + Image: imageutils.GetE2EImage(imageutils.TestWebserver), Ports: []v1.ContainerPort{ { Name: "http", @@ -81,7 +82,7 @@ func createDNSPod(namespace, wheezyProbeCmd, jessieProbeCmd string, useAnnotatio }, { Name: "querier", - Image: "gcr.io/google_containers/dnsutils:e2e", + Image: imageutils.GetE2EImage(imageutils.Dnsutils), Command: []string{"sh", "-c", wheezyProbeCmd}, VolumeMounts: []v1.VolumeMount{ { @@ -92,7 +93,7 @@ func createDNSPod(namespace, wheezyProbeCmd, jessieProbeCmd string, useAnnotatio }, { Name: "jessie-querier", - Image: "gcr.io/google_containers/jessie-dnsutils:e2e", + Image: imageutils.GetE2EImage(imageutils.JessieDnsutils), Command: []string{"sh", "-c", jessieProbeCmd}, VolumeMounts: []v1.VolumeMount{ { diff --git a/test/e2e/network/dns_common.go b/test/e2e/network/dns_common.go index e2a7c17fef..f3f858c62d 100644 --- a/test/e2e/network/dns_common.go +++ b/test/e2e/network/dns_common.go @@ -30,6 +30,7 @@ import ( "k8s.io/apimachinery/pkg/util/wait" clientset "k8s.io/client-go/kubernetes" "k8s.io/kubernetes/test/e2e/framework" + imageutils "k8s.io/kubernetes/test/utils/image" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" @@ -179,7 +180,7 @@ func (t *dnsTestCommon) createUtilPod() { Containers: []v1.Container{ { Name: "util", - Image: "gcr.io/google_containers/dnsutils:e2e", + Image: imageutils.GetE2EImage(imageutils.Dnsutils), Command: []string{"sleep", "10000"}, Ports: []v1.ContainerPort{ {ContainerPort: servicePort, Protocol: "TCP"}, diff --git a/test/e2e/network/kube_proxy.go b/test/e2e/network/kube_proxy.go index 33c216075a..1fb1e480d9 100644 --- a/test/e2e/network/kube_proxy.go +++ b/test/e2e/network/kube_proxy.go @@ -29,12 +29,13 @@ import ( "k8s.io/kubernetes/test/e2e/framework" "k8s.io/kubernetes/test/images/net/nat" + imageutils "k8s.io/kubernetes/test/utils/image" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) -const kubeProxyE2eImage = "gcr.io/google_containers/e2e-net-amd64:1.0" +var kubeProxyE2eImage = imageutils.GetE2EImage(imageutils.Net) var _ = SIGDescribe("Network", func() { const ( diff --git a/test/e2e/network/network_policy.go b/test/e2e/network/network_policy.go index 4323e30c8c..423067322b 100644 --- a/test/e2e/network/network_policy.go +++ b/test/e2e/network/network_policy.go @@ -27,6 +27,7 @@ import ( . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" + imageutils "k8s.io/kubernetes/test/utils/image" ) /* @@ -368,7 +369,7 @@ func createServerPodAndService(f *framework.Framework, namespace *v1.Namespace, // Build the containers for the server pod. containers = append(containers, v1.Container{ Name: fmt.Sprintf("%s-container-%d", podName, port), - Image: "gcr.io/google_containers/redis:e2e", + Image: imageutils.GetE2EImage(imageutils.Redis), Args: []string{ "/bin/sh", "-c", @@ -447,7 +448,7 @@ func createNetworkClientPod(f *framework.Framework, namespace *v1.Namespace, pod Containers: []v1.Container{ { Name: fmt.Sprintf("%s-container", podName), - Image: "gcr.io/google_containers/redis:e2e", + Image: imageutils.GetE2EImage(imageutils.Redis), Args: []string{ "/bin/sh", "-c", diff --git a/test/e2e/network/networking_perf.go b/test/e2e/network/networking_perf.go index 6196ef128d..c826bafcab 100644 --- a/test/e2e/network/networking_perf.go +++ b/test/e2e/network/networking_perf.go @@ -26,6 +26,7 @@ import ( . "github.com/onsi/gomega" "k8s.io/api/core/v1" "k8s.io/kubernetes/test/e2e/framework" + imageutils "k8s.io/kubernetes/test/utils/image" ) const ( @@ -63,7 +64,7 @@ var _ = SIGDescribe("Networking IPerf [Experimental] [Slow] [Feature:Networking- return v1.PodSpec{ Containers: []v1.Container{{ Name: "iperf-server", - Image: "gcr.io/google_containers/iperf:e2e", + Image: imageutils.GetE2EImage(imageutils.Iperf), Args: []string{ "/bin/sh", "-c", @@ -91,7 +92,7 @@ var _ = SIGDescribe("Networking IPerf [Experimental] [Slow] [Feature:Networking- Containers: []v1.Container{ { Name: "iperf-client", - Image: "gcr.io/google_containers/iperf:e2e", + Image: imageutils.GetE2EImage(imageutils.Iperf), Args: []string{ "/bin/sh", "-c", diff --git a/test/e2e/network/no_snat.go b/test/e2e/network/no_snat.go index 7a651ff506..e62026156a 100644 --- a/test/e2e/network/no_snat.go +++ b/test/e2e/network/no_snat.go @@ -31,16 +31,18 @@ import ( . "github.com/onsi/ginkgo" // . "github.com/onsi/gomega" + imageutils "k8s.io/kubernetes/test/utils/image" ) const ( - testPodPort = 8080 - testPodImage = "gcr.io/google_containers/no-snat-test-amd64:1.0.1" + testPodPort = 8080 - testProxyPort = 31235 // Firewall rule allows external traffic on ports 30000-32767. I just picked a random one. - testProxyImage = "gcr.io/google_containers/no-snat-test-proxy-amd64:1.0.1" + testProxyPort = 31235 // Firewall rule allows external traffic on ports 30000-32767. I just picked a random one. ) +var testPodImage = imageutils.GetE2EImage(imageutils.NoSnatTest) +var testProxyImage = imageutils.GetE2EImage(imageutils.NoSnatTestProxy) + var ( testPod = v1.Pod{ ObjectMeta: metav1.ObjectMeta{ diff --git a/test/e2e/network/proxy.go b/test/e2e/network/proxy.go index dd6ae3b4f2..61cb1061fe 100644 --- a/test/e2e/network/proxy.go +++ b/test/e2e/network/proxy.go @@ -35,6 +35,7 @@ import ( "k8s.io/kubernetes/pkg/api/testapi" "k8s.io/kubernetes/test/e2e/framework" testutils "k8s.io/kubernetes/test/utils" + imageutils "k8s.io/kubernetes/test/utils/image" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" @@ -114,7 +115,7 @@ var _ = SIGDescribe("Proxy", func() { cfg := testutils.RCConfig{ Client: f.ClientSet, InternalClient: f.InternalClientset, - Image: "gcr.io/google_containers/porter:4524579c0eb935c056c8e75563b4e1eda31587e0", + Image: imageutils.GetE2EImage(imageutils.Porter), Name: service.Name, Namespace: f.Namespace.Name, Replicas: 1, diff --git a/test/e2e/network/service.go b/test/e2e/network/service.go index a4d69b07ec..0d19372c43 100644 --- a/test/e2e/network/service.go +++ b/test/e2e/network/service.go @@ -33,6 +33,7 @@ import ( "k8s.io/kubernetes/pkg/cloudprovider" "k8s.io/kubernetes/pkg/controller/endpoint" "k8s.io/kubernetes/test/e2e/framework" + imageutils "k8s.io/kubernetes/test/utils/image" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" @@ -1129,7 +1130,7 @@ var _ = SIGDescribe("Services", func() { }() t.Name = "slow-terminating-unready-pod" - t.Image = "gcr.io/google_containers/netexec:1.7" + t.Image = imageutils.GetE2EImage(imageutils.Netexec) port := 80 terminateSeconds := int64(600) diff --git a/test/e2e/node/kubelet.go b/test/e2e/node/kubelet.go index 0e7276c00b..3b36a8b6ee 100644 --- a/test/e2e/node/kubelet.go +++ b/test/e2e/node/kubelet.go @@ -34,6 +34,7 @@ import ( . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" + imageutils "k8s.io/kubernetes/test/utils/image" ) const ( @@ -169,7 +170,7 @@ func createPodUsingNfs(f *framework.Framework, c clientset.Interface, ns, nfsIP, Containers: []v1.Container{ { Name: "pod-nfs-vol", - Image: "gcr.io/google_containers/busybox:1.24", + Image: imageutils.GetBusyBoxImage(), Command: []string{"/bin/sh"}, Args: cmdLine, VolumeMounts: []v1.VolumeMount{ diff --git a/test/e2e/node/security_context.go b/test/e2e/node/security_context.go index 5dcd8dc4fd..118bc650f4 100644 --- a/test/e2e/node/security_context.go +++ b/test/e2e/node/security_context.go @@ -32,6 +32,7 @@ import ( . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" + imageutils "k8s.io/kubernetes/test/utils/image" ) func scTestPod(hostIPC bool, hostPID bool) *v1.Pod { @@ -49,7 +50,7 @@ func scTestPod(hostIPC bool, hostPID bool) *v1.Pod { Containers: []v1.Container{ { Name: "test-container", - Image: "gcr.io/google_containers/busybox:1.24", + Image: imageutils.GetBusyBoxImage(), }, }, RestartPolicy: v1.RestartPolicyNever, diff --git a/test/e2e/pod_gc.go b/test/e2e/pod_gc.go index 98e8abed16..ebab2b2a49 100644 --- a/test/e2e/pod_gc.go +++ b/test/e2e/pod_gc.go @@ -27,6 +27,7 @@ import ( "k8s.io/apimachinery/pkg/util/uuid" "k8s.io/apimachinery/pkg/util/wait" "k8s.io/kubernetes/test/e2e/framework" + imageutils "k8s.io/kubernetes/test/utils/image" ) // This test requires that --terminated-pod-gc-threshold=100 be set on the controller manager @@ -89,7 +90,7 @@ func createTerminatingPod(f *framework.Framework) (*v1.Pod, error) { Containers: []v1.Container{ { Name: string(uuid), - Image: "gcr.io/google_containers/busybox:1.24", + Image: imageutils.GetBusyBoxImage(), }, }, SchedulerName: "please don't schedule my pods", diff --git a/test/e2e/pods.go b/test/e2e/pods.go index 380b0bafd9..79da117c7c 100644 --- a/test/e2e/pods.go +++ b/test/e2e/pods.go @@ -35,6 +35,7 @@ import ( . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" + imageutils "k8s.io/kubernetes/test/utils/image" ) var _ = framework.KubeDescribe("Pods Extended", func() { @@ -62,7 +63,7 @@ var _ = framework.KubeDescribe("Pods Extended", func() { Containers: []v1.Container{ { Name: "nginx", - Image: "gcr.io/google_containers/nginx-slim:0.7", + Image: imageutils.GetE2EImage(imageutils.NginxSlim), }, }, }, @@ -212,7 +213,7 @@ var _ = framework.KubeDescribe("Pods Extended", func() { Containers: []v1.Container{ { Name: "nginx", - Image: "gcr.io/google_containers/nginx-slim:0.7", + Image: imageutils.GetE2EImage(imageutils.NginxSlim), Resources: v1.ResourceRequirements{ Limits: v1.ResourceList{ v1.ResourceCPU: resource.MustParse("100m"), diff --git a/test/e2e/pre_stop.go b/test/e2e/pre_stop.go index 6655137b5b..4e4204068c 100644 --- a/test/e2e/pre_stop.go +++ b/test/e2e/pre_stop.go @@ -27,6 +27,7 @@ import ( "k8s.io/apimachinery/pkg/util/wait" clientset "k8s.io/client-go/kubernetes" "k8s.io/kubernetes/test/e2e/framework" + imageutils "k8s.io/kubernetes/test/utils/image" . "github.com/onsi/ginkgo" ) @@ -46,7 +47,7 @@ func testPreStop(c clientset.Interface, ns string) { Containers: []v1.Container{ { Name: "server", - Image: "gcr.io/google_containers/nettest:1.7", + Image: imageutils.GetE2EImage(imageutils.Nettest), Ports: []v1.ContainerPort{{ContainerPort: 8080}}, }, }, @@ -79,7 +80,7 @@ func testPreStop(c clientset.Interface, ns string) { Containers: []v1.Container{ { Name: "tester", - Image: "gcr.io/google_containers/busybox:1.24", + Image: imageutils.GetBusyBoxImage(), Command: []string{"sleep", "600"}, Lifecycle: &v1.Lifecycle{ PreStop: &v1.Handler{ diff --git a/test/e2e/scheduling/nvidia-gpus.go b/test/e2e/scheduling/nvidia-gpus.go index 32586dd281..be5566a314 100644 --- a/test/e2e/scheduling/nvidia-gpus.go +++ b/test/e2e/scheduling/nvidia-gpus.go @@ -31,6 +31,7 @@ import ( utilyaml "k8s.io/apimachinery/pkg/util/yaml" "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/test/e2e/framework" + imageutils "k8s.io/kubernetes/test/utils/image" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" @@ -38,7 +39,6 @@ import ( const ( testPodNamePrefix = "nvidia-gpu-" - testCUDAImage = "gcr.io/google_containers/cuda-vector-add:v0.1" cosOSImage = "Container-Optimized OS from Google" // Nvidia driver installation can take upwards of 5 minutes. driverInstallTimeout = 10 * time.Minute @@ -57,7 +57,7 @@ func makeCudaAdditionTestPod() *v1.Pod { Containers: []v1.Container{ { Name: "vector-addition", - Image: testCUDAImage, + Image: imageutils.GetE2EImage(imageutils.CudaVectorAdd), Resources: v1.ResourceRequirements{ Limits: v1.ResourceList{ v1.ResourceNvidiaGPU: *resource.NewQuantity(1, resource.DecimalSI), diff --git a/test/e2e/servicecatalog/podpreset.go b/test/e2e/servicecatalog/podpreset.go index a94c771529..832145c620 100644 --- a/test/e2e/servicecatalog/podpreset.go +++ b/test/e2e/servicecatalog/podpreset.go @@ -31,6 +31,7 @@ import ( . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" + imageutils "k8s.io/kubernetes/test/utils/image" ) var _ = SIGDescribe("PodPreset", func() { @@ -91,7 +92,7 @@ var _ = SIGDescribe("PodPreset", func() { Containers: []v1.Container{ { Name: "nginx", - Image: "gcr.io/google_containers/nginx-slim:0.7", + Image: imageutils.GetE2EImage(imageutils.NginxSlim), }, }, }, @@ -196,7 +197,7 @@ var _ = SIGDescribe("PodPreset", func() { Containers: []v1.Container{ { Name: "nginx", - Image: "gcr.io/google_containers/nginx-slim:0.7", + Image: imageutils.GetE2EImage(imageutils.NginxSlim), Env: []v1.EnvVar{{Name: "abc", Value: "value2"}, {Name: "ABC", Value: "value"}}, }, }, diff --git a/test/e2e/storage/empty_dir_wrapper.go b/test/e2e/storage/empty_dir_wrapper.go index f61d42168c..2a39611017 100644 --- a/test/e2e/storage/empty_dir_wrapper.go +++ b/test/e2e/storage/empty_dir_wrapper.go @@ -23,6 +23,7 @@ import ( "k8s.io/apimachinery/pkg/util/intstr" "k8s.io/apimachinery/pkg/util/uuid" "k8s.io/kubernetes/test/e2e/framework" + imageutils "k8s.io/kubernetes/test/utils/image" "fmt" "strconv" @@ -105,7 +106,7 @@ var _ = SIGDescribe("EmptyDir wrapper volumes", func() { Containers: []v1.Container{ { Name: "secret-test", - Image: "gcr.io/google_containers/test-webserver:e2e", + Image: imageutils.GetE2EImage(imageutils.TestWebserver), VolumeMounts: []v1.VolumeMount{ { Name: volumeName, @@ -187,7 +188,7 @@ func createGitServer(f *framework.Framework) (gitURL string, gitRepo string, cle Containers: []v1.Container{ { Name: "git-repo", - Image: "gcr.io/google_containers/fakegitserver:0.1", + Image: imageutils.GetE2EImage(imageutils.Fakegitserver), ImagePullPolicy: "IfNotPresent", Ports: []v1.ContainerPort{ {ContainerPort: int32(containerPort)}, @@ -350,7 +351,7 @@ func testNoWrappedVolumeRace(f *framework.Framework, volumes []v1.Volume, volume Containers: []v1.Container{ { Name: "test-container", - Image: "gcr.io/google_containers/busybox:1.24", + Image: imageutils.GetBusyBoxImage(), Command: []string{"sleep", "10000"}, Resources: v1.ResourceRequirements{ Requests: v1.ResourceList{ diff --git a/test/e2e/storage/pd.go b/test/e2e/storage/pd.go index 53961b1ca3..68ae3afdc0 100644 --- a/test/e2e/storage/pd.go +++ b/test/e2e/storage/pd.go @@ -38,6 +38,7 @@ import ( v1core "k8s.io/client-go/kubernetes/typed/core/v1" "k8s.io/kubernetes/pkg/api/testapi" "k8s.io/kubernetes/test/e2e/framework" + imageutils "k8s.io/kubernetes/test/utils/image" ) const ( @@ -601,7 +602,7 @@ func testPDPod(diskNames []string, targetNode types.NodeName, readOnly bool, num containers[i].Name = fmt.Sprintf("mycontainer%v", i+1) } - containers[i].Image = "gcr.io/google_containers/busybox:1.24" + containers[i].Image = imageutils.GetBusyBoxImage() containers[i].Command = []string{"sleep", "6000"} diff --git a/test/e2e/storage/volume_provisioning.go b/test/e2e/storage/volume_provisioning.go index 5b038f8dbc..f31e4888e0 100644 --- a/test/e2e/storage/volume_provisioning.go +++ b/test/e2e/storage/volume_provisioning.go @@ -45,6 +45,7 @@ import ( storageutil "k8s.io/kubernetes/pkg/apis/storage/v1/util" kubeletapis "k8s.io/kubernetes/pkg/kubelet/apis" "k8s.io/kubernetes/test/e2e/framework" + imageutils "k8s.io/kubernetes/test/utils/image" ) type storageClassTest struct { @@ -720,7 +721,7 @@ func runInPodWithVolume(c clientset.Interface, ns, claimName, command string) { Containers: []v1.Container{ { Name: "volume-tester", - Image: "gcr.io/google_containers/busybox:1.24", + Image: imageutils.GetBusyBoxImage(), Command: []string{"/bin/sh"}, Args: []string{"-c", command}, VolumeMounts: []v1.VolumeMount{ diff --git a/test/e2e/storage/vsphere_utils.go b/test/e2e/storage/vsphere_utils.go index 57e159c0ac..29c94743de 100644 --- a/test/e2e/storage/vsphere_utils.go +++ b/test/e2e/storage/vsphere_utils.go @@ -36,6 +36,7 @@ import ( "k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vclib" "k8s.io/kubernetes/pkg/volume/util/volumehelper" "k8s.io/kubernetes/test/e2e/framework" + imageutils "k8s.io/kubernetes/test/utils/image" ) // Sanity check for vSphere testing. Verify the persistent disk attached to the node. @@ -244,7 +245,7 @@ func getVSpherePodSpecWithClaim(claimName string, nodeSelectorKV map[string]stri Containers: []v1.Container{ { Name: "volume-tester", - Image: "gcr.io/google_containers/busybox:1.24", + Image: imageutils.GetBusyBoxImage(), Command: []string{"/bin/sh"}, Args: []string{"-c", command}, VolumeMounts: []v1.VolumeMount{ @@ -309,7 +310,7 @@ func getVSpherePodSpecWithVolumePaths(volumePaths []string, keyValuelabel map[st Containers: []v1.Container{ { Name: "vsphere-e2e-container-" + string(uuid.NewUUID()), - Image: "gcr.io/google_containers/busybox:1.24", + Image: imageutils.GetBusyBoxImage(), Command: commands, VolumeMounts: volumeMounts, }, diff --git a/test/e2e/upgrades/apps/deployments.go b/test/e2e/upgrades/apps/deployments.go index 2aebf9a2fe..743c2edd5a 100644 --- a/test/e2e/upgrades/apps/deployments.go +++ b/test/e2e/upgrades/apps/deployments.go @@ -27,6 +27,7 @@ import ( "k8s.io/kubernetes/test/e2e/upgrades" . "github.com/onsi/ginkgo" + imageutils "k8s.io/kubernetes/test/utils/image" ) // TODO: Test that the deployment stays available during master (and maybe @@ -64,7 +65,7 @@ var _ upgrades.Skippable = DeploymentUpgradeTest{} func (t *DeploymentUpgradeTest) Setup(f *framework.Framework) { deploymentName := "deployment-hash-test" c := f.ClientSet - nginxImage := "gcr.io/google_containers/nginx-slim:0.8" + nginxImage := imageutils.GetE2EImage(imageutils.NginxSlim) ns := f.Namespace.Name diff --git a/test/e2e/upgrades/configmaps.go b/test/e2e/upgrades/configmaps.go index 13acfb2f7e..476c283c37 100644 --- a/test/e2e/upgrades/configmaps.go +++ b/test/e2e/upgrades/configmaps.go @@ -22,6 +22,7 @@ import ( "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/kubernetes/test/e2e/framework" + imageutils "k8s.io/kubernetes/test/utils/image" . "github.com/onsi/ginkgo" "k8s.io/apimachinery/pkg/util/uuid" @@ -103,7 +104,7 @@ func (t *ConfigMapUpgradeTest) testPod(f *framework.Framework) { Containers: []v1.Container{ { Name: "configmap-volume-test", - Image: "gcr.io/google_containers/mounttest:0.8", + Image: imageutils.GetE2EImage(imageutils.Mounttest), Args: []string{ fmt.Sprintf("--file_content=%s/data", volumeMountPath), fmt.Sprintf("--file_mode=%s/data", volumeMountPath), @@ -117,7 +118,7 @@ func (t *ConfigMapUpgradeTest) testPod(f *framework.Framework) { }, { Name: "configmap-env-test", - Image: "gcr.io/google_containers/busybox:1.24", + Image: imageutils.GetBusyBoxImage(), Command: []string{"sh", "-c", "env"}, Env: []v1.EnvVar{ { diff --git a/test/e2e/upgrades/secrets.go b/test/e2e/upgrades/secrets.go index e76251c02f..03fe865637 100644 --- a/test/e2e/upgrades/secrets.go +++ b/test/e2e/upgrades/secrets.go @@ -23,6 +23,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/uuid" "k8s.io/kubernetes/test/e2e/framework" + imageutils "k8s.io/kubernetes/test/utils/image" . "github.com/onsi/ginkgo" ) @@ -99,7 +100,7 @@ func (t *SecretUpgradeTest) testPod(f *framework.Framework) { Containers: []v1.Container{ { Name: "secret-volume-test", - Image: "gcr.io/google_containers/mounttest:0.8", + Image: imageutils.GetE2EImage(imageutils.Mounttest), Args: []string{ fmt.Sprintf("--file_content=%s/data", volumeMountPath), fmt.Sprintf("--file_mode=%s/data", volumeMountPath), @@ -113,7 +114,7 @@ func (t *SecretUpgradeTest) testPod(f *framework.Framework) { }, { Name: "secret-env-test", - Image: "gcr.io/google_containers/busybox:1.24", + Image: imageutils.GetBusyBoxImage(), Command: []string{"sh", "-c", "env"}, Env: []v1.EnvVar{ { diff --git a/test/e2e/upgrades/sysctl.go b/test/e2e/upgrades/sysctl.go index f3d4b104d3..373360c407 100644 --- a/test/e2e/upgrades/sysctl.go +++ b/test/e2e/upgrades/sysctl.go @@ -30,6 +30,7 @@ import ( "k8s.io/kubernetes/pkg/kubelet/sysctl" "k8s.io/kubernetes/test/e2e/framework" + imageutils "k8s.io/kubernetes/test/utils/image" ) // SecretUpgradeTest tests that a pod with sysctls runs before and after an upgrade. During @@ -131,7 +132,7 @@ func sysctlTestPod(name string, sysctls map[string]string) *v1.Pod { Containers: []v1.Container{ { Name: "test-container", - Image: "gcr.io/google_containers/busybox:1.24", + Image: imageutils.GetBusyBoxImage(), Command: append([]string{"/bin/sysctl"}, keys...), }, }, diff --git a/test/e2e_federation/job.go b/test/e2e_federation/job.go index 71ad152ba4..e31f19dadb 100644 --- a/test/e2e_federation/job.go +++ b/test/e2e_federation/job.go @@ -29,6 +29,7 @@ import ( fedutil "k8s.io/kubernetes/federation/pkg/federation-controller/util" "k8s.io/kubernetes/test/e2e/framework" fedframework "k8s.io/kubernetes/test/e2e_federation/framework" + imageutils "k8s.io/kubernetes/test/utils/image" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" @@ -279,7 +280,7 @@ func newJobForFed(namespace string, name string, completions int32, parallelism Containers: []v1.Container{ { Name: "sleep", - Image: "gcr.io/google_containers/busybox:1.24", + Image: imageutils.GetBusyBoxImage(), Command: []string{"sleep", "1"}, }, }, diff --git a/test/e2e_federation/util.go b/test/e2e_federation/util.go index 73b55a836e..a1ed132ac5 100644 --- a/test/e2e_federation/util.go +++ b/test/e2e_federation/util.go @@ -36,6 +36,7 @@ import ( . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" + imageutils "k8s.io/kubernetes/test/utils/image" ) var ( @@ -402,7 +403,7 @@ func discoverService(f *fedframework.Framework, name string, exists bool, podNam Containers: []v1.Container{ { Name: "federated-service-discovery-container", - Image: "gcr.io/google_containers/busybox:1.24", + Image: imageutils.GetBusyBoxImage(), Command: command, }, }, diff --git a/test/e2e_node/apparmor_test.go b/test/e2e_node/apparmor_test.go index 40399d9194..cfc814a645 100644 --- a/test/e2e_node/apparmor_test.go +++ b/test/e2e_node/apparmor_test.go @@ -182,7 +182,7 @@ func createPodWithAppArmor(f *framework.Framework, profile string) *v1.Pod { Spec: v1.PodSpec{ Containers: []v1.Container{{ Name: "test", - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Command: []string{"touch", "foo"}, }}, RestartPolicy: v1.RestartPolicyNever, diff --git a/test/e2e_node/container_manager_test.go b/test/e2e_node/container_manager_test.go index 1b304013e1..54187d73a5 100644 --- a/test/e2e_node/container_manager_test.go +++ b/test/e2e_node/container_manager_test.go @@ -35,6 +35,7 @@ import ( . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" + imageutils "k8s.io/kubernetes/test/utils/image" ) func getOOMScoreForPid(pid int) (int, error) { @@ -168,7 +169,7 @@ var _ = framework.KubeDescribe("Container Manager Misc [Serial]", func() { Spec: v1.PodSpec{ Containers: []v1.Container{ { - Image: "gcr.io/google_containers/nginx-slim:0.7", + Image: imageutils.GetE2EImage(imageutils.NginxSlim), Name: podName, Resources: v1.ResourceRequirements{ Limits: v1.ResourceList{ @@ -209,7 +210,7 @@ var _ = framework.KubeDescribe("Container Manager Misc [Serial]", func() { Spec: v1.PodSpec{ Containers: []v1.Container{ { - Image: "gcr.io/google_containers/test-webserver:e2e", + Image: imageutils.GetE2EImage(imageutils.TestWebserver), Name: podName, Resources: v1.ResourceRequirements{ Requests: v1.ResourceList{ diff --git a/test/e2e_node/disk_eviction_test.go b/test/e2e_node/disk_eviction_test.go index 63d49d707f..16f310ddd1 100644 --- a/test/e2e_node/disk_eviction_test.go +++ b/test/e2e_node/disk_eviction_test.go @@ -78,7 +78,7 @@ var _ = framework.KubeDescribe("Kubelet Eviction Manager [Serial] [Disruptive]", RestartPolicy: v1.RestartPolicyNever, Containers: []v1.Container{ { - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Name: busyPodName, // Filling the disk Command: []string{"sh", "-c", diff --git a/test/e2e_node/docker_test.go b/test/e2e_node/docker_test.go index fa5ed68e62..854fa664ac 100644 --- a/test/e2e_node/docker_test.go +++ b/test/e2e_node/docker_test.go @@ -24,6 +24,7 @@ import ( "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/kubernetes/test/e2e/framework" + imageutils "k8s.io/kubernetes/test/utils/image" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" @@ -54,12 +55,12 @@ var _ = framework.KubeDescribe("Docker features [Feature:Docker]", func() { Containers: []v1.Container{ { Name: "test-container-1", - Image: "gcr.io/google_containers/busybox:1.24", + Image: imageutils.GetBusyBoxImage(), Command: []string{"/bin/top"}, }, { Name: "test-container-2", - Image: "gcr.io/google_containers/busybox:1.24", + Image: imageutils.GetBusyBoxImage(), Command: []string{"/bin/sleep"}, Args: []string{"10000"}, }, diff --git a/test/e2e_node/garbage_collector_test.go b/test/e2e_node/garbage_collector_test.go index 0bc4852ddd..530f0bcc68 100644 --- a/test/e2e_node/garbage_collector_test.go +++ b/test/e2e_node/garbage_collector_test.go @@ -278,7 +278,7 @@ func getPods(specs []*testPodSpec) (pods []*v1.Pod) { containers := []v1.Container{} for i := 0; i < spec.numContainers; i++ { containers = append(containers, v1.Container{ - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Name: spec.getContainerName(i), Command: getRestartingContainerCommand("/test-empty-dir-mnt", i, spec.restartCount, ""), VolumeMounts: []v1.VolumeMount{ diff --git a/test/e2e_node/gpus.go b/test/e2e_node/gpus.go index 83e59dafa4..d1ac5a1ccb 100644 --- a/test/e2e_node/gpus.go +++ b/test/e2e_node/gpus.go @@ -167,7 +167,7 @@ func makePod(gpus int64, name string) *v1.Pod { RestartPolicy: v1.RestartPolicyAlways, Containers: []v1.Container{ { - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Name: name, Command: []string{"sh", "-c", gpuverificationCmd}, Resources: resources, diff --git a/test/e2e_node/image_list.go b/test/e2e_node/image_list.go index 41c3daafb8..8d83fcef25 100644 --- a/test/e2e_node/image_list.go +++ b/test/e2e_node/image_list.go @@ -31,6 +31,7 @@ import ( "k8s.io/kubernetes/pkg/kubelet/remote" commontest "k8s.io/kubernetes/test/e2e/common" "k8s.io/kubernetes/test/e2e/framework" + imageutils "k8s.io/kubernetes/test/utils/image" ) const ( @@ -47,12 +48,12 @@ const ( var NodeImageWhiteList = sets.NewString( "google/cadvisor:latest", "gcr.io/google-containers/stress:v1", - "gcr.io/google_containers/busybox:1.24", + busyboxImage, "gcr.io/google_containers/busybox@sha256:4bdd623e848417d96127e16037743f0cd8b528c026e9175e22a84f639eca58ff", "gcr.io/google_containers/node-problem-detector:v0.4.1", - "gcr.io/google_containers/nginx-slim:0.7", - "gcr.io/google_containers/serve_hostname:v1.4", - "gcr.io/google_containers/netexec:1.7", + imageutils.GetE2EImage(imageutils.NginxSlim), + imageutils.GetE2EImage(imageutils.ServeHostname), + imageutils.GetE2EImage(imageutils.Netexec), "gcr.io/google_containers/nonewprivs:1.2", framework.GetPauseImageNameForHostArch(), ) diff --git a/test/e2e_node/inode_eviction_test.go b/test/e2e_node/inode_eviction_test.go index 76135f2538..0b025f5d03 100644 --- a/test/e2e_node/inode_eviction_test.go +++ b/test/e2e_node/inode_eviction_test.go @@ -56,7 +56,7 @@ var _ = framework.KubeDescribe("InodeEviction [Slow] [Serial] [Disruptive] [Flak RestartPolicy: v1.RestartPolicyNever, Containers: []v1.Container{ { - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Name: "container-inode-hog-container", Command: getInodeConsumingCommand(""), }, @@ -72,7 +72,7 @@ var _ = framework.KubeDescribe("InodeEviction [Slow] [Serial] [Disruptive] [Flak RestartPolicy: v1.RestartPolicyNever, Containers: []v1.Container{ { - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Name: "volume-inode-hog-container", Command: getInodeConsumingCommand(volumeMountPath), VolumeMounts: []v1.VolumeMount{ @@ -329,7 +329,7 @@ func getInnocentPod() *v1.Pod { RestartPolicy: v1.RestartPolicyNever, Containers: []v1.Container{ { - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Name: "innocent-container", Command: []string{ "sh", diff --git a/test/e2e_node/kubelet_test.go b/test/e2e_node/kubelet_test.go index 0255c28980..d727b92eb7 100644 --- a/test/e2e_node/kubelet_test.go +++ b/test/e2e_node/kubelet_test.go @@ -49,7 +49,7 @@ var _ = framework.KubeDescribe("Kubelet", func() { RestartPolicy: v1.RestartPolicyNever, Containers: []v1.Container{ { - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Name: podName, Command: []string{"sh", "-c", "echo 'Hello World' ; sleep 240"}, }, @@ -83,7 +83,7 @@ var _ = framework.KubeDescribe("Kubelet", func() { RestartPolicy: v1.RestartPolicyNever, Containers: []v1.Container{ { - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Name: podName, Command: []string{"/bin/false"}, }, @@ -130,7 +130,7 @@ var _ = framework.KubeDescribe("Kubelet", func() { RestartPolicy: v1.RestartPolicyNever, Containers: []v1.Container{ { - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Name: podName, Command: []string{"/bin/sh", "-c", "cat /etc/hosts; sleep 6000"}, }, @@ -175,7 +175,7 @@ var _ = framework.KubeDescribe("Kubelet", func() { RestartPolicy: v1.RestartPolicyNever, Containers: []v1.Container{ { - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Name: podName, Command: []string{"/bin/sh", "-c", "echo test > /file; sleep 240"}, SecurityContext: &v1.SecurityContext{ diff --git a/test/e2e_node/lifecycle_hook_test.go b/test/e2e_node/lifecycle_hook_test.go index aef27ddccf..a8c49a19ed 100644 --- a/test/e2e_node/lifecycle_hook_test.go +++ b/test/e2e_node/lifecycle_hook_test.go @@ -23,6 +23,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/intstr" "k8s.io/kubernetes/test/e2e/framework" + imageutils "k8s.io/kubernetes/test/utils/image" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" @@ -46,7 +47,7 @@ var _ = framework.KubeDescribe("Container Lifecycle Hook", func() { Containers: []v1.Container{ { Name: "pod-handle-http-request", - Image: "gcr.io/google_containers/netexec:1.7", + Image: imageutils.GetE2EImage(imageutils.Netexec), Ports: []v1.ContainerPort{ { ContainerPort: 8080, @@ -91,7 +92,7 @@ var _ = framework.KubeDescribe("Container Lifecycle Hook", func() { }, }, } - podWithHook := getPodWithHook("pod-with-poststart-exec-hook", "gcr.io/google_containers/hostexec:1.2", lifecycle) + podWithHook := getPodWithHook("pod-with-poststart-exec-hook", imageutils.GetE2EImage(imageutils.Hostexec), lifecycle) testPodWithHook(podWithHook) }) It("should execute prestop exec hook properly [Conformance]", func() { @@ -102,7 +103,7 @@ var _ = framework.KubeDescribe("Container Lifecycle Hook", func() { }, }, } - podWithHook := getPodWithHook("pod-with-prestop-exec-hook", "gcr.io/google_containers/hostexec:1.2", lifecycle) + podWithHook := getPodWithHook("pod-with-prestop-exec-hook", imageutils.GetE2EImage(imageutils.Hostexec), lifecycle) testPodWithHook(podWithHook) }) It("should execute poststart http hook properly [Conformance]", func() { diff --git a/test/e2e_node/local_storage_allocatable_eviction_test.go b/test/e2e_node/local_storage_allocatable_eviction_test.go index 824e1db2a3..097d5a81bf 100644 --- a/test/e2e_node/local_storage_allocatable_eviction_test.go +++ b/test/e2e_node/local_storage_allocatable_eviction_test.go @@ -62,7 +62,7 @@ var _ = framework.KubeDescribe("LocalStorageAllocatableEviction [Slow] [Serial] RestartPolicy: v1.RestartPolicyNever, Containers: []v1.Container{ { - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Name: "container-disk-hog-pod", Command: []string{"sh", "-c", command}, }, @@ -79,7 +79,7 @@ var _ = framework.KubeDescribe("LocalStorageAllocatableEviction [Slow] [Serial] RestartPolicy: v1.RestartPolicyNever, Containers: []v1.Container{ { - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Name: "idle-pod", Command: []string{"sh", "-c", fmt.Sprintf("while true; do sleep 5; done")}, diff --git a/test/e2e_node/local_storage_isolation_eviction_test.go b/test/e2e_node/local_storage_isolation_eviction_test.go index 5d3408c4b2..c15780929b 100644 --- a/test/e2e_node/local_storage_isolation_eviction_test.go +++ b/test/e2e_node/local_storage_isolation_eviction_test.go @@ -55,7 +55,7 @@ var _ = framework.KubeDescribe("LocalStorageCapacityIsolationEviction [Slow] [Se RestartPolicy: v1.RestartPolicyNever, Containers: []v1.Container{ { - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Name: "container-emptydir-hog-pod", Command: []string{ "sh", @@ -91,7 +91,7 @@ var _ = framework.KubeDescribe("LocalStorageCapacityIsolationEviction [Slow] [Se RestartPolicy: v1.RestartPolicyNever, Containers: []v1.Container{ { - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Name: "container-emptydir-memory-pod", Command: []string{ "sh", @@ -128,7 +128,7 @@ var _ = framework.KubeDescribe("LocalStorageCapacityIsolationEviction [Slow] [Se RestartPolicy: v1.RestartPolicyNever, Containers: []v1.Container{ { - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Name: "container-emptydir-hog-pod", Command: []string{ "sh", @@ -164,7 +164,7 @@ var _ = framework.KubeDescribe("LocalStorageCapacityIsolationEviction [Slow] [Se RestartPolicy: v1.RestartPolicyNever, Containers: []v1.Container{ { - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Name: "container-hog-pod", Command: []string{ "sh", diff --git a/test/e2e_node/log_path_test.go b/test/e2e_node/log_path_test.go index b4d64aa52a..62b64f04f8 100644 --- a/test/e2e_node/log_path_test.go +++ b/test/e2e_node/log_path_test.go @@ -55,7 +55,7 @@ var _ = framework.KubeDescribe("ContainerLogPath", func() { RestartPolicy: v1.RestartPolicyNever, Containers: []v1.Container{ { - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Name: logContName, Command: []string{"sh", "-c", "echo " + logString}, }, @@ -86,7 +86,7 @@ var _ = framework.KubeDescribe("ContainerLogPath", func() { RestartPolicy: v1.RestartPolicyNever, Containers: []v1.Container{ { - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Name: checkContName, // If we find expected log file and contains right content, exit 0 // else, keep checking until test timeout diff --git a/test/e2e_node/mirror_pod_test.go b/test/e2e_node/mirror_pod_test.go index ce43ed3b9f..a56c889590 100644 --- a/test/e2e_node/mirror_pod_test.go +++ b/test/e2e_node/mirror_pod_test.go @@ -33,6 +33,7 @@ import ( . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" + imageutils "k8s.io/kubernetes/test/utils/image" ) var _ = framework.KubeDescribe("MirrorPod", func() { @@ -48,7 +49,7 @@ var _ = framework.KubeDescribe("MirrorPod", func() { By("create the static pod") err := createStaticPod(manifestPath, staticPodName, ns, - "gcr.io/google_containers/nginx-slim:0.7", v1.RestartPolicyAlways) + imageutils.GetE2EImage(imageutils.NginxSlim), v1.RestartPolicyAlways) Expect(err).ShouldNot(HaveOccurred()) By("wait for the mirror pod to be running") diff --git a/test/e2e_node/pods_container_manager_test.go b/test/e2e_node/pods_container_manager_test.go index 99afc95f50..7e0a3248bf 100644 --- a/test/e2e_node/pods_container_manager_test.go +++ b/test/e2e_node/pods_container_manager_test.go @@ -90,7 +90,7 @@ func makePodToVerifyCgroups(cgroupNames []cm.CgroupName) *v1.Pod { RestartPolicy: v1.RestartPolicyNever, Containers: []v1.Container{ { - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Name: "container" + string(uuid.NewUUID()), Command: []string{"sh", "-c", command}, VolumeMounts: []v1.VolumeMount{ @@ -128,7 +128,7 @@ func makePodToVerifyCgroupRemoved(cgroupName cm.CgroupName) *v1.Pod { RestartPolicy: v1.RestartPolicyOnFailure, Containers: []v1.Container{ { - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Name: "container" + string(uuid.NewUUID()), Command: []string{"sh", "-c", "for i in `seq 1 10`; do if [ ! -d /tmp/memory/" + cgroupFsName + " ] && [ ! -d /tmp/cpu/" + cgroupFsName + " ]; then exit 0; else sleep 10; fi; done; exit 1"}, VolumeMounts: []v1.VolumeMount{ diff --git a/test/e2e_node/runtime_conformance_test.go b/test/e2e_node/runtime_conformance_test.go index 8da60b8848..5e3ab6b7b3 100644 --- a/test/e2e_node/runtime_conformance_test.go +++ b/test/e2e_node/runtime_conformance_test.go @@ -46,7 +46,7 @@ var _ = framework.KubeDescribe("Container Runtime Conformance Test", func() { restartCountVolumeName := "restart-count" restartCountVolumePath := "/restart-count" testContainer := v1.Container{ - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, VolumeMounts: []v1.VolumeMount{ { MountPath: restartCountVolumePath, @@ -140,7 +140,7 @@ while true; do sleep 1; done { name: "if TerminationMessagePath is set [Conformance]", container: v1.Container{ - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Command: []string{"/bin/sh", "-c"}, Args: []string{"/bin/echo -n DONE > /dev/termination-log"}, TerminationMessagePath: "/dev/termination-log", @@ -155,7 +155,7 @@ while true; do sleep 1; done { name: "if TerminationMessagePath is set as non-root user and at a non-default path [Conformance]", container: v1.Container{ - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Command: []string{"/bin/sh", "-c"}, Args: []string{"/bin/echo -n DONE > /dev/termination-custom-log"}, TerminationMessagePath: "/dev/termination-custom-log", @@ -170,7 +170,7 @@ while true; do sleep 1; done { name: "from log output if TerminationMessagePolicy FallbackToLogOnError is set [Conformance]", container: v1.Container{ - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Command: []string{"/bin/sh", "-c"}, Args: []string{"/bin/echo -n DONE; /bin/false"}, TerminationMessagePath: "/dev/termination-log", @@ -183,7 +183,7 @@ while true; do sleep 1; done { name: "as empty when pod succeeds and TerminationMessagePolicy FallbackToLogOnError is set", container: v1.Container{ - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Command: []string{"/bin/sh", "-c"}, Args: []string{"/bin/echo DONE; /bin/true"}, TerminationMessagePath: "/dev/termination-log", @@ -196,7 +196,7 @@ while true; do sleep 1; done { name: "from file when pod succeeds and TerminationMessagePolicy FallbackToLogOnError is set [Conformance]", container: v1.Container{ - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Command: []string{"/bin/sh", "-c"}, Args: []string{"/bin/echo -n OK > /dev/termination-log; /bin/echo DONE; /bin/true"}, TerminationMessagePath: "/dev/termination-log", diff --git a/test/e2e_node/security_context_test.go b/test/e2e_node/security_context_test.go index 83536512b0..b2df8465db 100644 --- a/test/e2e_node/security_context_test.go +++ b/test/e2e_node/security_context_test.go @@ -29,6 +29,7 @@ import ( "k8s.io/kubernetes/test/e2e/framework" . "github.com/onsi/ginkgo" + imageutils "k8s.io/kubernetes/test/utils/image" ) var _ = framework.KubeDescribe("Security Context", func() { @@ -59,7 +60,7 @@ var _ = framework.KubeDescribe("Security Context", func() { } createAndWaitHostPidPod := func(podName string, hostPID bool) { podClient.Create(makeHostPidPod(podName, - "gcr.io/google_containers/busybox:1.24", + busyboxImage, []string{"sh", "-c", "pidof nginx || true"}, hostPID, )) @@ -71,7 +72,7 @@ var _ = framework.KubeDescribe("Security Context", func() { BeforeEach(func() { nginxPodName := "nginx-hostpid-" + string(uuid.NewUUID()) podClient.CreateSync(makeHostPidPod(nginxPodName, - "gcr.io/google_containers/nginx-slim:0.7", + imageutils.GetE2EImage(imageutils.NginxSlim), nil, true, )) @@ -139,7 +140,7 @@ var _ = framework.KubeDescribe("Security Context", func() { } createAndWaitHostIPCPod := func(podName string, hostNetwork bool) { podClient.Create(makeHostIPCPod(podName, - "gcr.io/google_containers/busybox:1.24", + busyboxImage, []string{"sh", "-c", "ipcs -m | awk '{print $2}'"}, hostNetwork, )) @@ -219,7 +220,7 @@ var _ = framework.KubeDescribe("Security Context", func() { listListeningPortsCommand := []string{"sh", "-c", "netstat -ln"} createAndWaitHostNetworkPod := func(podName string, hostNetwork bool) { podClient.Create(makeHostNetworkPod(podName, - "gcr.io/google_containers/busybox:1.24", + busyboxImage, listListeningPortsCommand, hostNetwork, )) @@ -298,7 +299,7 @@ var _ = framework.KubeDescribe("Security Context", func() { createAndWaitUserPod := func(userid int64) { podName := fmt.Sprintf("busybox-user-%d-%s", userid, uuid.NewUUID()) podClient.Create(makeUserPod(podName, - "gcr.io/google_containers/busybox:1.24", + busyboxImage, []string{"sh", "-c", fmt.Sprintf("test $(id -u) -eq %d", userid)}, userid, )) @@ -339,7 +340,7 @@ var _ = framework.KubeDescribe("Security Context", func() { createAndWaitUserPod := func(readOnlyRootFilesystem bool) string { podName := fmt.Sprintf("busybox-readonly-%v-%s", readOnlyRootFilesystem, uuid.NewUUID()) podClient.Create(makeUserPod(podName, - "gcr.io/google_containers/busybox:1.24", + imageutils.GetBusyBoxImage(), []string{"sh", "-c", "touch checkfile"}, readOnlyRootFilesystem, )) @@ -457,7 +458,7 @@ var _ = framework.KubeDescribe("Security Context", func() { createAndWaitUserPod := func(privileged bool) string { podName := fmt.Sprintf("busybox-privileged-%v-%s", privileged, uuid.NewUUID()) podClient.Create(makeUserPod(podName, - "gcr.io/google_containers/busybox:1.24", + busyboxImage, []string{"sh", "-c", "ip link add dummy0 type dummy || true"}, privileged, )) diff --git a/test/e2e_node/summary_test.go b/test/e2e_node/summary_test.go index 4b5084b709..64e0996fb9 100644 --- a/test/e2e_node/summary_test.go +++ b/test/e2e_node/summary_test.go @@ -279,7 +279,7 @@ func getSummaryTestPods(f *framework.Framework, numRestarts int32, names ...stri Containers: []v1.Container{ { Name: "busybox-container", - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Command: getRestartingContainerCommand("/test-empty-dir-mnt", 0, numRestarts, "ping -c 1 google.com; echo 'hello world' >> /test-empty-dir-mnt/file;"), Resources: v1.ResourceRequirements{ Limits: v1.ResourceList{ diff --git a/test/e2e_node/util.go b/test/e2e_node/util.go index 515353bcca..5a51ca2126 100644 --- a/test/e2e_node/util.go +++ b/test/e2e_node/util.go @@ -45,6 +45,7 @@ import ( . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" + imageutils "k8s.io/kubernetes/test/utils/image" ) // TODO(random-liu): Get this automatically from kubelet flag. @@ -52,6 +53,7 @@ var kubeletAddress = flag.String("kubelet-address", "http://127.0.0.1:10255", "H var startServices = flag.Bool("start-services", true, "If true, start local node services") var stopServices = flag.Bool("stop-services", true, "If true, stop local node services after running tests") +var busyboxImage = imageutils.GetBusyBoxImage() func getNodeSummary() (*stats.Summary, error) { req, err := http.NewRequest("GET", *kubeletAddress+"/stats/summary", nil) diff --git a/test/e2e_node/volume_manager_test.go b/test/e2e_node/volume_manager_test.go index 66d354668f..5f62e3c04f 100644 --- a/test/e2e_node/volume_manager_test.go +++ b/test/e2e_node/volume_manager_test.go @@ -50,7 +50,7 @@ var _ = framework.KubeDescribe("Kubelet Volume Manager", func() { RestartPolicy: v1.RestartPolicyNever, Containers: []v1.Container{ { - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Name: "container" + string(uuid.NewUUID()), Command: []string{"sh", "-c", "echo"}, VolumeMounts: []v1.VolumeMount{ @@ -89,7 +89,7 @@ var _ = framework.KubeDescribe("Kubelet Volume Manager", func() { RestartPolicy: v1.RestartPolicyNever, Containers: []v1.Container{ { - Image: "gcr.io/google_containers/busybox:1.24", + Image: busyboxImage, Name: "container" + string(uuid.NewUUID()), Command: []string{"sh", "-c", "if [ -d " + volumePath + " ]; then exit 1; fi;"}, VolumeMounts: []v1.VolumeMount{