--create-namespace is documented as creating the release namespace only when it
is not present, and the namespace is not part of the release. It was created
with the same apply method as the chart resources, so with server-side apply
Helm sent an apply patch for a minimal Namespace object. On a namespace that
already exists that patch makes Helm a field manager of a namespace it does not
own and strips the labels and annotations set by whoever created it, for
example a namespace deployed by another chart.
The namespace is now always created client-side, so an existing namespace
answers AlreadyExists and is left untouched, regardless of --server-side.
ResolveClientCreateOptions is added to pkg/kube so that code wrapping or faking
Interface.Create can see how the resources it was handed are meant to be
created; Client.Create now resolves its options through the same helper.
Closes#31767
Signed-off-by: ChadiDridi <dridichady@gmail.com>