package k8s import ( "fmt" "github.com/omnex/control-plane/api/internal/config" "k8s.io/client-go/kubernetes" "k8s.io/client-go/rest" "k8s.io/client-go/tools/clientcmd" metricsclient "k8s.io/metrics/pkg/client/clientset/versioned" ) func restConfig(cfg *config.Config) (*rest.Config, error) { if cfg.Kubeconfig != "" { return clientcmd.BuildConfigFromFlags("", cfg.Kubeconfig) } return rest.InClusterConfig() } func NewClient(cfg *config.Config) (*kubernetes.Clientset, error) { k8sCfg, err := restConfig(cfg) if err != nil { return nil, fmt.Errorf("k8s config: %w", err) } client, err := kubernetes.NewForConfig(k8sCfg) if err != nil { return nil, fmt.Errorf("k8s clientset: %w", err) } return client, nil } // NewMetricsClient crée un client pour l'API metrics.k8s.io (metrics-server), // utilisée pour lire l'usage CPU/mémoire en direct des pods. func NewMetricsClient(cfg *config.Config) (*metricsclient.Clientset, error) { k8sCfg, err := restConfig(cfg) if err != nil { return nil, fmt.Errorf("k8s config: %w", err) } client, err := metricsclient.NewForConfig(k8sCfg) if err != nil { return nil, fmt.Errorf("metrics clientset: %w", err) } return client, nil }