From 046483de1453fb8cc1823066844d4617f4f04f85 Mon Sep 17 00:00:00 2001
From: Lorenz Brun <lorenz@monogon.tech>
Date: Tue, 14 Nov 2023 13:49:46 +0100
Subject: [PATCH] Adapt to K8s 1.28

---
 cmd/nfproxy.go                             |  6 +++---
 pkg/controller/controller_endpointslice.go |  6 +++---
 pkg/proxy/cache.go                         |  2 +-
 pkg/proxy/endpoints.go                     | 10 +++++++++-
 pkg/proxy/proxy.go                         |  2 +-
 pkg/proxy/proxy_endpointslice.go           |  2 +-
 pkg/proxy/service.go                       |  6 +++---
 pkg/proxy/tools.go                         |  2 +-
 8 files changed, 22 insertions(+), 14 deletions(-)

diff --git a/cmd/nfproxy.go b/cmd/nfproxy.go
index 66972ab..83d8b01 100644
--- a/cmd/nfproxy.go
+++ b/cmd/nfproxy.go
@@ -44,8 +44,8 @@ import (
 	"k8s.io/client-go/kubernetes/scheme"
 	"k8s.io/client-go/tools/record"
 	"k8s.io/component-base/logs"
+	nodeutil "k8s.io/component-helpers/node/util"
 	"k8s.io/klog"
-	utilnode "k8s.io/kubernetes/pkg/util/node"
 )
 
 var (
@@ -111,7 +111,7 @@ func main() {
 	}
 
 	// Create event recorder
-	hostname, err := utilnode.GetHostname("")
+	hostname, err := nodeutil.GetHostname("")
 	if err != nil {
 		klog.Errorf("nfproxy failed to get local host name with error: %+v", err)
 		os.Exit(1)
@@ -169,7 +169,7 @@ func main() {
 	// instantiate EndpointSlice controller, otherwise Endpoints controller will be used.
 	var ep epController
 	if endpointSlice {
-		ep = controller.NewEndpointSliceController(nfproxy, client, kubeInformerFactory.Discovery().V1beta1().EndpointSlices())
+		ep = controller.NewEndpointSliceController(nfproxy, client, kubeInformerFactory.Discovery().V1().EndpointSlices())
 	} else {
 		ep = controller.NewEndpointsController(nfproxy, client, kubeInformerFactory.Core().V1().Endpoints())
 	}
diff --git a/pkg/controller/controller_endpointslice.go b/pkg/controller/controller_endpointslice.go
index ef97ef5..d060a4d 100644
--- a/pkg/controller/controller_endpointslice.go
+++ b/pkg/controller/controller_endpointslice.go
@@ -20,9 +20,9 @@ import (
 	"fmt"
 
 	v1 "k8s.io/api/core/v1"
-	discovery "k8s.io/api/discovery/v1beta1"
+	discovery "k8s.io/api/discovery/v1"
 	utilruntime "k8s.io/apimachinery/pkg/util/runtime"
-	"k8s.io/client-go/informers/discovery/v1beta1"
+	discoveryv1 "k8s.io/client-go/informers/discovery/v1"
 	"k8s.io/client-go/kubernetes"
 	"k8s.io/client-go/kubernetes/scheme"
 	typedcorev1 "k8s.io/client-go/kubernetes/typed/core/v1"
@@ -119,7 +119,7 @@ func (c *endpointSliceController) Start(stopCh <-chan struct{}) error {
 func NewEndpointSliceController(
 	proxy proxy.Proxy,
 	kubeClientset kubernetes.Interface,
-	epSliceInformer v1beta1.EndpointSliceInformer) EndpointSliceController {
+	epSliceInformer discoveryv1.EndpointSliceInformer) EndpointSliceController {
 
 	klog.V(4).Info("Creating event broadcaster for EndpointSlice controller")
 	eventBroadcaster := record.NewBroadcaster()
diff --git a/pkg/proxy/cache.go b/pkg/proxy/cache.go
index 92d06ca..7ef0e6f 100644
--- a/pkg/proxy/cache.go
+++ b/pkg/proxy/cache.go
@@ -21,7 +21,7 @@ import (
 	"sync"
 
 	v1 "k8s.io/api/core/v1"
-	discovery "k8s.io/api/discovery/v1beta1"
+	discovery "k8s.io/api/discovery/v1"
 	"k8s.io/apimachinery/pkg/types"
 	"k8s.io/klog"
 )
diff --git a/pkg/proxy/endpoints.go b/pkg/proxy/endpoints.go
index e040285..e288a05 100644
--- a/pkg/proxy/endpoints.go
+++ b/pkg/proxy/endpoints.go
@@ -75,7 +75,15 @@ func (info *BaseEndpointInfo) IP() string {
 
 // Port returns just the Port part of the endpoint.
 func (info *BaseEndpointInfo) Port() (int, error) {
-	return utilproxy.PortPart(info.Endpoint)
+	_, port, err := net.SplitHostPort(info.Endpoint)
+	if err != nil {
+		return -1, err
+	}
+	portNumber, err := strconv.Atoi(port)
+	if err != nil {
+		return -1, err
+	}
+	return portNumber, nil
 }
 
 // Equal is part of proxy.Endpoint interface.
diff --git a/pkg/proxy/proxy.go b/pkg/proxy/proxy.go
index 7839820..5876784 100644
--- a/pkg/proxy/proxy.go
+++ b/pkg/proxy/proxy.go
@@ -22,7 +22,7 @@ import (
 	utilnftables "github.com/google/nftables"
 	"github.com/sbezverk/nfproxy/pkg/nftables"
 	v1 "k8s.io/api/core/v1"
-	discovery "k8s.io/api/discovery/v1beta1"
+	discovery "k8s.io/api/discovery/v1"
 	"k8s.io/apimachinery/pkg/types"
 	"k8s.io/client-go/tools/record"
 	"k8s.io/klog"
diff --git a/pkg/proxy/proxy_endpointslice.go b/pkg/proxy/proxy_endpointslice.go
index 5310ed3..5c97096 100644
--- a/pkg/proxy/proxy_endpointslice.go
+++ b/pkg/proxy/proxy_endpointslice.go
@@ -21,7 +21,7 @@ import (
 	"time"
 
 	v1 "k8s.io/api/core/v1"
-	discovery "k8s.io/api/discovery/v1beta1"
+	discovery "k8s.io/api/discovery/v1"
 	"k8s.io/klog"
 )
 
diff --git a/pkg/proxy/service.go b/pkg/proxy/service.go
index 9cc10b7..6e91fae 100644
--- a/pkg/proxy/service.go
+++ b/pkg/proxy/service.go
@@ -152,7 +152,7 @@ func newServiceInfo(port *v1.ServicePort, service *v1.Service, baseInfo *BaseSer
 
 func newBaseServiceInfo(port *v1.ServicePort, service *v1.Service) *BaseServiceInfo {
 	onlyNodeLocalEndpoints := false
-	if apiservice.RequestsOnlyLocalTraffic(service) {
+	if apiservice.ExternalPolicyLocal(service) {
 		onlyNodeLocalEndpoints = true
 	}
 	var stickyMaxAgeSeconds int
@@ -175,7 +175,7 @@ func newBaseServiceInfo(port *v1.ServicePort, service *v1.Service) *BaseServiceI
 		//		topologyKeys:           service.Spec.TopologyKeys,
 		svcnft: &nftables.SVCnft{},
 	}
-	if service.Spec.IPFamilies != nil {
+	if len(service.Spec.IPFamilies) > 0 {
 		info.ipFamilies = service.Spec.IPFamilies
 	} else {
 		info.ipFamilies = make([]v1.IPFamily, 1)
diff --git a/pkg/proxy/tools.go b/pkg/proxy/tools.go
index 06c4ae3..3f7f0b9 100644
--- a/pkg/proxy/tools.go
+++ b/pkg/proxy/tools.go
@@ -26,7 +26,7 @@ import (
 
 	utilnftables "github.com/google/nftables"
 	v1 "k8s.io/api/core/v1"
-	discovery "k8s.io/api/discovery/v1beta1"
+	discovery "k8s.io/api/discovery/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	"k8s.io/apimachinery/pkg/types"
 	"k8s.io/apimachinery/pkg/util/intstr"
-- 
2.44.1

