From 2c7761722d69679b4ac8930ff468cc48dc533dc7 Mon Sep 17 00:00:00 2001 From: Martin Weindel Date: Wed, 28 Feb 2024 10:08:36 +0100 Subject: [PATCH] Registry k8s-gateways in version v1beta1 (#358) * registry k8s-gatewas in version v1beta1 * handle v1beta1 --- cmd/compound/main.go | 2 ++ .../source/gateways/gatewayapi/handler.go | 21 +++++++++++++++++++ .../gatewayapi/httproutesReconciler.go | 12 +++++++++++ 3 files changed, 35 insertions(+) diff --git a/cmd/compound/main.go b/cmd/compound/main.go index f36302c2..bd225190 100644 --- a/cmd/compound/main.go +++ b/cmd/compound/main.go @@ -22,6 +22,7 @@ import ( _ "k8s.io/client-go/plugin/pkg/client/auth/oidc" gatewayapisv1 "sigs.k8s.io/gateway-api/apis/v1" gatewayapisv1alpha2 "sigs.k8s.io/gateway-api/apis/v1alpha2" + gatewayapisv1beta1 "sigs.k8s.io/gateway-api/apis/v1beta1" "github.com/gardener/external-dns-management/pkg/apis/dns/v1alpha1" _ "github.com/gardener/external-dns-management/pkg/controller/annotation/annotations" @@ -70,6 +71,7 @@ func init() { resources.Register(istionetworkingv1alpha3.SchemeBuilder) resources.Register(istionetworkingv1beta1.SchemeBuilder) resources.Register(gatewayapisv1alpha2.SchemeBuilder) + resources.Register(gatewayapisv1beta1.SchemeBuilder) resources.Register(gatewayapisv1.SchemeBuilder) embed.RegisterCreateServerFunc(remote.CreateServer) diff --git a/pkg/controller/source/gateways/gatewayapi/handler.go b/pkg/controller/source/gateways/gatewayapi/handler.go index 5261edb8..b7487046 100644 --- a/pkg/controller/source/gateways/gatewayapi/handler.go +++ b/pkg/controller/source/gateways/gatewayapi/handler.go @@ -16,6 +16,7 @@ import ( "k8s.io/utils/ptr" gatewayapisv1 "sigs.k8s.io/gateway-api/apis/v1" gatewayapisv1alpha2 "sigs.k8s.io/gateway-api/apis/v1alpha2" + gatewayapisv1beta1 "sigs.k8s.io/gateway-api/apis/v1beta1" "github.com/gardener/external-dns-management/pkg/dns" "github.com/gardener/external-dns-management/pkg/dns/source" @@ -93,6 +94,12 @@ func (s *gatewaySource) extractServerHosts(obj resources.ObjectData) ([]string, hosts = append(hosts, string(*listener.Hostname)) } } + case *gatewayapisv1beta1.Gateway: + for _, listener := range data.Spec.Listeners { + if listener.Hostname != nil { + hosts = append(hosts, string(*listener.Hostname)) + } + } case *gatewayapisv1alpha2.Gateway: for _, listener := range data.Spec.Listeners { if listener.Hostname != nil { @@ -126,6 +133,10 @@ func (s *gatewaySource) extractServerHosts(obj resources.ObjectData) ([]string, for _, h := range r.Spec.Hostnames { hosts = addHost(hosts, string(h)) } + case *gatewayapisv1beta1.HTTPRoute: + for _, h := range r.Spec.Hostnames { + hosts = addHost(hosts, string(h)) + } case *gatewayapisv1alpha2.HTTPRoute: for _, h := range r.Spec.Hostnames { hosts = addHost(hosts, string(h)) @@ -151,6 +162,16 @@ func (s *gatewaySource) getTargets(obj resources.ObjectData) utils.StringSet { ipAddresses = append(ipAddresses, address.Value) } } + case *gatewayapisv1beta1.Gateway: + for _, address := range data.Status.Addresses { + t := address.Type + switch { + case t != nil && *t == gatewayapisv1beta1.HostnameAddressType: + hostnames = append(hostnames, address.Value) + case t == nil || *t == gatewayapisv1beta1.IPAddressType: + ipAddresses = append(ipAddresses, address.Value) + } + } case *gatewayapisv1alpha2.Gateway: for _, address := range data.Status.Addresses { t := address.Type diff --git a/pkg/controller/source/gateways/gatewayapi/httproutesReconciler.go b/pkg/controller/source/gateways/gatewayapi/httproutesReconciler.go index a31ae637..4a9c28e5 100644 --- a/pkg/controller/source/gateways/gatewayapi/httproutesReconciler.go +++ b/pkg/controller/source/gateways/gatewayapi/httproutesReconciler.go @@ -11,6 +11,7 @@ import ( "github.com/gardener/controller-manager-library/pkg/resources" gatewayapisv1 "sigs.k8s.io/gateway-api/apis/v1" gatewayapisv1alpha2 "sigs.k8s.io/gateway-api/apis/v1alpha2" + gatewayapisv1beta1 "sigs.k8s.io/gateway-api/apis/v1beta1" ) func HTTPRoutesReconciler(c controller.Interface) (reconcile.Interface, error) { @@ -70,6 +71,17 @@ func extractGatewayNames(route resources.ObjectData) resources.ObjectNameSet { gatewayNames.Add(resources.NewObjectName(namespace, string(ref.Name))) } } + case *gatewayapisv1beta1.HTTPRoute: + for _, ref := range data.Spec.ParentRefs { + if (ref.Group == nil || string(*ref.Group) == GroupKindGateway.Group) && + (ref.Kind == nil || string(*ref.Kind) == GroupKindGateway.Kind) { + namespace := data.Namespace + if ref.Namespace != nil { + namespace = string(*ref.Namespace) + } + gatewayNames.Add(resources.NewObjectName(namespace, string(ref.Name))) + } + } case *gatewayapisv1alpha2.HTTPRoute: for _, ref := range data.Spec.ParentRefs { if (ref.Group == nil || string(*ref.Group) == GroupKindGateway.Group) &&