After working with Kubernetes for a few years now I've only just today learnt about
kubectl replace which, you guessed it, completely replaces a resource.
I've always used
kubectl apply to update existing resources (or create new ones) which does a merge between the existing and the supplied manifest.
Hat tip to @vdemeest for this: