diff --git a/pkg/apis/extensions/validation/validation.go b/pkg/apis/extensions/validation/validation.go index 02fc9795666..8ac12827c07 100644 --- a/pkg/apis/extensions/validation/validation.go +++ b/pkg/apis/extensions/validation/validation.go @@ -264,6 +264,9 @@ func ValidateDeploymentSpec(spec *extensions.DeploymentSpec, fldPath *field.Path } if spec.ProgressDeadlineSeconds != nil { allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(*spec.ProgressDeadlineSeconds), fldPath.Child("progressDeadlineSeconds"))...) + if *spec.ProgressDeadlineSeconds <= spec.MinReadySeconds { + allErrs = append(allErrs, field.Invalid(fldPath.Child("progressDeadlineSeconds"), spec.ProgressDeadlineSeconds, "must be greater than minReadySeconds.")) + } } return allErrs } diff --git a/pkg/apis/extensions/validation/validation_test.go b/pkg/apis/extensions/validation/validation_test.go index 3506433aa6c..60fec1ffc79 100644 --- a/pkg/apis/extensions/validation/validation_test.go +++ b/pkg/apis/extensions/validation/validation_test.go @@ -666,6 +666,13 @@ func TestValidateDeployment(t *testing.T) { invalidRollbackRevisionDeployment.Spec.RollbackTo.Revision = -3 errorCases["must be greater than or equal to 0"] = invalidRollbackRevisionDeployment + // ProgressDeadlineSeconds should be greater than MinReadySeconds + invalidProgressDeadlineDeployment := validDeployment() + seconds := int32(600) + invalidProgressDeadlineDeployment.Spec.ProgressDeadlineSeconds = &seconds + invalidProgressDeadlineDeployment.Spec.MinReadySeconds = seconds + errorCases["must be greater than minReadySeconds"] = invalidProgressDeadlineDeployment + for k, v := range errorCases { errs := ValidateDeployment(v) if len(errs) == 0 {