diff --git a/pkg/apis/core/validation/validation.go b/pkg/apis/core/validation/validation.go index 6503e66869d..a1f6c8a999b 100644 --- a/pkg/apis/core/validation/validation.go +++ b/pkg/apis/core/validation/validation.go @@ -5203,10 +5203,6 @@ func ValidateSecret(secret *core.Secret) field.ErrorList { func ValidateSecretUpdate(newSecret, oldSecret *core.Secret) field.ErrorList { allErrs := ValidateObjectMetaUpdate(&newSecret.ObjectMeta, &oldSecret.ObjectMeta, field.NewPath("metadata")) - if len(newSecret.Type) == 0 { - newSecret.Type = oldSecret.Type - } - allErrs = append(allErrs, ValidateImmutableField(newSecret.Type, oldSecret.Type, field.NewPath("type"))...) if oldSecret.Immutable != nil && *oldSecret.Immutable { if newSecret.Immutable == nil || !*newSecret.Immutable { diff --git a/pkg/registry/core/secret/strategy.go b/pkg/registry/core/secret/strategy.go index 0d5908d8975..aad00387ac1 100644 --- a/pkg/registry/core/secret/strategy.go +++ b/pkg/registry/core/secret/strategy.go @@ -73,6 +73,12 @@ func (strategy) AllowCreateOnUpdate() bool { func (strategy) PrepareForUpdate(ctx context.Context, obj, old runtime.Object) { newSecret := obj.(*api.Secret) oldSecret := old.(*api.Secret) + + // this is weird, but consistent with what the validatedUpdate function used to do. + if len(newSecret.Type) == 0 { + newSecret.Type = oldSecret.Type + } + dropDisabledFields(newSecret, oldSecret) }