Skip to content

Commit 87351bb

Browse files
Cali0707manusa
authored andcommitted
feat: expose accesscontrol rest client through Kubernetes interface
Signed-off-by: Calum Murray <[email protected]>
1 parent 14af777 commit 87351bb

File tree

1 file changed

+28
-3
lines changed

1 file changed

+28
-3
lines changed

pkg/kubernetes/kubernetes.go

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
package kubernetes
22

33
import (
4-
"k8s.io/apimachinery/pkg/runtime"
4+
"net/http"
55

6-
"github.com/containers/kubernetes-mcp-server/pkg/helm"
7-
"github.com/containers/kubernetes-mcp-server/pkg/kiali"
6+
"k8s.io/apimachinery/pkg/runtime"
87
"k8s.io/client-go/kubernetes/scheme"
8+
"k8s.io/client-go/rest"
99

1010
_ "k8s.io/client-go/plugin/pkg/client/auth/oidc"
11+
12+
"github.com/containers/kubernetes-mcp-server/pkg/helm"
13+
"github.com/containers/kubernetes-mcp-server/pkg/kiali"
1114
)
1215

1316
type HeaderKey string
@@ -25,6 +28,28 @@ type Kubernetes struct {
2528
manager *Manager
2629
}
2730

31+
// AccessControlRestClient returns the access-controlled rest.Interface
32+
// This ensures that any denied resources configured in the system are properly enforced
33+
func (k *Kubernetes) AccessControlRestClient() (rest.Interface, error) {
34+
config, err := k.manager.ToRESTConfig()
35+
if err != nil {
36+
return nil, err
37+
}
38+
config.WrapTransport = func(rt http.RoundTripper) http.RoundTripper {
39+
return &AccessControlRoundTripper{
40+
delegate: rt,
41+
accessControlRESTMapper: k.manager.accessControlRESTMapper,
42+
}
43+
}
44+
45+
client, err := rest.RESTClientFor(config)
46+
if err != nil {
47+
return nil, err
48+
}
49+
50+
return client, nil
51+
}
52+
2853
// AccessControlClientset returns the access-controlled clientset
2954
// This ensures that any denied resources configured in the system are properly enforced
3055
func (k *Kubernetes) AccessControlClientset() *AccessControlClientset {

0 commit comments

Comments
 (0)