From 81cfbccea4616fb0b0ba68f93a053da12e5556ff Mon Sep 17 00:00:00 2001 From: Elana Hashman Date: Tue, 9 Mar 2021 10:19:18 -0800 Subject: [PATCH] Validate that readiness probes can't set terminationGracePeriodSeconds --- pkg/apis/core/validation/validation.go | 5 +++++ pkg/apis/core/validation/validation_test.go | 14 ++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/pkg/apis/core/validation/validation.go b/pkg/apis/core/validation/validation.go index 891722c8738..57292c5f367 100644 --- a/pkg/apis/core/validation/validation.go +++ b/pkg/apis/core/validation/validation.go @@ -2859,6 +2859,11 @@ func validateContainers(containers []core.Container, isInitContainers bool, volu allErrs = append(allErrs, validateLifecycle(ctr.Lifecycle, idxPath.Child("lifecycle"))...) } allErrs = append(allErrs, validateProbe(ctr.LivenessProbe, idxPath.Child("livenessProbe"))...) + // Readiness-specific validation + if ctr.ReadinessProbe != nil && ctr.ReadinessProbe.TerminationGracePeriodSeconds != nil { + allErrs = append(allErrs, field.Invalid(idxPath.Child("readinessProbe", "terminationGracePeriodSeconds"), ctr.ReadinessProbe.TerminationGracePeriodSeconds, "must not be set for readinessProbes")) + } + allErrs = append(allErrs, validateProbe(ctr.StartupProbe, idxPath.Child("startupProbe"))...) // Liveness-specific validation if ctr.LivenessProbe != nil && ctr.LivenessProbe.SuccessThreshold != 1 { allErrs = append(allErrs, field.Invalid(idxPath.Child("livenessProbe", "successThreshold"), ctr.LivenessProbe.SuccessThreshold, "must be 1")) diff --git a/pkg/apis/core/validation/validation_test.go b/pkg/apis/core/validation/validation_test.go index 6ea9b35aa33..f17da52307c 100644 --- a/pkg/apis/core/validation/validation_test.go +++ b/pkg/apis/core/validation/validation_test.go @@ -6284,6 +6284,20 @@ func TestValidateContainers(t *testing.T) { TerminationMessagePolicy: "File", }, }, + "invalid readiness probe, terminationGracePeriodSeconds set.": { + { + Name: "life-123", + Image: "image", + ReadinessProbe: &core.Probe{ + Handler: core.Handler{ + TCPSocket: &core.TCPSocketAction{}, + }, + TerminationGracePeriodSeconds: utilpointer.Int64Ptr(10), + }, + ImagePullPolicy: "IfNotPresent", + TerminationMessagePolicy: "File", + }, + }, "invalid liveness probe, no tcp socket port.": { { Name: "life-123",