mirror of https://github.com/k3s-io/k3s
Merge pull request #1868 from derekwaynecarr/service_proxy_needs_namespace
Fixup apiserver proxy to be namespace awarepull/6/head
commit
7c9ac6a484
|
@ -116,6 +116,8 @@ The k8s API server will associate a resource with a *Namespace* if not populated
|
|||
of the incoming request. If the *Namespace* of the resource being created, or updated does not match the *Namespace* on the request,
|
||||
then the k8s API server will reject the request.
|
||||
|
||||
TODO: Update to discuss k8s api server proxy patterns
|
||||
|
||||
## k8s storage
|
||||
|
||||
A namespace provides a unique identifier space and therefore must be in the storage path of a resource.
|
||||
|
|
|
@ -77,7 +77,14 @@ type ProxyHandler struct {
|
|||
}
|
||||
|
||||
func (r *ProxyHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) {
|
||||
ctx := api.NewContext()
|
||||
// use the default namespace to address the service
|
||||
ctx := api.NewDefaultContext()
|
||||
// if not in default namespace, provide the query parameter
|
||||
// TODO this will need to go in the path in the future and not as a query parameter
|
||||
namespace := req.URL.Query().Get("namespace")
|
||||
if len(namespace) > 0 {
|
||||
ctx = api.WithNamespace(ctx, namespace)
|
||||
}
|
||||
parts := strings.SplitN(req.URL.Path, "/", 3)
|
||||
if len(parts) < 2 {
|
||||
notFound(w, req)
|
||||
|
|
Loading…
Reference in New Issue