mirror of
https://github.com/kubescape/kubescape.git
synced 2026-04-09 12:16:52 +00:00
41 lines
1.1 KiB
Go
41 lines
1.1 KiB
Go
package ksinit
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"time"
|
|
|
|
spdxv1beta1 "github.com/kubescape/storage/pkg/generated/clientset/versioned/typed/softwarecomposition/v1beta1"
|
|
"k8s.io/client-go/rest"
|
|
"k8s.io/client-go/tools/clientcmd"
|
|
)
|
|
|
|
// CreateKsObjectConnection initializes a KS object connection, shared by mcpserver and httphandler
|
|
func CreateKsObjectConnection(namespace string, maxElapsedTime time.Duration) (spdxv1beta1.SpdxV1beta1Interface, error) {
|
|
var cfg *rest.Config
|
|
var err error
|
|
|
|
if kubeconfig := os.Getenv("KUBECONFIG"); kubeconfig != "" {
|
|
cfg, err = clientcmd.BuildConfigFromFlags("", kubeconfig)
|
|
} else {
|
|
home := os.Getenv("HOME")
|
|
kubeconfigPath := filepath.Join(home, ".kube", "config")
|
|
cfg, err = clientcmd.BuildConfigFromFlags("", kubeconfigPath)
|
|
if err != nil {
|
|
cfg, err = rest.InClusterConfig()
|
|
}
|
|
}
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
// disable rate limiting
|
|
cfg.QPS = 0
|
|
cfg.RateLimiter = nil
|
|
// force GRPC
|
|
cfg.AcceptContentTypes = "application/vnd.kubernetes.protobuf"
|
|
cfg.ContentType = "application/vnd.kubernetes.protobuf"
|
|
|
|
return spdxv1beta1.NewForConfig(cfg)
|
|
}
|