From 88b5c874c8645cf06c44f434e942adfcd28c0d16 Mon Sep 17 00:00:00 2001 From: Lee Bernick Date: Fri, 19 Aug 2022 13:34:32 -0400 Subject: [PATCH] Fix docs and remove redundant code for LimitRanges Prior to this commit, LimitRange transformer behavior did not match our documentation. Our documentation stated that Tekton adjusts compute resources of containers to fit within LimitRange minimum requests and maximum limits. This is not true. Instead, Tekton divides LimitRange defaultRequests among Step containers, and considers the minimum only if the defaultRequest divided by the number of Steps would be less than the minimum. In addition, the LimitRange transformer does several things that would be done by Kubernetes anyway, which are removed by this commit. When a LimitRange is created, Kubernetes automatically sets defaults and defaultRequests to the max if a user did not specify them. Kubernetes will automatically apply these defaults and defaultRequests to any pods created. Therefore, there is no need for Tekton to set container limits to the default limits (or in fact, to consider limits at all). There's also no need for Tekton to consider defaults/defaultRequests for Sidecars and init containers, as we are happy to accept Kubernetes' default behavior here. The only resource requirements we need to modify are to split a LimitRange's defaultRequests among Steps that don't specify requests, so all other LimitRange-based transformations are removed in this commit. Note that Tekton makes no guarantees that a TaskRun's pod will be valid (i.e. requests <= limits). If a user configures a TaskRun in a way that is inconsistent with any LimitRanges, we allow Kubernetes to reject the resulting pod. --- docs/compute-resources.md | 21 +- pkg/internal/computeresources/transformer.go | 72 +---- .../computeresources/transformer_test.go | 272 ++---------------- 3 files changed, 38 insertions(+), 327 deletions(-) diff --git a/docs/compute-resources.md b/docs/compute-resources.md index f249e8e1f98..fd8af332fc3 100644 --- a/docs/compute-resources.md +++ b/docs/compute-resources.md @@ -158,23 +158,18 @@ will be applied to the init containers that Tekton injects into a `TaskRun`'s po ### Requests -If a container does not have requests defined, the resulting container's requests are the larger of: -- the LimitRange minimum resource requests -- the LimitRange default resource requests (for init and Sidecar containers) or the LimitRange default resource requests divided by the number of Step containers (for Step containers) +If a Step container does not have requests defined, Tekton will divide a LimitRange's `defaultRequests` by the number of Step containers and apply these requests to the Steps. +This results in a TaskRun with overall requests equal to LimitRange `defaultRequests`. +If this value is less than the LimitRange minimum, the LimitRange minimum will be used instead. +LimitRange `defaultRequests` are applied as-is to init containers or Sidecar containers that don't specify requests. -If a container has requests defined, the resulting container's requests are the larger of: -- the container's requests -- the LimitRange minimum resource requests +Containers that do specify requests will not be modified. If these requests are lower than LimitRange minimums, Kubernetes will reject the resulting TaskRun's pod. ### Limits -If a container does not have limits defined, the resulting container's limits are the smaller of: -- the LimitRange maximum resource limits -- the LimitRange default resource limits - -If a container has limits defined, the resulting container's limits are the smaller of: -- the container's limits -- the LimitRange maximum resource limits +Tekton does not adjust container limits, regardless of whether a container is a Step, Sidecar, or init container. +If a container does not have limits defined, Kubernetes will apply the LimitRange `default` to the container's limits. +If a container does define limits, and they are less than the LimitRange `default`, Kubernetes will reject the resulting TaskRun's pod. ### Examples diff --git a/pkg/internal/computeresources/transformer.go b/pkg/internal/computeresources/transformer.go index 8a639f50d27..61e88cba494 100644 --- a/pkg/internal/computeresources/transformer.go +++ b/pkg/internal/computeresources/transformer.go @@ -67,54 +67,24 @@ func transformPodBasedOnLimitRange(p *corev1.Pod, limitRange *corev1.LimitRange) } // FIXME(#4230) maxLimitRequestRatio to support later - defaultContainerLimits := getDefaultLimits(limitRange) - defaultContainerRequests := getDefaultContainerRequest(limitRange) defaultStepContainerRequests := getDefaultStepContainerRequest(limitRange, nbStepContainers) - for i := range p.Spec.InitContainers { - // We are trying to set the smallest requests possible - if p.Spec.InitContainers[i].Resources.Requests == nil { - p.Spec.InitContainers[i].Resources.Requests = defaultContainerRequests - } else { - for _, name := range resourceNames { - setRequestsOrLimits(name, p.Spec.InitContainers[i].Resources.Requests, defaultContainerRequests) - } - } - // We are trying to set the highest limits possible - if p.Spec.InitContainers[i].Resources.Limits == nil { - p.Spec.InitContainers[i].Resources.Limits = defaultContainerLimits - } else { - for _, name := range resourceNames { - setRequestsOrLimits(name, p.Spec.InitContainers[i].Resources.Limits, defaultContainerLimits) - } - } - } - for i, c := range p.Spec.Containers { - var defaultRequests = defaultContainerRequests - if pod.IsContainerStep(c.Name) { - defaultRequests = defaultStepContainerRequests + if !pod.IsContainerStep(c.Name) { + continue } - if p.Spec.Containers[i].Resources.Requests == nil { - p.Spec.Containers[i].Resources.Requests = defaultRequests - } else { - for _, name := range resourceNames { - setRequestsOrLimits(name, p.Spec.Containers[i].Resources.Requests, defaultRequests) - } - } - if p.Spec.Containers[i].Resources.Limits == nil { - p.Spec.Containers[i].Resources.Limits = defaultContainerLimits + p.Spec.Containers[i].Resources.Requests = defaultStepContainerRequests } else { for _, name := range resourceNames { - setRequestsOrLimits(name, p.Spec.Containers[i].Resources.Limits, defaultContainerLimits) + setRequests(name, p.Spec.Containers[i].Resources.Requests, defaultStepContainerRequests) } } } return p } -func setRequestsOrLimits(name corev1.ResourceName, dst, src corev1.ResourceList) { +func setRequests(name corev1.ResourceName, dst, src corev1.ResourceList) { if compare.IsZero(dst[name]) && !compare.IsZero(src[name]) { dst[name] = src[name] } @@ -158,35 +128,3 @@ func getDefaultStepContainerRequest(limitRange *corev1.LimitRange, nbContainers } return r } - -// Returns the default requests to use for each init container, determined by the LimitRange default requests and minimums -func getDefaultContainerRequest(limitRange *corev1.LimitRange) corev1.ResourceList { - // Support only Type Container to start with - var r corev1.ResourceList - for _, item := range limitRange.Spec.Limits { - // Only support LimitTypeContainer - if item.Type == corev1.LimitTypeContainer { - if item.DefaultRequest != nil { - r = item.DefaultRequest - } else if item.Min != nil { - r = item.Min - } - } - } - return r -} - -func getDefaultLimits(limitRange *corev1.LimitRange) corev1.ResourceList { - // Support only Type Container to start with - var l corev1.ResourceList - for _, item := range limitRange.Spec.Limits { - if item.Type == corev1.LimitTypeContainer { - if item.Default != nil { - l = item.Default - } else if item.Max != nil { - l = item.Max - } - } - } - return l -} diff --git a/pkg/internal/computeresources/transformer_test.go b/pkg/internal/computeresources/transformer_test.go index 8921144bc3f..b88ff2677e2 100644 --- a/pkg/internal/computeresources/transformer_test.go +++ b/pkg/internal/computeresources/transformer_test.go @@ -88,22 +88,10 @@ func TestTransformerOneContainer(t *testing.T) { }, want: corev1.PodSpec{ InitContainers: []corev1.Container{{ - Resources: corev1.ResourceRequirements{ - Limits: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("1"), - corev1.ResourceMemory: resource.MustParse("100Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("1Gi"), - }, - }, + Resources: corev1.ResourceRequirements{}, }}, Containers: []corev1.Container{{ - Resources: corev1.ResourceRequirements{ - Limits: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("1"), - corev1.ResourceMemory: resource.MustParse("100Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("1Gi"), - }, - }, + Resources: corev1.ResourceRequirements{}, }}, }, }, { @@ -128,13 +116,7 @@ func TestTransformerOneContainer(t *testing.T) { }, want: corev1.PodSpec{ InitContainers: []corev1.Container{{ - Resources: corev1.ResourceRequirements{ - Requests: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("1"), - corev1.ResourceMemory: resource.MustParse("100Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("1Gi"), - }, - }, + Resources: corev1.ResourceRequirements{}, }}, Containers: []corev1.Container{{ Resources: corev1.ResourceRequirements{ @@ -173,26 +155,10 @@ func TestTransformerOneContainer(t *testing.T) { }, want: corev1.PodSpec{ InitContainers: []corev1.Container{{ - Resources: corev1.ResourceRequirements{ - Limits: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("2"), - corev1.ResourceMemory: resource.MustParse("200Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("2Gi"), - }, - Requests: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("1"), - corev1.ResourceMemory: resource.MustParse("100Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("1Gi"), - }, - }, + Resources: corev1.ResourceRequirements{}, }}, Containers: []corev1.Container{{ Resources: corev1.ResourceRequirements{ - Limits: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("2"), - corev1.ResourceMemory: resource.MustParse("200Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("2Gi"), - }, Requests: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("1"), corev1.ResourceMemory: resource.MustParse("100Mi"), @@ -228,26 +194,10 @@ func TestTransformerOneContainer(t *testing.T) { }, want: corev1.PodSpec{ InitContainers: []corev1.Container{{ - Resources: corev1.ResourceRequirements{ - Limits: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("2"), - corev1.ResourceMemory: resource.MustParse("200Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("2Gi"), - }, - Requests: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("1"), - corev1.ResourceMemory: resource.MustParse("100Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("1Gi"), - }, - }, + Resources: corev1.ResourceRequirements{}, }}, Containers: []corev1.Container{{ Resources: corev1.ResourceRequirements{ - Limits: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("2"), - corev1.ResourceMemory: resource.MustParse("200Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("2Gi"), - }, Requests: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("1"), corev1.ResourceMemory: resource.MustParse("100Mi"), @@ -298,11 +248,9 @@ func TestTransformerOneContainer(t *testing.T) { InitContainers: []corev1.Container{{ Resources: corev1.ResourceRequirements{ Limits: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("4"), - corev1.ResourceMemory: resource.MustParse("2Gi"), + corev1.ResourceCPU: resource.MustParse("4"), }, Requests: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("1"), corev1.ResourceMemory: resource.MustParse("400Mi"), }, }, @@ -314,8 +262,8 @@ func TestTransformerOneContainer(t *testing.T) { corev1.ResourceEphemeralStorage: resource.MustParse("2Gi"), }, Requests: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("1"), corev1.ResourceMemory: resource.MustParse("400Mi"), + corev1.ResourceCPU: resource.MustParse("1"), }, }, }}, @@ -357,26 +305,10 @@ func TestTransformerOneContainer(t *testing.T) { }, want: corev1.PodSpec{ InitContainers: []corev1.Container{{ - Resources: corev1.ResourceRequirements{ - Limits: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("2"), - corev1.ResourceMemory: resource.MustParse("200Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("2Gi"), - }, - Requests: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("1"), - corev1.ResourceMemory: resource.MustParse("100Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("1Gi"), - }, - }, + Resources: corev1.ResourceRequirements{}, }}, Containers: []corev1.Container{{ Resources: corev1.ResourceRequirements{ - Limits: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("2"), - corev1.ResourceMemory: resource.MustParse("200Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("2Gi"), - }, Requests: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("1"), corev1.ResourceMemory: resource.MustParse("100Mi"), @@ -460,9 +392,6 @@ func TestTransformerOneContainer(t *testing.T) { want: corev1.PodSpec{ InitContainers: []corev1.Container{{ Resources: corev1.ResourceRequirements{ - Requests: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("1"), - }, Limits: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("800m"), }, @@ -470,12 +399,12 @@ func TestTransformerOneContainer(t *testing.T) { }}, Containers: []corev1.Container{{ Resources: corev1.ResourceRequirements{ - Requests: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("1"), - }, Limits: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("800m"), }, + Requests: corev1.ResourceList{ + corev1.ResourceCPU: resource.MustParse("1"), + }, }, }}, }, @@ -557,9 +486,6 @@ func TestTransformerOneContainer(t *testing.T) { Requests: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("3"), }, - Limits: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("2"), - }, }, }}, Containers: []corev1.Container{{ @@ -567,9 +493,6 @@ func TestTransformerOneContainer(t *testing.T) { Requests: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("3"), }, - Limits: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("2"), - }, }, }}, }, @@ -658,30 +581,12 @@ func TestTransformerMultipleContainer(t *testing.T) { }, want: corev1.PodSpec{ InitContainers: []corev1.Container{{ - Resources: corev1.ResourceRequirements{ - Limits: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("1"), - corev1.ResourceMemory: resource.MustParse("100Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("1Gi"), - }, - }, + Resources: corev1.ResourceRequirements{}, }}, Containers: []corev1.Container{{ - Resources: corev1.ResourceRequirements{ - Limits: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("1"), - corev1.ResourceMemory: resource.MustParse("100Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("1Gi"), - }, - }, + Resources: corev1.ResourceRequirements{}, }, { - Resources: corev1.ResourceRequirements{ - Limits: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("1"), - corev1.ResourceMemory: resource.MustParse("100Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("1Gi"), - }, - }, + Resources: corev1.ResourceRequirements{}, }}, }, }, { @@ -709,13 +614,7 @@ func TestTransformerMultipleContainer(t *testing.T) { }, want: corev1.PodSpec{ InitContainers: []corev1.Container{{ - Resources: corev1.ResourceRequirements{ - Requests: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("1000m"), - corev1.ResourceMemory: resource.MustParse("100Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("1Gi"), - }, - }, + Resources: corev1.ResourceRequirements{}, }}, Containers: []corev1.Container{{ Resources: corev1.ResourceRequirements{ @@ -765,26 +664,10 @@ func TestTransformerMultipleContainer(t *testing.T) { }, want: corev1.PodSpec{ InitContainers: []corev1.Container{{ - Resources: corev1.ResourceRequirements{ - Limits: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("2"), - corev1.ResourceMemory: resource.MustParse("200Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("2Gi"), - }, - Requests: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("1"), - corev1.ResourceMemory: resource.MustParse("100Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("1Gi"), - }, - }, + Resources: corev1.ResourceRequirements{}, }}, Containers: []corev1.Container{{ Resources: corev1.ResourceRequirements{ - Limits: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("2"), - corev1.ResourceMemory: resource.MustParse("200Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("2Gi"), - }, Requests: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("500m"), corev1.ResourceMemory: resource.MustParse("50Mi"), @@ -793,11 +676,6 @@ func TestTransformerMultipleContainer(t *testing.T) { }, }, { Resources: corev1.ResourceRequirements{ - Limits: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("2"), - corev1.ResourceMemory: resource.MustParse("200Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("2Gi"), - }, Requests: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("500m"), corev1.ResourceMemory: resource.MustParse("50Mi"), @@ -836,26 +714,10 @@ func TestTransformerMultipleContainer(t *testing.T) { }, want: corev1.PodSpec{ InitContainers: []corev1.Container{{ - Resources: corev1.ResourceRequirements{ - Limits: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("2"), - corev1.ResourceMemory: resource.MustParse("200Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("2Gi"), - }, - Requests: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("1"), - corev1.ResourceMemory: resource.MustParse("100Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("1Gi"), - }, - }, + Resources: corev1.ResourceRequirements{}, }}, Containers: []corev1.Container{{ Resources: corev1.ResourceRequirements{ - Limits: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("2"), - corev1.ResourceMemory: resource.MustParse("200Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("2Gi"), - }, Requests: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("1"), corev1.ResourceMemory: resource.MustParse("100Mi"), @@ -864,11 +726,6 @@ func TestTransformerMultipleContainer(t *testing.T) { }, }, { Resources: corev1.ResourceRequirements{ - Limits: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("2"), - corev1.ResourceMemory: resource.MustParse("200Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("2Gi"), - }, Requests: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("1"), corev1.ResourceMemory: resource.MustParse("100Mi"), @@ -917,26 +774,10 @@ func TestTransformerMultipleContainer(t *testing.T) { }, want: corev1.PodSpec{ InitContainers: []corev1.Container{{ - Resources: corev1.ResourceRequirements{ - Limits: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("2"), - corev1.ResourceMemory: resource.MustParse("200Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("2Gi"), - }, - Requests: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("1"), - corev1.ResourceMemory: resource.MustParse("100Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("1Gi"), - }, - }, + Resources: corev1.ResourceRequirements{}, }}, Containers: []corev1.Container{{ Resources: corev1.ResourceRequirements{ - Limits: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("2"), - corev1.ResourceMemory: resource.MustParse("200Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("2Gi"), - }, Requests: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("700m"), corev1.ResourceMemory: resource.MustParse("70Mi"), @@ -945,11 +786,6 @@ func TestTransformerMultipleContainer(t *testing.T) { }, }, { Resources: corev1.ResourceRequirements{ - Limits: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("2"), - corev1.ResourceMemory: resource.MustParse("200Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("2Gi"), - }, Requests: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("700m"), corev1.ResourceMemory: resource.MustParse("70Mi"), @@ -991,27 +827,11 @@ func TestTransformerMultipleContainer(t *testing.T) { }, want: corev1.PodSpec{ InitContainers: []corev1.Container{{ - Resources: corev1.ResourceRequirements{ - Limits: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("2"), - corev1.ResourceMemory: resource.MustParse("200Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("2Gi"), - }, - Requests: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("1"), - corev1.ResourceMemory: resource.MustParse("100Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("1Gi"), - }, - }, + Resources: corev1.ResourceRequirements{}, }}, Containers: []corev1.Container{{ Name: "step-foo", Resources: corev1.ResourceRequirements{ - Limits: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("2"), - corev1.ResourceMemory: resource.MustParse("200Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("2Gi"), - }, Requests: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("500m"), corev1.ResourceMemory: resource.MustParse("50Mi"), @@ -1021,11 +841,6 @@ func TestTransformerMultipleContainer(t *testing.T) { }, { Name: "step-bar", Resources: corev1.ResourceRequirements{ - Limits: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("2"), - corev1.ResourceMemory: resource.MustParse("200Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("2Gi"), - }, Requests: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("500m"), corev1.ResourceMemory: resource.MustParse("50Mi"), @@ -1033,19 +848,8 @@ func TestTransformerMultipleContainer(t *testing.T) { }, }, }, { - Name: "sidecar-fizz", - Resources: corev1.ResourceRequirements{ - Limits: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("2"), - corev1.ResourceMemory: resource.MustParse("200Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("2Gi"), - }, - Requests: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("1"), - corev1.ResourceMemory: resource.MustParse("100Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("1Gi"), - }, - }, + Name: "sidecar-fizz", + Resources: corev1.ResourceRequirements{}, }}, }, }, { @@ -1089,27 +893,11 @@ func TestTransformerMultipleContainer(t *testing.T) { }, want: corev1.PodSpec{ InitContainers: []corev1.Container{{ - Resources: corev1.ResourceRequirements{ - Limits: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("2"), - corev1.ResourceMemory: resource.MustParse("200Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("2Gi"), - }, - Requests: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("1"), - corev1.ResourceMemory: resource.MustParse("100Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("1Gi"), - }, - }, + Resources: corev1.ResourceRequirements{}, }}, Containers: []corev1.Container{{ Name: "step-foo", Resources: corev1.ResourceRequirements{ - Limits: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("2"), - corev1.ResourceMemory: resource.MustParse("200Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("2Gi"), - }, Requests: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("500m"), corev1.ResourceMemory: resource.MustParse("50Mi"), @@ -1119,11 +907,6 @@ func TestTransformerMultipleContainer(t *testing.T) { }, { Name: "step-bar", Resources: corev1.ResourceRequirements{ - Limits: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("2"), - corev1.ResourceMemory: resource.MustParse("200Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("2Gi"), - }, Requests: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("500m"), corev1.ResourceMemory: resource.MustParse("50Mi"), @@ -1134,16 +917,11 @@ func TestTransformerMultipleContainer(t *testing.T) { Name: "sidecar-fizz", Resources: corev1.ResourceRequirements{ Limits: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("4"), - corev1.ResourceMemory: resource.MustParse("200Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("2Gi"), + corev1.ResourceCPU: resource.MustParse("4"), }, Requests: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("1"), - corev1.ResourceMemory: resource.MustParse("400Mi"), - corev1.ResourceEphemeralStorage: resource.MustParse("1Gi"), - }, - }, + corev1.ResourceMemory: resource.MustParse("400Mi"), + }}, }}, }, }} {