mirror of
https://github.com/kubenetworks/kubevpn.git
synced 2025-12-24 11:51:13 +08:00
feat: use one clientset
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
||||
"net/http"
|
||||
|
||||
log "github.com/sirupsen/logrus"
|
||||
"k8s.io/client-go/kubernetes"
|
||||
"k8s.io/kubectl/pkg/cmd/util"
|
||||
|
||||
"github.com/wencaiwulue/kubevpn/pkg/config"
|
||||
@@ -13,7 +14,8 @@ import (
|
||||
)
|
||||
|
||||
type dhcpServer struct {
|
||||
f util.Factory
|
||||
f util.Factory
|
||||
clientset *kubernetes.Clientset
|
||||
}
|
||||
|
||||
func (d *dhcpServer) rentIP(w http.ResponseWriter, r *http.Request) {
|
||||
@@ -21,13 +23,7 @@ func (d *dhcpServer) rentIP(w http.ResponseWriter, r *http.Request) {
|
||||
namespace := r.Header.Get("POD_NAMESPACE")
|
||||
|
||||
log.Infof("handling rent ip request, pod name: %s, ns: %s", podName, namespace)
|
||||
clientset, err := d.f.KubernetesClientSet()
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
cmi := clientset.CoreV1().ConfigMaps(namespace)
|
||||
cmi := d.clientset.CoreV1().ConfigMaps(namespace)
|
||||
dhcp := handler.NewDHCPManager(cmi, namespace, &net.IPNet{IP: config.RouterIP, Mask: config.CIDR.Mask})
|
||||
random, err := dhcp.RentIPRandom()
|
||||
if err != nil {
|
||||
@@ -56,13 +52,7 @@ func (d *dhcpServer) releaseIP(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
log.Infof("handling release ip request, pod name: %s, ns: %s", podName, namespace)
|
||||
clientset, err := d.f.KubernetesClientSet()
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
cmi := clientset.CoreV1().ConfigMaps(namespace)
|
||||
cmi := d.clientset.CoreV1().ConfigMaps(namespace)
|
||||
dhcp := handler.NewDHCPManager(cmi, namespace, &net.IPNet{IP: config.RouterIP, Mask: config.CIDR.Mask})
|
||||
err = dhcp.ReleaseIpToDHCP(ipNet)
|
||||
if err != nil {
|
||||
|
||||
@@ -12,6 +12,7 @@ import (
|
||||
v1 "k8s.io/api/admission/v1"
|
||||
"k8s.io/api/admission/v1beta1"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/client-go/kubernetes"
|
||||
cmdutil "k8s.io/kubectl/pkg/cmd/util"
|
||||
|
||||
"github.com/wencaiwulue/kubevpn/pkg/config"
|
||||
@@ -19,7 +20,8 @@ import (
|
||||
|
||||
// admissionReviewHandler is a handler to handle business logic, holding an util.Factory
|
||||
type admissionReviewHandler struct {
|
||||
f cmdutil.Factory
|
||||
f cmdutil.Factory
|
||||
clientset *kubernetes.Clientset
|
||||
}
|
||||
|
||||
// admitv1beta1Func handles a v1beta1 admission
|
||||
@@ -122,12 +124,19 @@ func serve(w http.ResponseWriter, r *http.Request, admit admitHandler) {
|
||||
}
|
||||
|
||||
func Main(f cmdutil.Factory) error {
|
||||
h := &admissionReviewHandler{f: f}
|
||||
clientset, err2 := f.KubernetesClientSet()
|
||||
if err2 != nil {
|
||||
return err2
|
||||
}
|
||||
h := &admissionReviewHandler{f: f, clientset: clientset}
|
||||
|
||||
http.HandleFunc("/pods", func(w http.ResponseWriter, r *http.Request) { serve(w, r, newDelegateToV1AdmitHandler(h.admitPods)) })
|
||||
http.HandleFunc("/readyz", func(w http.ResponseWriter, req *http.Request) { w.Write([]byte("ok")) })
|
||||
s := dhcpServer{f: f}
|
||||
|
||||
s := &dhcpServer{f: f, clientset: clientset}
|
||||
http.HandleFunc(config.APIRentIP, s.rentIP)
|
||||
http.HandleFunc(config.APIReleaseIP, s.releaseIP)
|
||||
|
||||
cert, ok := os.LookupEnv(config.TLSCertKey)
|
||||
if !ok {
|
||||
return fmt.Errorf("can not get %s from env", config.TLSCertKey)
|
||||
|
||||
@@ -11,7 +11,6 @@ import (
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
"k8s.io/apimachinery/pkg/api/meta"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/client-go/kubernetes"
|
||||
"k8s.io/kubectl/pkg/cmd/util/podcmd"
|
||||
|
||||
"github.com/wencaiwulue/kubevpn/pkg/config"
|
||||
@@ -51,13 +50,7 @@ func (h *admissionReviewHandler) admitPods(ar v1.AdmissionReview) *v1.AdmissionR
|
||||
pair := pod.Spec.Containers[i].Env[j]
|
||||
if pair.Name == config.EnvInboundPodTunIP && pair.Value == "" {
|
||||
found = true
|
||||
var clientset *kubernetes.Clientset
|
||||
clientset, err = h.f.KubernetesClientSet()
|
||||
if err != nil {
|
||||
log.Errorf("can not get clientset, err: %v", err)
|
||||
return toV1AdmissionResponse(err)
|
||||
}
|
||||
cmi := clientset.CoreV1().ConfigMaps(ar.Request.Namespace)
|
||||
cmi := h.clientset.CoreV1().ConfigMaps(ar.Request.Namespace)
|
||||
dhcp := handler.NewDHCPManager(cmi, ar.Request.Namespace, &net.IPNet{IP: config.RouterIP, Mask: config.CIDR.Mask})
|
||||
var random *net.IPNet
|
||||
random, err = dhcp.RentIPRandom()
|
||||
@@ -123,13 +116,7 @@ func (h *admissionReviewHandler) admitPods(ar v1.AdmissionReview) *v1.AdmissionR
|
||||
if envVar.Name == config.EnvInboundPodTunIP && envVar.Value != "" {
|
||||
ip, cidr, err := net.ParseCIDR(envVar.Value)
|
||||
if err == nil {
|
||||
var clientset *kubernetes.Clientset
|
||||
clientset, err = h.f.KubernetesClientSet()
|
||||
if err != nil {
|
||||
log.Errorf("can not get clientset, err: %v", err)
|
||||
return toV1AdmissionResponse(err)
|
||||
}
|
||||
cmi := clientset.CoreV1().ConfigMaps(ar.Request.Namespace)
|
||||
cmi := h.clientset.CoreV1().ConfigMaps(ar.Request.Namespace)
|
||||
ipnet := &net.IPNet{
|
||||
IP: ip,
|
||||
Mask: cidr.Mask,
|
||||
|
||||
Reference in New Issue
Block a user