From fdf75b0f0f17b10c709fd17b145dac651042e04b Mon Sep 17 00:00:00 2001 From: fengcaiwen Date: Sat, 22 Jul 2023 18:12:31 +0800 Subject: [PATCH] fix: keep router ip --- pkg/webhook/pods.go | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/pkg/webhook/pods.go b/pkg/webhook/pods.go index 7ad9a106..50c610a7 100644 --- a/pkg/webhook/pods.go +++ b/pkg/webhook/pods.go @@ -46,12 +46,16 @@ func (h *admissionReviewHandler) admitPods(ar v1.AdmissionReview) *v1.AdmissionR return toV1AdmissionResponse(err) } var found bool + out: for i := 0; i < len(pod.Spec.Containers); i++ { if pod.Spec.Containers[i].Name == config.ContainerSidecarVPN { var v4, v6 *net.IPNet for j := 0; j < len(pod.Spec.Containers[i].Env); j++ { pair := pod.Spec.Containers[i].Env[j] if pair.Name == config.EnvInboundPodTunIPv4 { + if pair.Value == config.RouterIP.String() { + break out + } found = true cmi := h.clientset.CoreV1().ConfigMaps(ar.Request.Namespace) dhcp := handler.NewDHCPManager(cmi, ar.Request.Namespace) @@ -136,18 +140,24 @@ func (h *admissionReviewHandler) admitPods(ar v1.AdmissionReview) *v1.AdmissionR if container != nil { var ips []net.IP for _, envVar := range container.Env { + if envVar.Value == config.RouterIP.String() { + break + } if envVar.Name == config.EnvInboundPodTunIPv4 || envVar.Name == config.EnvInboundPodTunIPv6 { if ip, _, err := net.ParseCIDR(envVar.Value); err == nil { ips = append(ips, ip) } } } - cmi := h.clientset.CoreV1().ConfigMaps(ar.Request.Namespace) - err := handler.NewDHCPManager(cmi, ar.Request.Namespace).ReleaseIP(context.Background(), ips...) - if err != nil { - log.Errorf("release ip to dhcp err: %v, ips: %v", err, ips) - } else { - log.Errorf("release ip to dhcp ok, ip: %v", ips) + if len(ips) != 0 { + cmi := h.clientset.CoreV1().ConfigMaps(ar.Request.Namespace) + err := handler.NewDHCPManager(cmi, ar.Request.Namespace). + ReleaseIP(context.Background(), ips...) + if err != nil { + log.Errorf("release ip to dhcp err: %v, ips: %v", err, ips) + } else { + log.Errorf("release ip to dhcp ok, ip: %v", ips) + } } } return &v1.AdmissionResponse{