@@ -31,6 +31,7 @@ import (
3131 v1beta12 "k8s.io/api/policy/v1beta1"
3232 "k8s.io/apimachinery/pkg/util/validation"
3333 "k8s.io/client-go/dynamic"
34+ "k8s.io/client-go/kubernetes/scheme"
3435 "k8s.io/kubernetes/pkg/api/legacyscheme"
3536 "k8s.io/metrics/pkg/apis/metrics/v1beta1"
3637 metrics "k8s.io/metrics/pkg/client/clientset/versioned"
@@ -146,6 +147,7 @@ type K8sService interface {
146147 OverrideRestConfigWithCustomTransport (restConfig * rest.Config ) (* rest.Config , error )
147148 CreateNsWithLabels (namespace string , labels map [string ]string , client * v12.CoreV1Client ) (ns * v1.Namespace , err error )
148149 CreateNs (namespace string , client * v12.CoreV1Client ) (ns * v1.Namespace , err error )
150+ GetRestClientForCRD (config * ClusterConfig , groupVersion * schema.GroupVersion ) (* rest.RESTClient , error )
149151}
150152
151153func NewK8sUtil (logger * zap.SugaredLogger , runTimeConfig * RuntimeConfig ) (* K8sServiceImpl , error ) {
@@ -1905,3 +1907,25 @@ func (impl *K8sServiceImpl) CreateOrUpdateSecretByName(client *v12.CoreV1Client,
19051907 }
19061908 return nil
19071909}
1910+
1911+ func (impl * K8sServiceImpl ) GetRestClientForCRD (config * ClusterConfig , groupVersion * schema.GroupVersion ) (* rest.RESTClient , error ) {
1912+
1913+ restConfig , err := impl .GetRestConfigByCluster (config )
1914+ if err != nil {
1915+ return nil , err
1916+ }
1917+
1918+ restConfig .ContentConfig = rest.ContentConfig {
1919+ GroupVersion : groupVersion ,
1920+ NegotiatedSerializer : scheme .Codecs .WithoutConversion (),
1921+ }
1922+ restConfig .APIPath = "/apis"
1923+
1924+ restClient , err := rest .RESTClientFor (restConfig )
1925+ if err != nil {
1926+ log .Println (err )
1927+ return nil , err
1928+ }
1929+
1930+ return restClient , nil
1931+ }
0 commit comments