Files
kratos-bootstrap/registry/kubernetes/client.go
2024-11-14 15:25:58 +08:00

45 lines
1021 B
Go

package kubernetes
import (
"path/filepath"
k8sRegistry "github.com/go-kratos/kratos/contrib/registry/kubernetes/v2"
"github.com/go-kratos/kratos/v2/log"
k8s "k8s.io/client-go/kubernetes"
k8sRest "k8s.io/client-go/rest"
k8sTools "k8s.io/client-go/tools/clientcmd"
k8sUtil "k8s.io/client-go/util/homedir"
conf "github.com/tx7do/kratos-bootstrap/api/gen/go/conf/v1"
)
// NewRegistry 创建一个注册发现客户端 - Kubernetes
func NewRegistry(cfg *conf.Registry) *k8sRegistry.Registry {
if cfg == nil || cfg.Kubernetes == nil {
return nil
}
restConfig, err := k8sRest.InClusterConfig()
if err != nil {
home := k8sUtil.HomeDir()
kubeConfig := filepath.Join(home, ".kube", "config")
restConfig, err = k8sTools.BuildConfigFromFlags("", kubeConfig)
if err != nil {
log.Fatal(err)
return nil
}
}
clientSet, err := k8s.NewForConfig(restConfig)
if err != nil {
log.Fatal(err)
return nil
}
var namespace string
reg := k8sRegistry.NewRegistry(clientSet, namespace)
return reg
}