tools/utils/common.go (32 lines of code) (raw):
/*
Copyright (c) Microsoft Corporation.
Licensed under the MIT license.
*/
package utils
import (
"os"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/tools/clientcmd"
"sigs.k8s.io/controller-runtime/pkg/client"
clusterv1beta1 "go.goms.io/fleet/apis/cluster/v1beta1"
)
var (
kubeConfigPath = os.Getenv("KUBECONFIG")
CordonTaint = clusterv1beta1.Taint{
Key: "cordon-key",
Value: "cordon-value",
Effect: "NoSchedule",
}
)
// GetClusterClientFromClusterContext creates a new client.Client for the given cluster context and scheme.
func GetClusterClientFromClusterContext(clusterContext string, scheme *runtime.Scheme) (client.Client, error) {
clusterConfig := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(
&clientcmd.ClientConfigLoadingRules{ExplicitPath: kubeConfigPath},
&clientcmd.ConfigOverrides{
CurrentContext: clusterContext,
})
restConfig, err := clusterConfig.ClientConfig()
if err != nil {
return nil, err
}
hubClient, err := client.New(restConfig, client.Options{Scheme: scheme})
if err != nil {
return nil, err
}
return hubClient, err
}