Using kubectl we can specify which namespace should we install the resources in, example -> kubectl apply -f abc.yaml -n mynamespace
this would ensure all my resources are creates in 'mynamespace'.
How do I achieve this using the Kubernetes Go client. I am looking for ways which DO NOT involve changing each and every helm/yaml and adding namespaces explicitly.
You can see how kubectl does it here: https://github.com/kubernetes/kubernetes/blob/fe3772890f650f9bcf020b43dc5a51fab0fa17f4/staging/src/k8s.io/cli-runtime/pkg/resource/helper.go#L240-L248
func (m *Helper) createResource(c RESTClient, resource, namespace string, obj runtime.Object, options *metav1.CreateOptions) (runtime.Object, error) {
return c.Post().
NamespaceIfScoped(namespace, m.NamespaceScoped).
Resource(resource).
VersionedParams(options, metav1.ParameterCodec).
Body(obj).
Do(context.TODO()).
Get()
}
You can use use NamespaceIfScoped
to override the namespace at the request level.