mirror of
https://github.com/1Panel-dev/KubePi.git
synced 2025-11-01 19:12:43 +08:00
feat(cluster):导入集群操作
This commit is contained in:
70
pkg/kubernetes/kubernetes.go
Normal file
70
pkg/kubernetes/kubernetes.go
Normal file
@@ -0,0 +1,70 @@
|
||||
package kubernetes
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
v1Cluster "github.com/KubeOperator/ekko/internal/model/v1/cluster"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/version"
|
||||
"k8s.io/client-go/kubernetes"
|
||||
"k8s.io/client-go/rest"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type Interface interface {
|
||||
Ping() error
|
||||
Version() (*version.Info, error)
|
||||
Client() (*kubernetes.Clientset, error)
|
||||
}
|
||||
|
||||
type Kubernetes struct {
|
||||
*v1Cluster.Cluster
|
||||
}
|
||||
|
||||
func NewKubernetes(cluster v1Cluster.Cluster) Interface {
|
||||
return &Kubernetes{Cluster: &cluster}
|
||||
}
|
||||
|
||||
func (k *Kubernetes) Client() (*kubernetes.Clientset, error) {
|
||||
if k.Spec.Connect.Direction == "forward" {
|
||||
kubeConf := &rest.Config{
|
||||
Host: k.Spec.Connect.Forward.ApiServer,
|
||||
}
|
||||
if len(k.CaCertificate.CertData) > 0 {
|
||||
kubeConf.CAData = k.CaCertificate.CertData
|
||||
} else {
|
||||
kubeConf.Insecure = true
|
||||
}
|
||||
switch k.Spec.Authentication.Mode {
|
||||
case strings.ToLower("bearer"):
|
||||
kubeConf.BearerToken = k.Spec.Authentication.BearerToken
|
||||
case strings.ToLower("certificate"):
|
||||
kubeConf.TLSClientConfig.CertData = k.Spec.Authentication.Certificate.CertData
|
||||
kubeConf.TLSClientConfig.KeyData=k.Spec.Authentication.Certificate.KeyData
|
||||
}
|
||||
return kubernetes.NewForConfig(kubeConf)
|
||||
|
||||
}
|
||||
return nil, errors.New("")
|
||||
}
|
||||
|
||||
func (k *Kubernetes) Version() (*version.Info, error) {
|
||||
client, err := k.Client()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return client.ServerVersion()
|
||||
|
||||
}
|
||||
|
||||
func (k *Kubernetes) Ping() error {
|
||||
client, err := k.Client()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, err = client.CoreV1().Namespaces().List(context.TODO(), metav1.ListOptions{})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user