From 54c1513202a9afddc8d049bb5091f48ff4ea0c00 Mon Sep 17 00:00:00 2001 From: Ronan Le Meillat Date: Sat, 7 Oct 2023 13:22:25 +0000 Subject: [PATCH 1/6] Compatibility with gateway api v0.8.1 --- go.mod | 2 +- go.sum | 4 ++-- pkg/gateways/gateways.go | 4 ++-- pkg/k8s/main.go | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 9b200f2d..9ffd4f93 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( k8s.io/apimachinery v0.28.2 k8s.io/client-go v0.28.2 sigs.k8s.io/controller-runtime v0.16.2 - sigs.k8s.io/gateway-api v0.5.0 + sigs.k8s.io/gateway-api v0.8.1 ) require ( diff --git a/go.sum b/go.sum index 504edd7d..39e07a43 100644 --- a/go.sum +++ b/go.sum @@ -484,8 +484,8 @@ k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSn k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= sigs.k8s.io/controller-runtime v0.16.2 h1:mwXAVuEk3EQf478PQwQ48zGOXvW27UJc8NHktQVuIPU= sigs.k8s.io/controller-runtime v0.16.2/go.mod h1:vpMu3LpI5sYWtujJOa2uPK61nB5rbwlN7BAB8aSLvGU= -sigs.k8s.io/gateway-api v0.5.0 h1:ze+k9fJqvmL8s1t3e4q1ST8RnN+f09dEv+gfacahlAE= -sigs.k8s.io/gateway-api v0.5.0/go.mod h1:x0AP6gugkFV8fC/oTlnOMU0pnmuzIR8LfIPRVUjxSqA= +sigs.k8s.io/gateway-api v0.8.1 h1:Bo4NMAQFYkQZnHXOfufbYwbPW7b3Ic5NjpbeW6EJxuU= +sigs.k8s.io/gateway-api v0.8.1/go.mod h1:0PteDrsrgkRmr13nDqFWnev8tOysAVrwnvfFM55tSVg= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= sigs.k8s.io/structured-merge-diff/v4 v4.3.0 h1:UZbZAZfX0wV2zr7YZorDz6GXROfDFj6LvqCRm4VUVKk= diff --git a/pkg/gateways/gateways.go b/pkg/gateways/gateways.go index 60c243ea..6752e94e 100644 --- a/pkg/gateways/gateways.go +++ b/pkg/gateways/gateways.go @@ -583,13 +583,13 @@ func (gm GatewayManagerImpl) isTCPRouteAllowedByListener(listener store.Listener if allowedRoutesNamespaces != nil { from := allowedRoutesNamespaces.From if from == nil { - v := (string)(v1alpha2.NamespacesFromSame) + v := (string)(v1beta1.NamespacesFromSame) from = &v } if *from == "Same" { return routeNamespace == gatewayNamespace } - if *from == (string)(v1alpha2.NamespacesFromSelector) { + if *from == (string)(v1beta1.NamespacesFromSelector) { if allowedRoutesNamespaces.Selector == nil { return false } diff --git a/pkg/k8s/main.go b/pkg/k8s/main.go index aea05404..3afbfafc 100644 --- a/pkg/k8s/main.go +++ b/pkg/k8s/main.go @@ -46,7 +46,7 @@ var logger = utils.GetLogger() const ( CRSGroupVersionV1alpha1 = "core.haproxy.org/v1alpha1" CRSGroupVersionV1alpha2 = "core.haproxy.org/v1alpha2" - GATEWAY_API_VERSION = "v0.5.1" //nolint:golint,stylecheck + GATEWAY_API_VERSION = "v0.8.1" //nolint:golint,stylecheck ) var ErrIgnored = errors.New("ignored resource") From e00cb5f5ba09e25b8d6d287b241e381001e378d5 Mon Sep 17 00:00:00 2001 From: Ronan Le Meillat Date: Sat, 7 Oct 2023 13:29:56 +0000 Subject: [PATCH 2/6] Compatibility with gateway api v0.8.1 --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 9ffd4f93..8c053f0e 100644 --- a/go.mod +++ b/go.mod @@ -85,7 +85,7 @@ require ( gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/klog/v2 v2.100.1 // indirect - k8s.io/kube-openapi v0.0.0-20230918164632-68afd615200d // indirect + k8s.io/kube-openapi v0.0.0-20230928205116-a78145627833 // indirect k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect sigs.k8s.io/structured-merge-diff/v4 v4.3.0 // indirect diff --git a/go.sum b/go.sum index 39e07a43..a0b4695b 100644 --- a/go.sum +++ b/go.sum @@ -478,8 +478,8 @@ k8s.io/client-go v0.28.2 h1:DNoYI1vGq0slMBN/SWKMZMw0Rq+0EQW6/AK4v9+3VeY= k8s.io/client-go v0.28.2/go.mod h1:sMkApowspLuc7omj1FOSUxSoqjr+d5Q0Yc0LOFnYFJY= k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg= k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/kube-openapi v0.0.0-20230918164632-68afd615200d h1:/CFeJBjBrZvHX09rObS2+2iEEDevMWYc1v3aIYAjIYI= -k8s.io/kube-openapi v0.0.0-20230918164632-68afd615200d/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA= +k8s.io/kube-openapi v0.0.0-20230928205116-a78145627833 h1:iFFEmmB7szQhJP42AvRD2+gzdVP7EuIKY1rJgxf0JZY= +k8s.io/kube-openapi v0.0.0-20230928205116-a78145627833/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA= k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= sigs.k8s.io/controller-runtime v0.16.2 h1:mwXAVuEk3EQf478PQwQ48zGOXvW27UJc8NHktQVuIPU= From 2d268e3d7844b081f54dfec4181f8f807a7766da Mon Sep 17 00:00:00 2001 From: Ronan Date: Tue, 30 Jan 2024 14:50:42 +0100 Subject: [PATCH 3/6] init removing v1alpha2 deprecated apis --- pkg/gateways/gateways.go | 5 ++--- pkg/gateways/updates.go | 18 +++++++++--------- pkg/k8s/informers.go | 8 ++++---- 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/pkg/gateways/gateways.go b/pkg/gateways/gateways.go index 6752e94e..b1fbb708 100644 --- a/pkg/gateways/gateways.go +++ b/pkg/gateways/gateways.go @@ -27,7 +27,6 @@ import ( v1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" "sigs.k8s.io/controller-runtime/pkg/client" - "sigs.k8s.io/gateway-api/apis/v1alpha2" "sigs.k8s.io/gateway-api/apis/v1beta1" ) @@ -265,7 +264,7 @@ MAIN_LOOP: if listener.AllowedRoutes != nil { validRGK := []store.RouteGroupKind{} for _, kind := range listener.AllowedRoutes.Kinds { - if (kind.Group == nil || *kind.Group == v1alpha2.GroupName) && kind.Kind == K8S_TCPROUTE_KIND { + if (kind.Group == nil || *kind.Group == v1beta1.GroupName) && kind.Kind == K8S_TCPROUTE_KIND { validRGK = append(validRGK, kind) } } @@ -570,7 +569,7 @@ func (gm GatewayManagerImpl) isTCPRouteAllowedByListener(listener store.Listener gkAllowed := listener.AllowedRoutes.Kinds == nil || len(listener.AllowedRoutes.Kinds) == 0 for _, kind := range listener.AllowedRoutes.Kinds { - if (kind.Group != nil && *kind.Group != v1alpha2.GroupName) || kind.Kind != K8S_TCPROUTE_KIND { + if (kind.Group != nil && *kind.Group != v1beta1.GroupName) || kind.Kind != K8S_TCPROUTE_KIND { continue } gkAllowed = true diff --git a/pkg/gateways/updates.go b/pkg/gateways/updates.go index b0b9ead4..50643f69 100644 --- a/pkg/gateways/updates.go +++ b/pkg/gateways/updates.go @@ -177,15 +177,15 @@ func (statusMgr *StatusManagerImpl) UpdateStatusTCPRoutes(routesStatusRecords [] for _, parentStatusRecord := range tcprouteStatusRecord.parentsStatusesRecords { parentStatusRecord := parentStatusRecord conditions := []metav1.Condition{} - routeParentStatus := v1alpha2.RouteParentStatus{ - ControllerName: v1alpha2.GatewayController(statusMgr.gatewayControllerName), - ParentRef: v1alpha2.ParentReference{ - Group: (*v1alpha2.Group)(&parentStatusRecord.parentRef.Group), - Kind: (*v1alpha2.Kind)(&parentStatusRecord.parentRef.Kind), - Namespace: (*v1alpha2.Namespace)(parentStatusRecord.parentRef.Namespace), - Name: v1alpha2.ObjectName(parentStatusRecord.parentRef.Name), - SectionName: (*v1alpha2.SectionName)(parentStatusRecord.parentRef.SectionName), - Port: (*v1alpha2.PortNumber)(parentStatusRecord.parentRef.Port), + routeParentStatus := v1beta1.RouteParentStatus{ + ControllerName: v1beta1.GatewayController(statusMgr.gatewayControllerName), + ParentRef: v1beta1.ParentReference{ + Group: (*v1beta1.Group)(&parentStatusRecord.parentRef.Group), + Kind: (*v1beta1.Kind)(&parentStatusRecord.parentRef.Kind), + Namespace: (*v1beta1.Namespace)(parentStatusRecord.parentRef.Namespace), + Name: v1beta1.ObjectName(parentStatusRecord.parentRef.Name), + SectionName: (*v1beta1.SectionName)(parentStatusRecord.parentRef.SectionName), + Port: (*v1beta1.PortNumber)(parentStatusRecord.parentRef.Port), }, } diff --git a/pkg/k8s/informers.go b/pkg/k8s/informers.go index 4a42ef2e..9146b0a0 100644 --- a/pkg/k8s/informers.go +++ b/pkg/k8s/informers.go @@ -744,7 +744,7 @@ type InformerGetter interface { } type GatewayRelatedType interface { - *gatewayv1beta1.GatewayClass | *gatewayv1beta1.Gateway | *gatewayv1alpha2.TCPRoute | *gatewayv1alpha2.ReferenceGrant + *gatewayv1beta1.GatewayClass | *gatewayv1beta1.Gateway | *gatewayv1alpha2.TCPRoute | *gatewayv1beta1.ReferenceGrant } type GatewayInformerFunc[GWType GatewayRelatedType] func(gwObj GWType, eventChan chan SyncDataEvent, status store.Status) @@ -910,12 +910,12 @@ func PopulateInformer[IT InformerGetter, GWType GatewayRelatedType, GWF GatewayI } func (k k8s) getReferenceGrantInformer(eventChan chan SyncDataEvent, factory gatewaynetworking.SharedInformerFactory) cache.SharedIndexInformer { - informer := factory.Gateway().V1alpha2().ReferenceGrants() - PopulateInformer(eventChan, informer, GatewayInformerFunc[*gatewayv1alpha2.ReferenceGrant](manageReferenceGrant)) + informer := factory.Gateway().V1beta1().ReferenceGrants() + PopulateInformer(eventChan, informer, GatewayInformerFunc[*gatewayv1beta1.ReferenceGrant](manageReferenceGrant)) return informer.Informer() } -func manageReferenceGrant(referenceGrant *gatewayv1alpha2.ReferenceGrant, eventChan chan SyncDataEvent, status store.Status) { +func manageReferenceGrant(referenceGrant *gatewayv1beta1.ReferenceGrant, eventChan chan SyncDataEvent, status store.Status) { logger.Debugf("gwapi: referencegrant: informers: got '%s/%s'", referenceGrant.Namespace, referenceGrant.Name) item := store.ReferenceGrant{ Name: referenceGrant.Name, From bf5681beb0ae587564e691c182e54ee221660e4c Mon Sep 17 00:00:00 2001 From: ronan Date: Tue, 30 Jan 2024 18:37:38 +0100 Subject: [PATCH 4/6] wip upgrade to gateway api v1.0.0 (still use v1beta1) --- go.mod | 2 ++ go.sum | 23 +++++++++++++---------- pkg/k8s/main.go | 2 +- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/go.mod b/go.mod index aef92788..aaab8d50 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,9 @@ require ( k8s.io/apimachinery v0.28.3 k8s.io/client-go v0.28.3 sigs.k8s.io/controller-runtime v0.16.2 + sigs.k8s.io/controller-tools v0.13.0 sigs.k8s.io/gateway-api v0.8.1 + sigs.k8s.io/yaml v1.3.0 ) require ( diff --git a/go.sum b/go.sum index 45bceb7f..59ba9ea8 100644 --- a/go.sum +++ b/go.sum @@ -37,6 +37,7 @@ github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0 github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/go-faker/faker/v4 v4.2.0 h1:dGebOupKwssrODV51E0zbMrv5e2gO9VWSLNC1WDCpWg= github.com/go-faker/faker/v4 v4.2.0/go.mod h1:F/bBy8GH9NxOxMInug5Gx4WYeG6fHJZ8Ol/dhcpRub4= +github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/zapr v1.2.4 h1:QHVo+6stLbfJmYGkQ7uGHUCu5hnAFAj6mDe6Ea0SeOo= @@ -459,14 +460,14 @@ gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/api v0.28.2 h1:9mpl5mOb6vXZvqbQmankOfPIGiudghwCoLl1EYfUZbw= -k8s.io/api v0.28.2/go.mod h1:RVnJBsjU8tcMq7C3iaRSGMeaKt2TWEUXcpIt/90fjEg= -k8s.io/apiextensions-apiserver v0.28.2 h1:J6/QRWIKV2/HwBhHRVITMLYoypCoPY1ftigDM0Kn+QU= -k8s.io/apiextensions-apiserver v0.28.2/go.mod h1:5tnkxLGa9nefefYzWuAlWZ7RZYuN/765Au8cWLA6SRg= -k8s.io/apimachinery v0.28.2 h1:KCOJLrc6gu+wV1BYgwik4AF4vXOlVJPdiqn0yAWWwXQ= -k8s.io/apimachinery v0.28.2/go.mod h1:RdzF87y/ngqk9H4z3EL2Rppv5jj95vGS/HaFXrLDApU= -k8s.io/client-go v0.28.2 h1:DNoYI1vGq0slMBN/SWKMZMw0Rq+0EQW6/AK4v9+3VeY= -k8s.io/client-go v0.28.2/go.mod h1:sMkApowspLuc7omj1FOSUxSoqjr+d5Q0Yc0LOFnYFJY= +k8s.io/api v0.28.3 h1:Gj1HtbSdB4P08C8rs9AR94MfSGpRhJgsS+GF9V26xMM= +k8s.io/api v0.28.3/go.mod h1:MRCV/jr1dW87/qJnZ57U5Pak65LGmQVkKTzf3AtKFHc= +k8s.io/apiextensions-apiserver v0.28.3 h1:Od7DEnhXHnHPZG+W9I97/fSQkVpVPQx2diy+2EtmY08= +k8s.io/apiextensions-apiserver v0.28.3/go.mod h1:NE1XJZ4On0hS11aWWJUTNkmVB03j9LM7gJSisbRt8Lc= +k8s.io/apimachinery v0.28.3 h1:B1wYx8txOaCQG0HmYF6nbpU8dg6HvA06x5tEffvOe7A= +k8s.io/apimachinery v0.28.3/go.mod h1:uQTKmIqs+rAYaq+DFaoD2X7pcjLOqbQX2AOiO0nIpb8= +k8s.io/client-go v0.28.3 h1:2OqNb72ZuTZPKCl+4gTKvqao0AMOl9f3o2ijbAj3LI4= +k8s.io/client-go v0.28.3/go.mod h1:LTykbBp9gsA7SwqirlCXBWtK0guzfhpoW4qSm7i9dxo= k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg= k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/kube-openapi v0.0.0-20230928205116-a78145627833 h1:iFFEmmB7szQhJP42AvRD2+gzdVP7EuIKY1rJgxf0JZY= @@ -475,11 +476,13 @@ k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSn k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= sigs.k8s.io/controller-runtime v0.16.2 h1:mwXAVuEk3EQf478PQwQ48zGOXvW27UJc8NHktQVuIPU= sigs.k8s.io/controller-runtime v0.16.2/go.mod h1:vpMu3LpI5sYWtujJOa2uPK61nB5rbwlN7BAB8aSLvGU= +sigs.k8s.io/controller-tools v0.13.0 h1:NfrvuZ4bxyolhDBt/rCZhDnx3M2hzlhgo5n3Iv2RykI= +sigs.k8s.io/controller-tools v0.13.0/go.mod h1:5vw3En2NazbejQGCeWKRrE7q4P+CW8/klfVqP8QZkgA= sigs.k8s.io/gateway-api v0.8.1 h1:Bo4NMAQFYkQZnHXOfufbYwbPW7b3Ic5NjpbeW6EJxuU= sigs.k8s.io/gateway-api v0.8.1/go.mod h1:0PteDrsrgkRmr13nDqFWnev8tOysAVrwnvfFM55tSVg= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4= sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= -sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= -sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= +sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= +sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= diff --git a/pkg/k8s/main.go b/pkg/k8s/main.go index 121edaac..6a377d77 100644 --- a/pkg/k8s/main.go +++ b/pkg/k8s/main.go @@ -46,7 +46,7 @@ var logger = utils.GetK8sLogger() const ( CRSGroupVersionV1alpha1 = "core.haproxy.org/v1alpha1" CRSGroupVersionV1alpha2 = "core.haproxy.org/v1alpha2" - GATEWAY_API_VERSION = "v0.8.1" //nolint:golint,stylecheck + GATEWAY_API_VERSION = "v1.0.0" //nolint:golint,stylecheck CRSGroupVersionV1 = "ingress.v1.haproxy.org/v1" ) From d673eac5d3ef2c3df28ef81c90fbf2ba5b8cddaf Mon Sep 17 00:00:00 2001 From: Ronan Date: Wed, 31 Jan 2024 07:27:15 +0100 Subject: [PATCH 5/6] test apiv1 --- go.mod | 10 ++++----- go.sum | 16 +++++++-------- pkg/gateways/gateways.go | 12 +++++------ pkg/gateways/updates.go | 44 ++++++++++++++++++++-------------------- pkg/k8s/informers.go | 11 +++++----- 5 files changed, 46 insertions(+), 47 deletions(-) diff --git a/go.mod b/go.mod index aaab8d50..563fcecd 100644 --- a/go.mod +++ b/go.mod @@ -21,10 +21,10 @@ require ( k8s.io/apiextensions-apiserver v0.28.3 k8s.io/apimachinery v0.28.3 k8s.io/client-go v0.28.3 - sigs.k8s.io/controller-runtime v0.16.2 + sigs.k8s.io/controller-runtime v0.16.3 sigs.k8s.io/controller-tools v0.13.0 - sigs.k8s.io/gateway-api v0.8.1 - sigs.k8s.io/yaml v1.3.0 + sigs.k8s.io/gateway-api v1.0.0 + sigs.k8s.io/yaml v1.4.0 ) require ( @@ -36,7 +36,6 @@ require ( github.com/emicklei/go-restful/v3 v3.11.0 // indirect github.com/evanphx/json-patch v5.7.0+incompatible // indirect github.com/evanphx/json-patch/v5 v5.7.0 // indirect - github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/go-logr/logr v1.3.0 // indirect github.com/go-openapi/analysis v0.21.4 // indirect github.com/go-openapi/errors v0.20.4 // indirect @@ -76,7 +75,6 @@ require ( github.com/spf13/pflag v1.0.5 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect go.mongodb.org/mongo-driver v1.13.0 // indirect - go.uber.org/zap v1.26.0 // indirect golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect golang.org/x/net v0.18.0 // indirect golang.org/x/oauth2 v0.14.0 // indirect @@ -90,7 +88,7 @@ require ( gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/klog/v2 v2.100.1 // indirect - k8s.io/kube-openapi v0.0.0-20230928205116-a78145627833 // indirect + k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 // indirect k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect diff --git a/go.sum b/go.sum index 59ba9ea8..b73988f6 100644 --- a/go.sum +++ b/go.sum @@ -470,19 +470,19 @@ k8s.io/client-go v0.28.3 h1:2OqNb72ZuTZPKCl+4gTKvqao0AMOl9f3o2ijbAj3LI4= k8s.io/client-go v0.28.3/go.mod h1:LTykbBp9gsA7SwqirlCXBWtK0guzfhpoW4qSm7i9dxo= k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg= k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/kube-openapi v0.0.0-20230928205116-a78145627833 h1:iFFEmmB7szQhJP42AvRD2+gzdVP7EuIKY1rJgxf0JZY= -k8s.io/kube-openapi v0.0.0-20230928205116-a78145627833/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA= +k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 h1:aVUu9fTY98ivBPKR9Y5w/AuzbMm96cd3YHRTU83I780= +k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA= k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -sigs.k8s.io/controller-runtime v0.16.2 h1:mwXAVuEk3EQf478PQwQ48zGOXvW27UJc8NHktQVuIPU= -sigs.k8s.io/controller-runtime v0.16.2/go.mod h1:vpMu3LpI5sYWtujJOa2uPK61nB5rbwlN7BAB8aSLvGU= +sigs.k8s.io/controller-runtime v0.16.3 h1:2TuvuokmfXvDUamSx1SuAOO3eTyye+47mJCigwG62c4= +sigs.k8s.io/controller-runtime v0.16.3/go.mod h1:j7bialYoSn142nv9sCOJmQgDXQXxnroFU4VnX/brVJ0= sigs.k8s.io/controller-tools v0.13.0 h1:NfrvuZ4bxyolhDBt/rCZhDnx3M2hzlhgo5n3Iv2RykI= sigs.k8s.io/controller-tools v0.13.0/go.mod h1:5vw3En2NazbejQGCeWKRrE7q4P+CW8/klfVqP8QZkgA= -sigs.k8s.io/gateway-api v0.8.1 h1:Bo4NMAQFYkQZnHXOfufbYwbPW7b3Ic5NjpbeW6EJxuU= -sigs.k8s.io/gateway-api v0.8.1/go.mod h1:0PteDrsrgkRmr13nDqFWnev8tOysAVrwnvfFM55tSVg= +sigs.k8s.io/gateway-api v1.0.0 h1:iPTStSv41+d9p0xFydll6d7f7MOBGuqXM6p2/zVYMAs= +sigs.k8s.io/gateway-api v1.0.0/go.mod h1:4cUgr0Lnp5FZ0Cdq8FdRwCvpiWws7LVhLHGIudLlf4c= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4= sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= -sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= -sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= diff --git a/pkg/gateways/gateways.go b/pkg/gateways/gateways.go index 3a2beda4..9b463bac 100644 --- a/pkg/gateways/gateways.go +++ b/pkg/gateways/gateways.go @@ -28,7 +28,7 @@ import ( v1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" "sigs.k8s.io/controller-runtime/pkg/client" - "sigs.k8s.io/gateway-api/apis/v1beta1" + gatewayv1 "sigs.k8s.io/gateway-api/apis/v1" ) var logger = utils.GetLogger() @@ -39,7 +39,7 @@ var logger = utils.GetLogger() const ( K8S_CORE_GROUP = "" K8S_NETWORKING_GROUP = networkingv1.GroupName - K8S_GATEWAY_GROUP = v1beta1.GroupName + K8S_GATEWAY_GROUP = gatewayv1.GroupName K8S_TCPROUTE_KIND = "TCPRoute" K8S_SERVICE_KIND = "Service" ) @@ -245,7 +245,7 @@ MAIN_LOOP: if listener.AllowedRoutes != nil { validRGK := []store.RouteGroupKind{} for _, kind := range listener.AllowedRoutes.Kinds { - if (kind.Group == nil || *kind.Group == v1beta1.GroupName) && kind.Kind == K8S_TCPROUTE_KIND { + if (kind.Group == nil || *kind.Group == gatewayv1.GroupName) && kind.Kind == K8S_TCPROUTE_KIND { validRGK = append(validRGK, kind) } } @@ -550,7 +550,7 @@ func (gm GatewayManagerImpl) isTCPRouteAllowedByListener(listener store.Listener gkAllowed := listener.AllowedRoutes.Kinds == nil || len(listener.AllowedRoutes.Kinds) == 0 for _, kind := range listener.AllowedRoutes.Kinds { - if (kind.Group != nil && *kind.Group != v1beta1.GroupName) || kind.Kind != K8S_TCPROUTE_KIND { + if (kind.Group != nil && *kind.Group != gatewayv1.GroupName) || kind.Kind != K8S_TCPROUTE_KIND { continue } gkAllowed = true @@ -563,13 +563,13 @@ func (gm GatewayManagerImpl) isTCPRouteAllowedByListener(listener store.Listener if allowedRoutesNamespaces != nil { from := allowedRoutesNamespaces.From if from == nil { - v := (string)(v1beta1.NamespacesFromSame) + v := (string)(gatewayv1.NamespacesFromSame) from = &v } if *from == "Same" { return routeNamespace == gatewayNamespace } - if *from == (string)(v1beta1.NamespacesFromSelector) { + if *from == (string)(gatewayv1.NamespacesFromSelector) { if allowedRoutesNamespaces.Selector == nil { return false } diff --git a/pkg/gateways/updates.go b/pkg/gateways/updates.go index 50643f69..6cb54389 100644 --- a/pkg/gateways/updates.go +++ b/pkg/gateways/updates.go @@ -21,8 +21,8 @@ import ( "github.com/haproxytech/kubernetes-ingress/pkg/store" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" + v1 "sigs.k8s.io/gateway-api/apis/v1" "sigs.k8s.io/gateway-api/apis/v1alpha2" - "sigs.k8s.io/gateway-api/apis/v1beta1" ) // UpdateStatusGatewayclasses is responsible of updating the statuses of the accepted gateway classes. @@ -32,7 +32,7 @@ func (statusMgr *StatusManagerImpl) UpdateStatusGatewayclasses(gatewayclasses [] if gwClass.Status == store.EMPTY || gwClass.Status == store.DELETED { continue } - gwc := &v1beta1.GatewayClass{} + gwc := &v1.GatewayClass{} err := statusMgr.k8sRestClient.Get(context.TODO(), types.NamespacedName{ Name: gwClass.Name, }, gwc) @@ -41,7 +41,7 @@ func (statusMgr *StatusManagerImpl) UpdateStatusGatewayclasses(gatewayclasses [] continue } - gwc.Status = v1beta1.GatewayClassStatus{ + gwc.Status = v1.GatewayClassStatus{ Conditions: []metav1.Condition{{ Type: GatewayClassConditionStatusAccepted, ObservedGeneration: gwc.Generation, @@ -66,8 +66,8 @@ func (statusMgr *StatusManagerImpl) UpdateStatusGateways(gatewayStatusRecords [] continue } - gwStatus := v1beta1.GatewayStatus{ - Listeners: make([]v1beta1.ListenerStatus, len(gatewayStatusRecord.listenersStatusesRecords)), + gwStatus := v1.GatewayStatus{ + Listeners: make([]v1.ListenerStatus, len(gatewayStatusRecord.listenersStatusesRecords)), Conditions: []metav1.Condition{{ Type: GatewayConditionReady, ObservedGeneration: gatewayStatusRecord.generation, @@ -82,8 +82,8 @@ func (statusMgr *StatusManagerImpl) UpdateStatusGateways(gatewayStatusRecords [] if numRoutesByListener := numRoutesByListenerByGateway[gatewayStatusRecord.namespace+"/"+gatewayStatusRecord.name]; numRoutesByListener != nil { numRoutes = numRoutesByListener[listenerStatusRecord.name] } - gwStatus.Listeners[i] = v1beta1.ListenerStatus{ - Name: v1beta1.SectionName(listenerStatusRecord.name), + gwStatus.Listeners[i] = v1.ListenerStatus{ + Name: v1.SectionName(listenerStatusRecord.name), SupportedKinds: RouteGroupKinds(listenerStatusRecord.validRGK).asK8SGroupKind(), AttachedRoutes: numRoutes, } @@ -134,7 +134,7 @@ func (statusMgr *StatusManagerImpl) UpdateStatusGateways(gatewayStatusRecords [] gwStatus.Listeners[i].Conditions = listenerConditions } - gw := &v1beta1.Gateway{} + gw := &v1.Gateway{} err := statusMgr.k8sRestClient.Get(context.TODO(), types.NamespacedName{ Namespace: gatewayStatusRecord.namespace, Name: gatewayStatusRecord.name, @@ -177,15 +177,15 @@ func (statusMgr *StatusManagerImpl) UpdateStatusTCPRoutes(routesStatusRecords [] for _, parentStatusRecord := range tcprouteStatusRecord.parentsStatusesRecords { parentStatusRecord := parentStatusRecord conditions := []metav1.Condition{} - routeParentStatus := v1beta1.RouteParentStatus{ - ControllerName: v1beta1.GatewayController(statusMgr.gatewayControllerName), - ParentRef: v1beta1.ParentReference{ - Group: (*v1beta1.Group)(&parentStatusRecord.parentRef.Group), - Kind: (*v1beta1.Kind)(&parentStatusRecord.parentRef.Kind), - Namespace: (*v1beta1.Namespace)(parentStatusRecord.parentRef.Namespace), - Name: v1beta1.ObjectName(parentStatusRecord.parentRef.Name), - SectionName: (*v1beta1.SectionName)(parentStatusRecord.parentRef.SectionName), - Port: (*v1beta1.PortNumber)(parentStatusRecord.parentRef.Port), + routeParentStatus := v1.RouteParentStatus{ + ControllerName: v1.GatewayController(statusMgr.gatewayControllerName), + ParentRef: v1.ParentReference{ + Group: (*v1.Group)(&parentStatusRecord.parentRef.Group), + Kind: (*v1.Kind)(&parentStatusRecord.parentRef.Kind), + Namespace: (*v1.Namespace)(parentStatusRecord.parentRef.Namespace), + Name: v1.ObjectName(parentStatusRecord.parentRef.Name), + SectionName: (*v1.SectionName)(parentStatusRecord.parentRef.SectionName), + Port: (*v1.PortNumber)(parentStatusRecord.parentRef.Port), }, } @@ -267,12 +267,12 @@ func hasNumberOfRoutesForAnyListenerChanged(gatewayStatusRecord gatewayStatusRec type RouteGroupKinds []store.RouteGroupKind -func (rgk RouteGroupKinds) asK8SGroupKind() []v1beta1.RouteGroupKind { - routeGroupKind := make([]v1beta1.RouteGroupKind, len(rgk)) +func (rgk RouteGroupKinds) asK8SGroupKind() []v1.RouteGroupKind { + routeGroupKind := make([]v1.RouteGroupKind, len(rgk)) for i, rgk := range rgk { - routeGroupKind[i] = v1beta1.RouteGroupKind{ - Group: (*v1beta1.Group)(rgk.Group), - Kind: v1beta1.Kind(rgk.Kind), + routeGroupKind[i] = v1.RouteGroupKind{ + Group: (*v1.Group)(rgk.Group), + Kind: v1.Kind(rgk.Kind), } } return routeGroupKind diff --git a/pkg/k8s/informers.go b/pkg/k8s/informers.go index ddce0716..0c1be535 100644 --- a/pkg/k8s/informers.go +++ b/pkg/k8s/informers.go @@ -17,6 +17,7 @@ import ( "github.com/haproxytech/kubernetes-ingress/pkg/store" "github.com/haproxytech/kubernetes-ingress/pkg/utils" + gatewayv1 "sigs.k8s.io/gateway-api/apis/v1" gatewayv1alpha2 "sigs.k8s.io/gateway-api/apis/v1alpha2" gatewayv1beta1 "sigs.k8s.io/gateway-api/apis/v1beta1" gatewaynetworking "sigs.k8s.io/gateway-api/pkg/client/informers/externalversions" @@ -744,12 +745,12 @@ type InformerGetter interface { } type GatewayRelatedType interface { - *gatewayv1beta1.GatewayClass | *gatewayv1beta1.Gateway | *gatewayv1alpha2.TCPRoute | *gatewayv1beta1.ReferenceGrant + *gatewayv1.GatewayClass | *gatewayv1.Gateway | *gatewayv1beta1.GatewayClass | *gatewayv1beta1.Gateway | *gatewayv1alpha2.TCPRoute | *gatewayv1beta1.ReferenceGrant } type GatewayInformerFunc[GWType GatewayRelatedType] func(gwObj GWType, eventChan chan SyncDataEvent, status store.Status) -func manageGatewayClass(gatewayclass *gatewayv1beta1.GatewayClass, eventChan chan SyncDataEvent, status store.Status) { +func manageGatewayClass(gatewayclass *gatewayv1.GatewayClass, eventChan chan SyncDataEvent, status store.Status) { logger.Infof("gwapi: gatewayclass: informers: got '%s'", gatewayclass.Name) item := store.GatewayClass{ Name: gatewayclass.Name, @@ -762,7 +763,7 @@ func manageGatewayClass(gatewayclass *gatewayv1beta1.GatewayClass, eventChan cha eventChan <- SyncDataEvent{SyncType: GATEWAYCLASS, Data: &item} } -func manageGateway(gateway *gatewayv1beta1.Gateway, eventChan chan SyncDataEvent, status store.Status) { +func manageGateway(gateway *gatewayv1.Gateway, eventChan chan SyncDataEvent, status store.Status) { logger.Infof("gwapi: gateway: informers: got '%s/%s'", gateway.Namespace, gateway.Name) listeners := make([]store.Listener, len(gateway.Spec.Listeners)) for i, listener := range gateway.Spec.Listeners { @@ -874,13 +875,13 @@ func manageTCPRoute(tcproute *gatewayv1alpha2.TCPRoute, eventChan chan SyncDataE func (k k8s) getGatewayClassesInformer(eventChan chan SyncDataEvent, factory gatewaynetworking.SharedInformerFactory) cache.SharedIndexInformer { informer := factory.Gateway().V1beta1().GatewayClasses() - PopulateInformer(eventChan, informer, GatewayInformerFunc[*gatewayv1beta1.GatewayClass](manageGatewayClass)) + PopulateInformer(eventChan, informer, GatewayInformerFunc[*gatewayv1.GatewayClass](manageGatewayClass)) return informer.Informer() } func (k k8s) getGatewayInformer(eventChan chan SyncDataEvent, factory gatewaynetworking.SharedInformerFactory) cache.SharedIndexInformer { informer := factory.Gateway().V1beta1().Gateways() - PopulateInformer(eventChan, informer, GatewayInformerFunc[*gatewayv1beta1.Gateway](manageGateway)) + PopulateInformer(eventChan, informer, GatewayInformerFunc[*gatewayv1.Gateway](manageGateway)) return informer.Informer() } From b1a41f75532217732a0c818e0e3d18e0c08a20d5 Mon Sep 17 00:00:00 2001 From: Ronan Date: Wed, 31 Jan 2024 09:20:25 +0100 Subject: [PATCH 6/6] gateway api v1 --- pkg/k8s/informers.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/k8s/informers.go b/pkg/k8s/informers.go index 0c1be535..73567bcc 100644 --- a/pkg/k8s/informers.go +++ b/pkg/k8s/informers.go @@ -874,13 +874,13 @@ func manageTCPRoute(tcproute *gatewayv1alpha2.TCPRoute, eventChan chan SyncDataE } func (k k8s) getGatewayClassesInformer(eventChan chan SyncDataEvent, factory gatewaynetworking.SharedInformerFactory) cache.SharedIndexInformer { - informer := factory.Gateway().V1beta1().GatewayClasses() + informer := factory.Gateway().V1().GatewayClasses() PopulateInformer(eventChan, informer, GatewayInformerFunc[*gatewayv1.GatewayClass](manageGatewayClass)) return informer.Informer() } func (k k8s) getGatewayInformer(eventChan chan SyncDataEvent, factory gatewaynetworking.SharedInformerFactory) cache.SharedIndexInformer { - informer := factory.Gateway().V1beta1().Gateways() + informer := factory.Gateway().V1().Gateways() PopulateInformer(eventChan, informer, GatewayInformerFunc[*gatewayv1.Gateway](manageGateway)) return informer.Informer() }