docs(traefik): public and private routing (#5559)

* docs: added treafik public and private routing

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

docs: added treafik public and private routing

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

docs: added treafik public and private routing

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

docs: added treafik public and private routing

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

docs: added treafik public and private routing

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

docs: added treafik public and private routing

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

docs: added treafik public and private routing

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

docs: added treafik public and private routing

Co-authored-by: Michel Loiseleur <97035654+mloiseleur@users.noreply.github.com>

docs(traefik): public and private routing

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(traefik): public and private routing

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(traefik): public and private routing

Co-authored-by: Michel Loiseleur <97035654+mloiseleur@users.noreply.github.com>

* docs(traefik): public and private routing

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(traefik): public and private routing

Co-authored-by: Michel Loiseleur <97035654+mloiseleur@users.noreply.github.com>

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
Co-authored-by: Michel Loiseleur <97035654+mloiseleur@users.noreply.github.com>
This commit is contained in:
Ivan Ka 2025-06-25 08:40:29 +01:00 committed by GitHub
parent 9f16d835f1
commit 5a321b6fb6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 338 additions and 240 deletions

View File

@ -38,7 +38,7 @@
| `--[no-]ignore-ingress-rules-spec` | Ignore the spec.rules section in Ingress resources (default: false) | | `--[no-]ignore-ingress-rules-spec` | Ignore the spec.rules section in Ingress resources (default: false) |
| `--[no-]ignore-ingress-tls-spec` | Ignore the spec.tls section in Ingress resources (default: false) | | `--[no-]ignore-ingress-tls-spec` | Ignore the spec.tls section in Ingress resources (default: false) |
| `--[no-]ignore-non-host-network-pods` | Ignore pods not running on host network when using pod source (default: false) | | `--[no-]ignore-non-host-network-pods` | Ignore pods not running on host network when using pod source (default: false) |
| `--ingress-class=INGRESS-CLASS` | Require an Ingress to have this class name (defaults to any class; specify multiple times to allow more than one class) | | `--ingress-class=INGRESS-CLASS` | Require an Ingress to have this class name; specify multiple times to allow more than one class (optional; defaults to any class) |
| `--label-filter=""` | Filter resources queried for endpoints by label selector; currently supported by source types crd, gateway-httproute, gateway-grpcroute, gateway-tlsroute, gateway-tcproute, gateway-udproute, ingress, node, openshift-route, service and ambassador-host | | `--label-filter=""` | Filter resources queried for endpoints by label selector; currently supported by source types crd, gateway-httproute, gateway-grpcroute, gateway-tlsroute, gateway-tcproute, gateway-udproute, ingress, node, openshift-route, service and ambassador-host |
| `--managed-record-types=A...` | Record types to manage; specify multiple times to include many; (default: A,AAAA,CNAME) (supported records: A, AAAA, CNAME, NS, SRV, TXT) | | `--managed-record-types=A...` | Record types to manage; specify multiple times to include many; (default: A,AAAA,CNAME) (supported records: A, AAAA, CNAME, NS, SRV, TXT) |
| `--namespace=""` | Limit resources queried for endpoints to a specific namespace (default: all namespaces) | | `--namespace=""` | Limit resources queried for endpoints to a specific namespace (default: all namespaces) |

View File

@ -0,0 +1,18 @@
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: traefik-ingress
annotations:
external-dns.alpha.kubernetes.io/target: traefik.example.com
kubernetes.io/ingress.class: traefik
spec:
entryPoints:
- web
- websecure
routes:
- match: Host(`application.example.com`)
kind: Rule
services:
- name: service
namespace: namespace
port: port

View File

@ -0,0 +1,40 @@
---
apiVersion: traefik.io/v1
kind: IngressRoute
metadata:
name: traefik-public-abc
annotations:
kubernetes.io/ingress.class: traefik-public
spec:
entryPoints:
- web
- websecure
routes:
- match: Host(`application.public.example.com`)
kind: Rule
services:
- name: service
namespace: namespace
port: port
tls:
secretName: traefik-tls-cert-public
---
apiVersion: traefik.io/v1
kind: IngressRoute
metadata:
name: traefik-private-abc
annotations:
kubernetes.io/ingress.class: traefik-private
spec:
entryPoints:
- web
- websecure
routes:
- match: Host(`application.private.tlc`)
kind: Rule
services:
- name: service
namespace: namespace
port: port
tls:
secretName: traefik-tls-cert-private

View File

@ -0,0 +1,16 @@
---
type: public
providers:
kubernetesCRD:
ingressClass: traefik-public
kubernetesIngress:
ingressClass: traefik-public
---
type: private
providers:
kubernetesCRD:
ingressClass: traefik-private
kubernetesIngress:
ingressClass: traefik-private

View File

@ -0,0 +1,59 @@
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: external-dns
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: external-dns
rules:
- apiGroups: [""]
resources: ["services","endpoints","pods"]
verbs: ["get","watch","list"]
- apiGroups: [""]
resources: ["nodes"]
verbs: ["list","watch"]
- apiGroups: ["traefik.containo.us","traefik.io"]
resources: ["ingressroutes", "ingressroutetcps", "ingressrouteudps"]
verbs: ["get","watch","list"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: external-dns-viewer
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: external-dns
subjects:
- kind: ServiceAccount
name: external-dns
namespace: default
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: external-dns
spec:
strategy:
type: Recreate
selector:
matchLabels:
app: external-dns
template:
metadata:
labels:
app: external-dns
spec:
serviceAccountName: external-dns
containers:
- name: external-dns
# update this to the desired external-dns version
image: registry.k8s.io/external-dns/external-dns:v0.17.0
args:
- --source=traefik-proxy
- --provider=aws
- --registry=txt
- --txt-owner-id=my-identifier

View File

@ -0,0 +1,24 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: external-dns
spec:
strategy:
type: Recreate
selector:
matchLabels:
app: external-dns
template:
metadata:
labels:
app: external-dns
spec:
containers:
- name: external-dns
# update this to the desired external-dns version
image: registry.k8s.io/external-dns/external-dns:v0.17.0
args:
- --source=traefik-proxy
- --provider=aws
- --registry=txt
- --txt-owner-id=my-identifier

View File

@ -1,123 +1,29 @@
# Traefik Proxy Source # Traefik Proxy Source
- [Traefik Documentation](https://doc.traefik.io/traefik/)
- [Traefik Helm Chart](https://github.com/traefik/traefik-helm-chart)
This tutorial describes how to configure ExternalDNS to use the Traefik Proxy source. This tutorial describes how to configure ExternalDNS to use the Traefik Proxy source.
It is meant to supplement the other provider-specific setup tutorials. It is meant to supplement the other provider-specific setup tutorials.
## Manifest (for clusters without RBAC enabled) ## Manifest (for clusters without RBAC enabled)
```yaml ```yaml
apiVersion: apps/v1 [[% include 'traefik-proxy/without-rbac.yaml' %]]
kind: Deployment
metadata:
name: external-dns
spec:
strategy:
type: Recreate
selector:
matchLabels:
app: external-dns
template:
metadata:
labels:
app: external-dns
spec:
containers:
- name: external-dns
# update this to the desired external-dns version
image: registry.k8s.io/external-dns/external-dns:v0.17.0
args:
- --source=traefik-proxy
- --provider=aws
- --registry=txt
- --txt-owner-id=my-identifier
``` ```
## Manifest (for clusters with RBAC enabled) ## Manifest (for clusters with RBAC enabled)
```yaml ```yaml
apiVersion: v1 [[% include 'traefik-proxy/with-cluster-rbac.yaml' %]]
kind: ServiceAccount
metadata:
name: external-dns
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: external-dns
rules:
- apiGroups: [""]
resources: ["services","endpoints","pods"]
verbs: ["get","watch","list"]
- apiGroups: [""]
resources: ["nodes"]
verbs: ["list","watch"]
- apiGroups: ["traefik.containo.us","traefik.io"]
resources: ["ingressroutes", "ingressroutetcps", "ingressrouteudps"]
verbs: ["get","watch","list"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: external-dns-viewer
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: external-dns
subjects:
- kind: ServiceAccount
name: external-dns
namespace: default
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: external-dns
spec:
strategy:
type: Recreate
selector:
matchLabels:
app: external-dns
template:
metadata:
labels:
app: external-dns
spec:
serviceAccountName: external-dns
containers:
- name: external-dns
# update this to the desired external-dns version
image: registry.k8s.io/external-dns/external-dns:v0.17.0
args:
- --source=traefik-proxy
- --provider=aws
- --registry=txt
- --txt-owner-id=my-identifier
``` ```
## Deploying a Traefik IngressRoute ## Deploying a Traefik IngressRoute
Create a IngressRoute file called 'traefik-ingress.yaml' with the following contents: Create an IngressRoute file called 'ingress-route-default' with the following contents:
```yaml ```yaml
apiVersion: traefik.io/v1alpha1 [[% include 'traefik-proxy/ingress-route-default.yaml' %]]
kind: IngressRoute
metadata:
name: traefik-ingress
annotations:
external-dns.alpha.kubernetes.io/target: traefik.example.com
kubernetes.io/ingress.class: traefik
spec:
entryPoints:
- web
- websecure
routes:
- match: Host(`application.example.com`)
kind: Rule
services:
- name: service
namespace: namespace
port: port
``` ```
Note the annotation on the IngressRoute (`external-dns.alpha.kubernetes.io/target`); use the same hostname as the traefik DNS. Note the annotation on the IngressRoute (`external-dns.alpha.kubernetes.io/target`); use the same hostname as the traefik DNS.
@ -127,30 +33,61 @@ ExternalDNS uses this annotation to determine what services should be registered
Create the IngressRoute: Create the IngressRoute:
```sh ```sh
kubectl create -f traefik-ingress.yaml kubectl create -f docs/snippets/traefik-proxy/ingress-route-default.yaml
``` ```
Depending where you run your IngressRoute it can take a little while for ExternalDNS synchronize the DNS record. Depending where you run your IngressRoute it can take a little while for ExternalDNS synchronize the DNS record.
## Support private and public routing
To create a more robust and manageable Kubernetes environment, leverage separate Ingress classes to finely control public and private routing's security, performance, and operational policies. Similar approach could work in multi-tenant environments.
For this we are going to need two instances of `traefik` (public and private) as well as two instances of `external-dns`.
The `traefik` configuration should contain (for more detailed configured validate with the vendor)
```yaml
[[% include 'traefik-proxy/traefik-public-private-config.yaml' %]]
```
Create a IngressRoutes files with the following contents:
```yaml
[[% include 'traefik-proxy/ingress-route-public-private.yaml' %]]
```
And the arguments for `external-dns` instances should looks like
```yaml
---
args:
- --source=traefik-proxy
- --annotation-filter="kubernetes.io/ingress.class=traefik-public"
---
args:
- --source=traefik-proxy
- --annotation-filter="kubernetes.io/ingress.class=traefik-private"
```
## Cleanup ## Cleanup
Now that we have verified that ExternalDNS will automatically manage Traefik DNS records, we can delete the tutorial's example: Now that we have verified that ExternalDNS will automatically manage Traefik DNS records, we can delete the tutorial's example:
```sh ```sh
kubectl delete -f traefik-ingress.yaml kubectl delete -f docs/snippets/traefik-proxy/ingress-route-default.yaml
kubectl delete -f externaldns.yaml kubectl delete -f externaldns.yaml
``` ```
## Additional Flags ## Additional Flags
| Flag | Description | | Flag | Description |
| --- | --- | |--------------------------|----------------------------------------------------------|
| --traefik-disable-legacy | Disable listeners on Resources under traefik.containo.us | | --traefik-disable-legacy | Disable listeners on Resources under traefik.containo.us |
| --traefik-disable-new | Disable listeners on Resources under traefik.io | | --traefik-disable-new | Disable listeners on Resources under traefik.io |
### Disabling Resource Listeners ### Disabling Resource Listeners
Traefik has deprecated the legacy API group, traefik.containo.us, in favor of traefik.io. By default the traefik-proxy source will listen for resources under both API groups; however, this may cause timeouts with the following message Traefik has deprecated the legacy API group, `traefik.containo.us`, in favor of `traefik.io`. By default the `traefik-proxy` source will listen for resources under both API groups; however, this may cause timeouts with the following message
```sh ```sh
FATA[0060] failed to sync traefik.io/v1alpha1, Resource=ingressroutes: context deadline exceeded FATA[0060] failed to sync traefik.io/v1alpha1, Resource=ingressroutes: context deadline exceeded

View File

@ -473,7 +473,7 @@ func App(cfg *Config) *kingpin.Application {
app.Flag("ignore-ingress-rules-spec", "Ignore the spec.rules section in Ingress resources (default: false)").BoolVar(&cfg.IgnoreIngressRulesSpec) app.Flag("ignore-ingress-rules-spec", "Ignore the spec.rules section in Ingress resources (default: false)").BoolVar(&cfg.IgnoreIngressRulesSpec)
app.Flag("ignore-ingress-tls-spec", "Ignore the spec.tls section in Ingress resources (default: false)").BoolVar(&cfg.IgnoreIngressTLSSpec) app.Flag("ignore-ingress-tls-spec", "Ignore the spec.tls section in Ingress resources (default: false)").BoolVar(&cfg.IgnoreIngressTLSSpec)
app.Flag("ignore-non-host-network-pods", "Ignore pods not running on host network when using pod source (default: false)").BoolVar(&cfg.IgnoreNonHostNetworkPods) app.Flag("ignore-non-host-network-pods", "Ignore pods not running on host network when using pod source (default: false)").BoolVar(&cfg.IgnoreNonHostNetworkPods)
app.Flag("ingress-class", "Require an Ingress to have this class name (defaults to any class; specify multiple times to allow more than one class)").StringsVar(&cfg.IngressClassNames) app.Flag("ingress-class", "Require an Ingress to have this class name; specify multiple times to allow more than one class (optional; defaults to any class)").StringsVar(&cfg.IngressClassNames)
app.Flag("label-filter", "Filter resources queried for endpoints by label selector; currently supported by source types crd, gateway-httproute, gateway-grpcroute, gateway-tlsroute, gateway-tcproute, gateway-udproute, ingress, node, openshift-route, service and ambassador-host").Default(defaultConfig.LabelFilter).StringVar(&cfg.LabelFilter) app.Flag("label-filter", "Filter resources queried for endpoints by label selector; currently supported by source types crd, gateway-httproute, gateway-grpcroute, gateway-tlsroute, gateway-tcproute, gateway-udproute, ingress, node, openshift-route, service and ambassador-host").Default(defaultConfig.LabelFilter).StringVar(&cfg.LabelFilter)
managedRecordTypesHelp := fmt.Sprintf("Record types to manage; specify multiple times to include many; (default: %s) (supported records: A, AAAA, CNAME, NS, SRV, TXT)", strings.Join(defaultConfig.ManagedDNSRecordTypes, ",")) managedRecordTypesHelp := fmt.Sprintf("Record types to manage; specify multiple times to include many; (default: %s) (supported records: A, AAAA, CNAME, NS, SRV, TXT)", strings.Join(defaultConfig.ManagedDNSRecordTypes, ","))
app.Flag("managed-record-types", managedRecordTypesHelp).Default(defaultConfig.ManagedDNSRecordTypes...).StringsVar(&cfg.ManagedDNSRecordTypes) app.Flag("managed-record-types", managedRecordTypesHelp).Default(defaultConfig.ManagedDNSRecordTypes...).StringsVar(&cfg.ManagedDNSRecordTypes)

View File

@ -43,32 +43,32 @@ import (
) )
var ( var (
ingressrouteGVR = schema.GroupVersionResource{ ingressRouteGVR = schema.GroupVersionResource{
Group: "traefik.io", Group: "traefik.io",
Version: "v1alpha1", Version: "v1alpha1",
Resource: "ingressroutes", Resource: "ingressroutes",
} }
ingressrouteTCPGVR = schema.GroupVersionResource{ ingressRouteTCPGVR = schema.GroupVersionResource{
Group: "traefik.io", Group: "traefik.io",
Version: "v1alpha1", Version: "v1alpha1",
Resource: "ingressroutetcps", Resource: "ingressroutetcps",
} }
ingressrouteUDPGVR = schema.GroupVersionResource{ ingressRouteUDPGVR = schema.GroupVersionResource{
Group: "traefik.io", Group: "traefik.io",
Version: "v1alpha1", Version: "v1alpha1",
Resource: "ingressrouteudps", Resource: "ingressrouteudps",
} }
oldIngressrouteGVR = schema.GroupVersionResource{ oldIngressRouteGVR = schema.GroupVersionResource{
Group: "traefik.containo.us", Group: "traefik.containo.us",
Version: "v1alpha1", Version: "v1alpha1",
Resource: "ingressroutes", Resource: "ingressroutes",
} }
oldIngressrouteTCPGVR = schema.GroupVersionResource{ oldIngressRouteTCPGVR = schema.GroupVersionResource{
Group: "traefik.containo.us", Group: "traefik.containo.us",
Version: "v1alpha1", Version: "v1alpha1",
Resource: "ingressroutetcps", Resource: "ingressroutetcps",
} }
oldIngressrouteUDPGVR = schema.GroupVersionResource{ oldIngressRouteUDPGVR = schema.GroupVersionResource{
Group: "traefik.containo.us", Group: "traefik.containo.us",
Version: "v1alpha1", Version: "v1alpha1",
Resource: "ingressrouteudps", Resource: "ingressrouteudps",
@ -81,21 +81,26 @@ var (
) )
type traefikSource struct { type traefikSource struct {
annotationFilter string
ignoreHostnameAnnotation bool
dynamicKubeClient dynamic.Interface dynamicKubeClient dynamic.Interface
kubeClient kubernetes.Interface
annotationFilter string
namespace string
ignoreHostnameAnnotation bool
ingressRouteInformer kubeinformers.GenericInformer ingressRouteInformer kubeinformers.GenericInformer
ingressRouteTcpInformer kubeinformers.GenericInformer ingressRouteTcpInformer kubeinformers.GenericInformer
ingressRouteUdpInformer kubeinformers.GenericInformer ingressRouteUdpInformer kubeinformers.GenericInformer
oldIngressRouteInformer kubeinformers.GenericInformer oldIngressRouteInformer kubeinformers.GenericInformer
oldIngressRouteTcpInformer kubeinformers.GenericInformer oldIngressRouteTcpInformer kubeinformers.GenericInformer
oldIngressRouteUdpInformer kubeinformers.GenericInformer oldIngressRouteUdpInformer kubeinformers.GenericInformer
kubeClient kubernetes.Interface
namespace string
unstructuredConverter *unstructuredConverter unstructuredConverter *unstructuredConverter
} }
func NewTraefikSource(ctx context.Context, dynamicKubeClient dynamic.Interface, kubeClient kubernetes.Interface, namespace string, annotationFilter string, ignoreHostnameAnnotation bool, disableLegacy bool, disableNew bool) (Source, error) { func NewTraefikSource(
ctx context.Context,
dynamicKubeClient dynamic.Interface,
kubeClient kubernetes.Interface,
namespace, annotationFilter string,
ignoreHostnameAnnotation, disableLegacy, disableNew bool) (Source, error) {
// Use shared informer to listen for add/update/delete of Host in the specified namespace. // Use shared informer to listen for add/update/delete of Host in the specified namespace.
// Set resync period to 0, to prevent processing when nothing has changed. // Set resync period to 0, to prevent processing when nothing has changed.
informerFactory := dynamicinformer.NewFilteredDynamicSharedInformerFactory(dynamicKubeClient, 0, namespace, nil) informerFactory := dynamicinformer.NewFilteredDynamicSharedInformerFactory(dynamicKubeClient, 0, namespace, nil)
@ -104,40 +109,40 @@ func NewTraefikSource(ctx context.Context, dynamicKubeClient dynamic.Interface,
// Add default resource event handlers to properly initialize informers. // Add default resource event handlers to properly initialize informers.
if !disableNew { if !disableNew {
ingressRouteInformer = informerFactory.ForResource(ingressrouteGVR) ingressRouteInformer = informerFactory.ForResource(ingressRouteGVR)
ingressRouteTcpInformer = informerFactory.ForResource(ingressrouteTCPGVR) ingressRouteTcpInformer = informerFactory.ForResource(ingressRouteTCPGVR)
ingressRouteUdpInformer = informerFactory.ForResource(ingressrouteUDPGVR) ingressRouteUdpInformer = informerFactory.ForResource(ingressRouteUDPGVR)
ingressRouteInformer.Informer().AddEventHandler( _, _ = ingressRouteInformer.Informer().AddEventHandler(
cache.ResourceEventHandlerFuncs{ cache.ResourceEventHandlerFuncs{
AddFunc: func(obj interface{}) {}, AddFunc: func(obj interface{}) {},
}, },
) )
ingressRouteTcpInformer.Informer().AddEventHandler( _, _ = ingressRouteTcpInformer.Informer().AddEventHandler(
cache.ResourceEventHandlerFuncs{ cache.ResourceEventHandlerFuncs{
AddFunc: func(obj interface{}) {}, AddFunc: func(obj interface{}) {},
}, },
) )
ingressRouteUdpInformer.Informer().AddEventHandler( _, _ = ingressRouteUdpInformer.Informer().AddEventHandler(
cache.ResourceEventHandlerFuncs{ cache.ResourceEventHandlerFuncs{
AddFunc: func(obj interface{}) {}, AddFunc: func(obj interface{}) {},
}, },
) )
} }
if !disableLegacy { if !disableLegacy {
oldIngressRouteInformer = informerFactory.ForResource(oldIngressrouteGVR) oldIngressRouteInformer = informerFactory.ForResource(oldIngressRouteGVR)
oldIngressRouteTcpInformer = informerFactory.ForResource(oldIngressrouteTCPGVR) oldIngressRouteTcpInformer = informerFactory.ForResource(oldIngressRouteTCPGVR)
oldIngressRouteUdpInformer = informerFactory.ForResource(oldIngressrouteUDPGVR) oldIngressRouteUdpInformer = informerFactory.ForResource(oldIngressRouteUDPGVR)
oldIngressRouteInformer.Informer().AddEventHandler( _, _ = oldIngressRouteInformer.Informer().AddEventHandler(
cache.ResourceEventHandlerFuncs{ cache.ResourceEventHandlerFuncs{
AddFunc: func(obj interface{}) {}, AddFunc: func(obj interface{}) {},
}, },
) )
oldIngressRouteTcpInformer.Informer().AddEventHandler( _, _ = oldIngressRouteTcpInformer.Informer().AddEventHandler(
cache.ResourceEventHandlerFuncs{ cache.ResourceEventHandlerFuncs{
AddFunc: func(obj interface{}) {}, AddFunc: func(obj interface{}) {},
}, },
) )
oldIngressRouteUdpInformer.Informer().AddEventHandler( _, _ = oldIngressRouteUdpInformer.Informer().AddEventHandler(
cache.ResourceEventHandlerFuncs{ cache.ResourceEventHandlerFuncs{
AddFunc: func(obj interface{}) {}, AddFunc: func(obj interface{}) {},
}, },
@ -460,24 +465,24 @@ func (ts *traefikSource) AddEventHandler(ctx context.Context, handler func()) {
// https://github.com/kubernetes/kubernetes/issues/79610 // https://github.com/kubernetes/kubernetes/issues/79610
log.Debug("Adding event handler for IngressRoute") log.Debug("Adding event handler for IngressRoute")
if ts.ingressRouteInformer != nil { if ts.ingressRouteInformer != nil {
ts.ingressRouteInformer.Informer().AddEventHandler(eventHandlerFunc(handler)) _, _ = ts.ingressRouteInformer.Informer().AddEventHandler(eventHandlerFunc(handler))
} }
if ts.oldIngressRouteInformer != nil { if ts.oldIngressRouteInformer != nil {
ts.oldIngressRouteInformer.Informer().AddEventHandler(eventHandlerFunc(handler)) _, _ = ts.oldIngressRouteInformer.Informer().AddEventHandler(eventHandlerFunc(handler))
} }
log.Debug("Adding event handler for IngressRouteTCP") log.Debug("Adding event handler for IngressRouteTCP")
if ts.ingressRouteTcpInformer != nil { if ts.ingressRouteTcpInformer != nil {
ts.ingressRouteTcpInformer.Informer().AddEventHandler(eventHandlerFunc(handler)) _, _ = ts.ingressRouteTcpInformer.Informer().AddEventHandler(eventHandlerFunc(handler))
} }
if ts.oldIngressRouteTcpInformer != nil { if ts.oldIngressRouteTcpInformer != nil {
ts.oldIngressRouteTcpInformer.Informer().AddEventHandler(eventHandlerFunc(handler)) _, _ = ts.oldIngressRouteTcpInformer.Informer().AddEventHandler(eventHandlerFunc(handler))
} }
log.Debug("Adding event handler for IngressRouteUDP") log.Debug("Adding event handler for IngressRouteUDP")
if ts.ingressRouteUdpInformer != nil { if ts.ingressRouteUdpInformer != nil {
ts.ingressRouteUdpInformer.Informer().AddEventHandler(eventHandlerFunc(handler)) _, _ = ts.ingressRouteUdpInformer.Informer().AddEventHandler(eventHandlerFunc(handler))
} }
if ts.oldIngressRouteUdpInformer != nil { if ts.oldIngressRouteUdpInformer != nil {
ts.oldIngressRouteUdpInformer.Informer().AddEventHandler(eventHandlerFunc(handler)) _, _ = ts.oldIngressRouteUdpInformer.Informer().AddEventHandler(eventHandlerFunc(handler))
} }
} }
@ -488,12 +493,12 @@ func newTraefikUnstructuredConverter() (*unstructuredConverter, error) {
} }
// Add the core types we need // Add the core types we need
uc.scheme.AddKnownTypes(ingressrouteGVR.GroupVersion(), &IngressRoute{}, &IngressRouteList{}) uc.scheme.AddKnownTypes(ingressRouteGVR.GroupVersion(), &IngressRoute{}, &IngressRouteList{})
uc.scheme.AddKnownTypes(oldIngressrouteGVR.GroupVersion(), &IngressRoute{}, &IngressRouteList{}) uc.scheme.AddKnownTypes(oldIngressRouteGVR.GroupVersion(), &IngressRoute{}, &IngressRouteList{})
uc.scheme.AddKnownTypes(ingressrouteTCPGVR.GroupVersion(), &IngressRouteTCP{}, &IngressRouteTCPList{}) uc.scheme.AddKnownTypes(ingressRouteTCPGVR.GroupVersion(), &IngressRouteTCP{}, &IngressRouteTCPList{})
uc.scheme.AddKnownTypes(oldIngressrouteTCPGVR.GroupVersion(), &IngressRouteTCP{}, &IngressRouteTCPList{}) uc.scheme.AddKnownTypes(oldIngressRouteTCPGVR.GroupVersion(), &IngressRouteTCP{}, &IngressRouteTCPList{})
uc.scheme.AddKnownTypes(ingressrouteUDPGVR.GroupVersion(), &IngressRouteUDP{}, &IngressRouteUDPList{}) uc.scheme.AddKnownTypes(ingressRouteUDPGVR.GroupVersion(), &IngressRouteUDP{}, &IngressRouteUDPList{})
uc.scheme.AddKnownTypes(oldIngressrouteUDPGVR.GroupVersion(), &IngressRouteUDP{}, &IngressRouteUDPList{}) uc.scheme.AddKnownTypes(oldIngressRouteUDPGVR.GroupVersion(), &IngressRouteUDP{}, &IngressRouteUDPList{})
if err := scheme.AddToScheme(uc.scheme); err != nil { if err := scheme.AddToScheme(uc.scheme); err != nil {
return nil, err return nil, err
} }
@ -917,8 +922,7 @@ func filterResourcesByAnnotations[T any](resources []*T, annotationFilter string
var filteredList []*T var filteredList []*T
for _, resource := range resources { for _, resource := range resources {
annotations := getAnnotations(resource) if selector.Matches(labels.Set(getAnnotations(resource))) {
if selector.Matches(labels.Set(annotations)) {
filteredList = append(filteredList, resource) filteredList = append(filteredList, resource)
} }
} }

View File

@ -55,7 +55,7 @@ func TestTraefikProxyIngressRouteEndpoints(t *testing.T) {
title: "IngressRoute with hostname annotation", title: "IngressRoute with hostname annotation",
ingressRoute: IngressRoute{ ingressRoute: IngressRoute{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: ingressrouteGVR.GroupVersion().String(), APIVersion: ingressRouteGVR.GroupVersion().String(),
Kind: "IngressRoute", Kind: "IngressRoute",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -85,7 +85,7 @@ func TestTraefikProxyIngressRouteEndpoints(t *testing.T) {
title: "IngressRoute with host rule", title: "IngressRoute with host rule",
ingressRoute: IngressRoute{ ingressRoute: IngressRoute{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: ingressrouteGVR.GroupVersion().String(), APIVersion: ingressRouteGVR.GroupVersion().String(),
Kind: "IngressRoute", Kind: "IngressRoute",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -121,7 +121,7 @@ func TestTraefikProxyIngressRouteEndpoints(t *testing.T) {
title: "IngressRoute with hostheader rule", title: "IngressRoute with hostheader rule",
ingressRoute: IngressRoute{ ingressRoute: IngressRoute{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: ingressrouteGVR.GroupVersion().String(), APIVersion: ingressRouteGVR.GroupVersion().String(),
Kind: "IngressRoute", Kind: "IngressRoute",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -157,7 +157,7 @@ func TestTraefikProxyIngressRouteEndpoints(t *testing.T) {
title: "IngressRoute with multiple host rules", title: "IngressRoute with multiple host rules",
ingressRoute: IngressRoute{ ingressRoute: IngressRoute{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: ingressrouteGVR.GroupVersion().String(), APIVersion: ingressRouteGVR.GroupVersion().String(),
Kind: "IngressRoute", Kind: "IngressRoute",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -203,7 +203,7 @@ func TestTraefikProxyIngressRouteEndpoints(t *testing.T) {
title: "IngressRoute with multiple host rules and annotation", title: "IngressRoute with multiple host rules and annotation",
ingressRoute: IngressRoute{ ingressRoute: IngressRoute{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: ingressrouteGVR.GroupVersion().String(), APIVersion: ingressRouteGVR.GroupVersion().String(),
Kind: "IngressRoute", Kind: "IngressRoute",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -260,7 +260,7 @@ func TestTraefikProxyIngressRouteEndpoints(t *testing.T) {
title: "IngressRoute ignoring annotation", title: "IngressRoute ignoring annotation",
ingressRoute: IngressRoute{ ingressRoute: IngressRoute{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: ingressrouteGVR.GroupVersion().String(), APIVersion: ingressRouteGVR.GroupVersion().String(),
Kind: "IngressRoute", Kind: "IngressRoute",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -308,7 +308,7 @@ func TestTraefikProxyIngressRouteEndpoints(t *testing.T) {
title: "IngressRoute omit wildcard", title: "IngressRoute omit wildcard",
ingressRoute: IngressRoute{ ingressRoute: IngressRoute{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: ingressrouteGVR.GroupVersion().String(), APIVersion: ingressRouteGVR.GroupVersion().String(),
Kind: "IngressRoute", Kind: "IngressRoute",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -336,12 +336,12 @@ func TestTraefikProxyIngressRouteEndpoints(t *testing.T) {
fakeKubernetesClient := fakeKube.NewSimpleClientset() fakeKubernetesClient := fakeKube.NewSimpleClientset()
scheme := runtime.NewScheme() scheme := runtime.NewScheme()
scheme.AddKnownTypes(ingressrouteGVR.GroupVersion(), &IngressRoute{}, &IngressRouteList{}) scheme.AddKnownTypes(ingressRouteGVR.GroupVersion(), &IngressRoute{}, &IngressRouteList{})
scheme.AddKnownTypes(ingressrouteTCPGVR.GroupVersion(), &IngressRouteTCP{}, &IngressRouteTCPList{}) scheme.AddKnownTypes(ingressRouteTCPGVR.GroupVersion(), &IngressRouteTCP{}, &IngressRouteTCPList{})
scheme.AddKnownTypes(ingressrouteUDPGVR.GroupVersion(), &IngressRouteUDP{}, &IngressRouteUDPList{}) scheme.AddKnownTypes(ingressRouteUDPGVR.GroupVersion(), &IngressRouteUDP{}, &IngressRouteUDPList{})
scheme.AddKnownTypes(oldIngressrouteGVR.GroupVersion(), &IngressRoute{}, &IngressRouteList{}) scheme.AddKnownTypes(oldIngressRouteGVR.GroupVersion(), &IngressRoute{}, &IngressRouteList{})
scheme.AddKnownTypes(oldIngressrouteTCPGVR.GroupVersion(), &IngressRouteTCP{}, &IngressRouteTCPList{}) scheme.AddKnownTypes(oldIngressRouteTCPGVR.GroupVersion(), &IngressRouteTCP{}, &IngressRouteTCPList{})
scheme.AddKnownTypes(oldIngressrouteUDPGVR.GroupVersion(), &IngressRouteUDP{}, &IngressRouteUDPList{}) scheme.AddKnownTypes(oldIngressRouteUDPGVR.GroupVersion(), &IngressRouteUDP{}, &IngressRouteUDPList{})
fakeDynamicClient := fakeDynamic.NewSimpleDynamicClient(scheme) fakeDynamicClient := fakeDynamic.NewSimpleDynamicClient(scheme)
ir := unstructured.Unstructured{} ir := unstructured.Unstructured{}
@ -352,7 +352,7 @@ func TestTraefikProxyIngressRouteEndpoints(t *testing.T) {
assert.NoError(t, ir.UnmarshalJSON(ingressRouteAsJSON)) assert.NoError(t, ir.UnmarshalJSON(ingressRouteAsJSON))
// Create proxy resources // Create proxy resources
_, err = fakeDynamicClient.Resource(ingressrouteGVR).Namespace(defaultTraefikNamespace).Create(context.Background(), &ir, metav1.CreateOptions{}) _, err = fakeDynamicClient.Resource(ingressRouteGVR).Namespace(defaultTraefikNamespace).Create(context.Background(), &ir, metav1.CreateOptions{})
assert.NoError(t, err) assert.NoError(t, err)
source, err := NewTraefikSource(context.TODO(), fakeDynamicClient, fakeKubernetesClient, defaultTraefikNamespace, "kubernetes.io/ingress.class=traefik", ti.ignoreHostnameAnnotation, false, false) source, err := NewTraefikSource(context.TODO(), fakeDynamicClient, fakeKubernetesClient, defaultTraefikNamespace, "kubernetes.io/ingress.class=traefik", ti.ignoreHostnameAnnotation, false, false)
@ -361,7 +361,7 @@ func TestTraefikProxyIngressRouteEndpoints(t *testing.T) {
count := &unstructured.UnstructuredList{} count := &unstructured.UnstructuredList{}
for len(count.Items) < 1 { for len(count.Items) < 1 {
count, _ = fakeDynamicClient.Resource(ingressrouteGVR).Namespace(defaultTraefikNamespace).List(context.Background(), metav1.ListOptions{}) count, _ = fakeDynamicClient.Resource(ingressRouteGVR).Namespace(defaultTraefikNamespace).List(context.Background(), metav1.ListOptions{})
} }
endpoints, err := source.Endpoints(context.Background()) endpoints, err := source.Endpoints(context.Background())
@ -385,7 +385,7 @@ func TestTraefikProxyIngressRouteTCPEndpoints(t *testing.T) {
title: "IngressRouteTCP with hostname annotation", title: "IngressRouteTCP with hostname annotation",
ingressRouteTCP: IngressRouteTCP{ ingressRouteTCP: IngressRouteTCP{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: ingressrouteTCPGVR.GroupVersion().String(), APIVersion: ingressRouteTCPGVR.GroupVersion().String(),
Kind: "IngressRouteTCP", Kind: "IngressRouteTCP",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -415,7 +415,7 @@ func TestTraefikProxyIngressRouteTCPEndpoints(t *testing.T) {
title: "IngressRouteTCP with host sni rule", title: "IngressRouteTCP with host sni rule",
ingressRouteTCP: IngressRouteTCP{ ingressRouteTCP: IngressRouteTCP{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: ingressrouteTCPGVR.GroupVersion().String(), APIVersion: ingressRouteTCPGVR.GroupVersion().String(),
Kind: "IngressRouteTCP", Kind: "IngressRouteTCP",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -451,7 +451,7 @@ func TestTraefikProxyIngressRouteTCPEndpoints(t *testing.T) {
title: "IngressRouteTCP with multiple host sni rules", title: "IngressRouteTCP with multiple host sni rules",
ingressRouteTCP: IngressRouteTCP{ ingressRouteTCP: IngressRouteTCP{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: ingressrouteTCPGVR.GroupVersion().String(), APIVersion: ingressRouteTCPGVR.GroupVersion().String(),
Kind: "IngressRouteTCP", Kind: "IngressRouteTCP",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -497,7 +497,7 @@ func TestTraefikProxyIngressRouteTCPEndpoints(t *testing.T) {
title: "IngressRouteTCP with multiple host sni rules and annotation", title: "IngressRouteTCP with multiple host sni rules and annotation",
ingressRouteTCP: IngressRouteTCP{ ingressRouteTCP: IngressRouteTCP{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: ingressrouteTCPGVR.GroupVersion().String(), APIVersion: ingressRouteTCPGVR.GroupVersion().String(),
Kind: "IngressRouteTCP", Kind: "IngressRouteTCP",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -554,7 +554,7 @@ func TestTraefikProxyIngressRouteTCPEndpoints(t *testing.T) {
title: "IngressRouteTCP ignoring annotation", title: "IngressRouteTCP ignoring annotation",
ingressRouteTCP: IngressRouteTCP{ ingressRouteTCP: IngressRouteTCP{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: ingressrouteTCPGVR.GroupVersion().String(), APIVersion: ingressRouteTCPGVR.GroupVersion().String(),
Kind: "IngressRouteTCP", Kind: "IngressRouteTCP",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -602,7 +602,7 @@ func TestTraefikProxyIngressRouteTCPEndpoints(t *testing.T) {
title: "IngressRouteTCP omit wildcard host sni", title: "IngressRouteTCP omit wildcard host sni",
ingressRouteTCP: IngressRouteTCP{ ingressRouteTCP: IngressRouteTCP{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: ingressrouteTCPGVR.GroupVersion().String(), APIVersion: ingressRouteTCPGVR.GroupVersion().String(),
Kind: "IngressRouteTCP", Kind: "IngressRouteTCP",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -630,12 +630,12 @@ func TestTraefikProxyIngressRouteTCPEndpoints(t *testing.T) {
fakeKubernetesClient := fakeKube.NewSimpleClientset() fakeKubernetesClient := fakeKube.NewSimpleClientset()
scheme := runtime.NewScheme() scheme := runtime.NewScheme()
scheme.AddKnownTypes(ingressrouteGVR.GroupVersion(), &IngressRoute{}, &IngressRouteList{}) scheme.AddKnownTypes(ingressRouteGVR.GroupVersion(), &IngressRoute{}, &IngressRouteList{})
scheme.AddKnownTypes(ingressrouteTCPGVR.GroupVersion(), &IngressRouteTCP{}, &IngressRouteTCPList{}) scheme.AddKnownTypes(ingressRouteTCPGVR.GroupVersion(), &IngressRouteTCP{}, &IngressRouteTCPList{})
scheme.AddKnownTypes(ingressrouteUDPGVR.GroupVersion(), &IngressRouteUDP{}, &IngressRouteUDPList{}) scheme.AddKnownTypes(ingressRouteUDPGVR.GroupVersion(), &IngressRouteUDP{}, &IngressRouteUDPList{})
scheme.AddKnownTypes(oldIngressrouteGVR.GroupVersion(), &IngressRoute{}, &IngressRouteList{}) scheme.AddKnownTypes(oldIngressRouteGVR.GroupVersion(), &IngressRoute{}, &IngressRouteList{})
scheme.AddKnownTypes(oldIngressrouteTCPGVR.GroupVersion(), &IngressRouteTCP{}, &IngressRouteTCPList{}) scheme.AddKnownTypes(oldIngressRouteTCPGVR.GroupVersion(), &IngressRouteTCP{}, &IngressRouteTCPList{})
scheme.AddKnownTypes(oldIngressrouteUDPGVR.GroupVersion(), &IngressRouteUDP{}, &IngressRouteUDPList{}) scheme.AddKnownTypes(oldIngressRouteUDPGVR.GroupVersion(), &IngressRouteUDP{}, &IngressRouteUDPList{})
fakeDynamicClient := fakeDynamic.NewSimpleDynamicClient(scheme) fakeDynamicClient := fakeDynamic.NewSimpleDynamicClient(scheme)
ir := unstructured.Unstructured{} ir := unstructured.Unstructured{}
@ -646,7 +646,7 @@ func TestTraefikProxyIngressRouteTCPEndpoints(t *testing.T) {
require.NoError(t, ir.UnmarshalJSON(ingressRouteAsJSON)) require.NoError(t, ir.UnmarshalJSON(ingressRouteAsJSON))
// Create proxy resources // Create proxy resources
_, err = fakeDynamicClient.Resource(ingressrouteTCPGVR).Namespace(defaultTraefikNamespace).Create(context.Background(), &ir, metav1.CreateOptions{}) _, err = fakeDynamicClient.Resource(ingressRouteTCPGVR).Namespace(defaultTraefikNamespace).Create(context.Background(), &ir, metav1.CreateOptions{})
require.NoError(t, err) require.NoError(t, err)
source, err := NewTraefikSource(context.TODO(), fakeDynamicClient, fakeKubernetesClient, defaultTraefikNamespace, "kubernetes.io/ingress.class=traefik", ti.ignoreHostnameAnnotation, false, false) source, err := NewTraefikSource(context.TODO(), fakeDynamicClient, fakeKubernetesClient, defaultTraefikNamespace, "kubernetes.io/ingress.class=traefik", ti.ignoreHostnameAnnotation, false, false)
@ -655,7 +655,7 @@ func TestTraefikProxyIngressRouteTCPEndpoints(t *testing.T) {
count := &unstructured.UnstructuredList{} count := &unstructured.UnstructuredList{}
for len(count.Items) < 1 { for len(count.Items) < 1 {
count, _ = fakeDynamicClient.Resource(ingressrouteTCPGVR).Namespace(defaultTraefikNamespace).List(context.Background(), metav1.ListOptions{}) count, _ = fakeDynamicClient.Resource(ingressRouteTCPGVR).Namespace(defaultTraefikNamespace).List(context.Background(), metav1.ListOptions{})
} }
endpoints, err := source.Endpoints(context.Background()) endpoints, err := source.Endpoints(context.Background())
@ -679,7 +679,7 @@ func TestTraefikProxyIngressRouteUDPEndpoints(t *testing.T) {
title: "IngressRouteTCP with hostname annotation", title: "IngressRouteTCP with hostname annotation",
ingressRouteUDP: IngressRouteUDP{ ingressRouteUDP: IngressRouteUDP{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: ingressrouteUDPGVR.GroupVersion().String(), APIVersion: ingressRouteUDPGVR.GroupVersion().String(),
Kind: "IngressRouteUDP", Kind: "IngressRouteUDP",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -709,7 +709,7 @@ func TestTraefikProxyIngressRouteUDPEndpoints(t *testing.T) {
title: "IngressRouteTCP with multiple hostname annotation", title: "IngressRouteTCP with multiple hostname annotation",
ingressRouteUDP: IngressRouteUDP{ ingressRouteUDP: IngressRouteUDP{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: ingressrouteUDPGVR.GroupVersion().String(), APIVersion: ingressRouteUDPGVR.GroupVersion().String(),
Kind: "IngressRouteUDP", Kind: "IngressRouteUDP",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -749,7 +749,7 @@ func TestTraefikProxyIngressRouteUDPEndpoints(t *testing.T) {
title: "IngressRouteTCP ignoring hostname annotation", title: "IngressRouteTCP ignoring hostname annotation",
ingressRouteUDP: IngressRouteUDP{ ingressRouteUDP: IngressRouteUDP{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: ingressrouteUDPGVR.GroupVersion().String(), APIVersion: ingressRouteUDPGVR.GroupVersion().String(),
Kind: "IngressRouteUDP", Kind: "IngressRouteUDP",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -772,12 +772,12 @@ func TestTraefikProxyIngressRouteUDPEndpoints(t *testing.T) {
fakeKubernetesClient := fakeKube.NewSimpleClientset() fakeKubernetesClient := fakeKube.NewSimpleClientset()
scheme := runtime.NewScheme() scheme := runtime.NewScheme()
scheme.AddKnownTypes(ingressrouteGVR.GroupVersion(), &IngressRoute{}, &IngressRouteList{}) scheme.AddKnownTypes(ingressRouteGVR.GroupVersion(), &IngressRoute{}, &IngressRouteList{})
scheme.AddKnownTypes(ingressrouteTCPGVR.GroupVersion(), &IngressRouteTCP{}, &IngressRouteTCPList{}) scheme.AddKnownTypes(ingressRouteTCPGVR.GroupVersion(), &IngressRouteTCP{}, &IngressRouteTCPList{})
scheme.AddKnownTypes(ingressrouteUDPGVR.GroupVersion(), &IngressRouteUDP{}, &IngressRouteUDPList{}) scheme.AddKnownTypes(ingressRouteUDPGVR.GroupVersion(), &IngressRouteUDP{}, &IngressRouteUDPList{})
scheme.AddKnownTypes(oldIngressrouteGVR.GroupVersion(), &IngressRoute{}, &IngressRouteList{}) scheme.AddKnownTypes(oldIngressRouteGVR.GroupVersion(), &IngressRoute{}, &IngressRouteList{})
scheme.AddKnownTypes(oldIngressrouteTCPGVR.GroupVersion(), &IngressRouteTCP{}, &IngressRouteTCPList{}) scheme.AddKnownTypes(oldIngressRouteTCPGVR.GroupVersion(), &IngressRouteTCP{}, &IngressRouteTCPList{})
scheme.AddKnownTypes(oldIngressrouteUDPGVR.GroupVersion(), &IngressRouteUDP{}, &IngressRouteUDPList{}) scheme.AddKnownTypes(oldIngressRouteUDPGVR.GroupVersion(), &IngressRouteUDP{}, &IngressRouteUDPList{})
fakeDynamicClient := fakeDynamic.NewSimpleDynamicClient(scheme) fakeDynamicClient := fakeDynamic.NewSimpleDynamicClient(scheme)
ir := unstructured.Unstructured{} ir := unstructured.Unstructured{}
@ -788,7 +788,7 @@ func TestTraefikProxyIngressRouteUDPEndpoints(t *testing.T) {
assert.NoError(t, ir.UnmarshalJSON(ingressRouteAsJSON)) assert.NoError(t, ir.UnmarshalJSON(ingressRouteAsJSON))
// Create proxy resources // Create proxy resources
_, err = fakeDynamicClient.Resource(ingressrouteUDPGVR).Namespace(defaultTraefikNamespace).Create(context.Background(), &ir, metav1.CreateOptions{}) _, err = fakeDynamicClient.Resource(ingressRouteUDPGVR).Namespace(defaultTraefikNamespace).Create(context.Background(), &ir, metav1.CreateOptions{})
assert.NoError(t, err) assert.NoError(t, err)
source, err := NewTraefikSource(context.TODO(), fakeDynamicClient, fakeKubernetesClient, defaultTraefikNamespace, "kubernetes.io/ingress.class=traefik", ti.ignoreHostnameAnnotation, false, false) source, err := NewTraefikSource(context.TODO(), fakeDynamicClient, fakeKubernetesClient, defaultTraefikNamespace, "kubernetes.io/ingress.class=traefik", ti.ignoreHostnameAnnotation, false, false)
@ -797,7 +797,7 @@ func TestTraefikProxyIngressRouteUDPEndpoints(t *testing.T) {
count := &unstructured.UnstructuredList{} count := &unstructured.UnstructuredList{}
for len(count.Items) < 1 { for len(count.Items) < 1 {
count, _ = fakeDynamicClient.Resource(ingressrouteUDPGVR).Namespace(defaultTraefikNamespace).List(context.Background(), metav1.ListOptions{}) count, _ = fakeDynamicClient.Resource(ingressRouteUDPGVR).Namespace(defaultTraefikNamespace).List(context.Background(), metav1.ListOptions{})
} }
endpoints, err := source.Endpoints(context.Background()) endpoints, err := source.Endpoints(context.Background())
@ -821,7 +821,7 @@ func TestTraefikProxyOldIngressRouteEndpoints(t *testing.T) {
title: "IngressRoute with hostname annotation", title: "IngressRoute with hostname annotation",
ingressRoute: IngressRoute{ ingressRoute: IngressRoute{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: oldIngressrouteGVR.GroupVersion().String(), APIVersion: oldIngressRouteGVR.GroupVersion().String(),
Kind: "IngressRoute", Kind: "IngressRoute",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -851,7 +851,7 @@ func TestTraefikProxyOldIngressRouteEndpoints(t *testing.T) {
title: "IngressRoute with host rule", title: "IngressRoute with host rule",
ingressRoute: IngressRoute{ ingressRoute: IngressRoute{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: oldIngressrouteGVR.GroupVersion().String(), APIVersion: oldIngressRouteGVR.GroupVersion().String(),
Kind: "IngressRoute", Kind: "IngressRoute",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -887,7 +887,7 @@ func TestTraefikProxyOldIngressRouteEndpoints(t *testing.T) {
title: "IngressRoute with hostheader rule", title: "IngressRoute with hostheader rule",
ingressRoute: IngressRoute{ ingressRoute: IngressRoute{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: oldIngressrouteGVR.GroupVersion().String(), APIVersion: oldIngressRouteGVR.GroupVersion().String(),
Kind: "IngressRoute", Kind: "IngressRoute",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -923,7 +923,7 @@ func TestTraefikProxyOldIngressRouteEndpoints(t *testing.T) {
title: "IngressRoute with multiple host rules", title: "IngressRoute with multiple host rules",
ingressRoute: IngressRoute{ ingressRoute: IngressRoute{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: oldIngressrouteGVR.GroupVersion().String(), APIVersion: oldIngressRouteGVR.GroupVersion().String(),
Kind: "IngressRoute", Kind: "IngressRoute",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -969,7 +969,7 @@ func TestTraefikProxyOldIngressRouteEndpoints(t *testing.T) {
title: "IngressRoute with multiple host rules and annotation", title: "IngressRoute with multiple host rules and annotation",
ingressRoute: IngressRoute{ ingressRoute: IngressRoute{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: oldIngressrouteGVR.GroupVersion().String(), APIVersion: oldIngressRouteGVR.GroupVersion().String(),
Kind: "IngressRoute", Kind: "IngressRoute",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -1026,7 +1026,7 @@ func TestTraefikProxyOldIngressRouteEndpoints(t *testing.T) {
title: "IngressRoute ignoring annotation", title: "IngressRoute ignoring annotation",
ingressRoute: IngressRoute{ ingressRoute: IngressRoute{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: oldIngressrouteGVR.GroupVersion().String(), APIVersion: oldIngressRouteGVR.GroupVersion().String(),
Kind: "IngressRoute", Kind: "IngressRoute",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -1074,7 +1074,7 @@ func TestTraefikProxyOldIngressRouteEndpoints(t *testing.T) {
title: "IngressRoute omit wildcard", title: "IngressRoute omit wildcard",
ingressRoute: IngressRoute{ ingressRoute: IngressRoute{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: oldIngressrouteGVR.GroupVersion().String(), APIVersion: oldIngressRouteGVR.GroupVersion().String(),
Kind: "IngressRoute", Kind: "IngressRoute",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -1102,12 +1102,12 @@ func TestTraefikProxyOldIngressRouteEndpoints(t *testing.T) {
fakeKubernetesClient := fakeKube.NewSimpleClientset() fakeKubernetesClient := fakeKube.NewSimpleClientset()
scheme := runtime.NewScheme() scheme := runtime.NewScheme()
scheme.AddKnownTypes(ingressrouteGVR.GroupVersion(), &IngressRoute{}, &IngressRouteList{}) scheme.AddKnownTypes(ingressRouteGVR.GroupVersion(), &IngressRoute{}, &IngressRouteList{})
scheme.AddKnownTypes(ingressrouteTCPGVR.GroupVersion(), &IngressRouteTCP{}, &IngressRouteTCPList{}) scheme.AddKnownTypes(ingressRouteTCPGVR.GroupVersion(), &IngressRouteTCP{}, &IngressRouteTCPList{})
scheme.AddKnownTypes(ingressrouteUDPGVR.GroupVersion(), &IngressRouteUDP{}, &IngressRouteUDPList{}) scheme.AddKnownTypes(ingressRouteUDPGVR.GroupVersion(), &IngressRouteUDP{}, &IngressRouteUDPList{})
scheme.AddKnownTypes(oldIngressrouteGVR.GroupVersion(), &IngressRoute{}, &IngressRouteList{}) scheme.AddKnownTypes(oldIngressRouteGVR.GroupVersion(), &IngressRoute{}, &IngressRouteList{})
scheme.AddKnownTypes(oldIngressrouteTCPGVR.GroupVersion(), &IngressRouteTCP{}, &IngressRouteTCPList{}) scheme.AddKnownTypes(oldIngressRouteTCPGVR.GroupVersion(), &IngressRouteTCP{}, &IngressRouteTCPList{})
scheme.AddKnownTypes(oldIngressrouteUDPGVR.GroupVersion(), &IngressRouteUDP{}, &IngressRouteUDPList{}) scheme.AddKnownTypes(oldIngressRouteUDPGVR.GroupVersion(), &IngressRouteUDP{}, &IngressRouteUDPList{})
fakeDynamicClient := fakeDynamic.NewSimpleDynamicClient(scheme) fakeDynamicClient := fakeDynamic.NewSimpleDynamicClient(scheme)
ir := unstructured.Unstructured{} ir := unstructured.Unstructured{}
@ -1118,7 +1118,7 @@ func TestTraefikProxyOldIngressRouteEndpoints(t *testing.T) {
assert.NoError(t, ir.UnmarshalJSON(ingressRouteAsJSON)) assert.NoError(t, ir.UnmarshalJSON(ingressRouteAsJSON))
// Create proxy resources // Create proxy resources
_, err = fakeDynamicClient.Resource(oldIngressrouteGVR).Namespace(defaultTraefikNamespace).Create(context.Background(), &ir, metav1.CreateOptions{}) _, err = fakeDynamicClient.Resource(oldIngressRouteGVR).Namespace(defaultTraefikNamespace).Create(context.Background(), &ir, metav1.CreateOptions{})
assert.NoError(t, err) assert.NoError(t, err)
source, err := NewTraefikSource(context.TODO(), fakeDynamicClient, fakeKubernetesClient, defaultTraefikNamespace, "kubernetes.io/ingress.class=traefik", ti.ignoreHostnameAnnotation, false, false) source, err := NewTraefikSource(context.TODO(), fakeDynamicClient, fakeKubernetesClient, defaultTraefikNamespace, "kubernetes.io/ingress.class=traefik", ti.ignoreHostnameAnnotation, false, false)
@ -1127,7 +1127,7 @@ func TestTraefikProxyOldIngressRouteEndpoints(t *testing.T) {
count := &unstructured.UnstructuredList{} count := &unstructured.UnstructuredList{}
for len(count.Items) < 1 { for len(count.Items) < 1 {
count, _ = fakeDynamicClient.Resource(oldIngressrouteGVR).Namespace(defaultTraefikNamespace).List(context.Background(), metav1.ListOptions{}) count, _ = fakeDynamicClient.Resource(oldIngressRouteGVR).Namespace(defaultTraefikNamespace).List(context.Background(), metav1.ListOptions{})
} }
endpoints, err := source.Endpoints(context.Background()) endpoints, err := source.Endpoints(context.Background())
@ -1151,7 +1151,7 @@ func TestTraefikProxyOldIngressRouteTCPEndpoints(t *testing.T) {
title: "IngressRouteTCP with hostname annotation", title: "IngressRouteTCP with hostname annotation",
ingressRouteTCP: IngressRouteTCP{ ingressRouteTCP: IngressRouteTCP{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: oldIngressrouteTCPGVR.GroupVersion().String(), APIVersion: oldIngressRouteTCPGVR.GroupVersion().String(),
Kind: "IngressRouteTCP", Kind: "IngressRouteTCP",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -1181,7 +1181,7 @@ func TestTraefikProxyOldIngressRouteTCPEndpoints(t *testing.T) {
title: "IngressRouteTCP with host sni rule", title: "IngressRouteTCP with host sni rule",
ingressRouteTCP: IngressRouteTCP{ ingressRouteTCP: IngressRouteTCP{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: oldIngressrouteTCPGVR.GroupVersion().String(), APIVersion: oldIngressRouteTCPGVR.GroupVersion().String(),
Kind: "IngressRouteTCP", Kind: "IngressRouteTCP",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -1217,7 +1217,7 @@ func TestTraefikProxyOldIngressRouteTCPEndpoints(t *testing.T) {
title: "IngressRouteTCP with multiple host sni rules", title: "IngressRouteTCP with multiple host sni rules",
ingressRouteTCP: IngressRouteTCP{ ingressRouteTCP: IngressRouteTCP{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: oldIngressrouteTCPGVR.GroupVersion().String(), APIVersion: oldIngressRouteTCPGVR.GroupVersion().String(),
Kind: "IngressRouteTCP", Kind: "IngressRouteTCP",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -1263,7 +1263,7 @@ func TestTraefikProxyOldIngressRouteTCPEndpoints(t *testing.T) {
title: "IngressRouteTCP with multiple host sni rules and annotation", title: "IngressRouteTCP with multiple host sni rules and annotation",
ingressRouteTCP: IngressRouteTCP{ ingressRouteTCP: IngressRouteTCP{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: oldIngressrouteTCPGVR.GroupVersion().String(), APIVersion: oldIngressRouteTCPGVR.GroupVersion().String(),
Kind: "IngressRouteTCP", Kind: "IngressRouteTCP",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -1320,7 +1320,7 @@ func TestTraefikProxyOldIngressRouteTCPEndpoints(t *testing.T) {
title: "IngressRouteTCP ignoring annotation", title: "IngressRouteTCP ignoring annotation",
ingressRouteTCP: IngressRouteTCP{ ingressRouteTCP: IngressRouteTCP{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: oldIngressrouteTCPGVR.GroupVersion().String(), APIVersion: oldIngressRouteTCPGVR.GroupVersion().String(),
Kind: "IngressRouteTCP", Kind: "IngressRouteTCP",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -1368,7 +1368,7 @@ func TestTraefikProxyOldIngressRouteTCPEndpoints(t *testing.T) {
title: "IngressRouteTCP omit wildcard host sni", title: "IngressRouteTCP omit wildcard host sni",
ingressRouteTCP: IngressRouteTCP{ ingressRouteTCP: IngressRouteTCP{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: oldIngressrouteTCPGVR.GroupVersion().String(), APIVersion: oldIngressRouteTCPGVR.GroupVersion().String(),
Kind: "IngressRouteTCP", Kind: "IngressRouteTCP",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -1396,12 +1396,12 @@ func TestTraefikProxyOldIngressRouteTCPEndpoints(t *testing.T) {
fakeKubernetesClient := fakeKube.NewSimpleClientset() fakeKubernetesClient := fakeKube.NewSimpleClientset()
scheme := runtime.NewScheme() scheme := runtime.NewScheme()
scheme.AddKnownTypes(ingressrouteGVR.GroupVersion(), &IngressRoute{}, &IngressRouteList{}) scheme.AddKnownTypes(ingressRouteGVR.GroupVersion(), &IngressRoute{}, &IngressRouteList{})
scheme.AddKnownTypes(ingressrouteTCPGVR.GroupVersion(), &IngressRouteTCP{}, &IngressRouteTCPList{}) scheme.AddKnownTypes(ingressRouteTCPGVR.GroupVersion(), &IngressRouteTCP{}, &IngressRouteTCPList{})
scheme.AddKnownTypes(ingressrouteUDPGVR.GroupVersion(), &IngressRouteUDP{}, &IngressRouteUDPList{}) scheme.AddKnownTypes(ingressRouteUDPGVR.GroupVersion(), &IngressRouteUDP{}, &IngressRouteUDPList{})
scheme.AddKnownTypes(oldIngressrouteGVR.GroupVersion(), &IngressRoute{}, &IngressRouteList{}) scheme.AddKnownTypes(oldIngressRouteGVR.GroupVersion(), &IngressRoute{}, &IngressRouteList{})
scheme.AddKnownTypes(oldIngressrouteTCPGVR.GroupVersion(), &IngressRouteTCP{}, &IngressRouteTCPList{}) scheme.AddKnownTypes(oldIngressRouteTCPGVR.GroupVersion(), &IngressRouteTCP{}, &IngressRouteTCPList{})
scheme.AddKnownTypes(oldIngressrouteUDPGVR.GroupVersion(), &IngressRouteUDP{}, &IngressRouteUDPList{}) scheme.AddKnownTypes(oldIngressRouteUDPGVR.GroupVersion(), &IngressRouteUDP{}, &IngressRouteUDPList{})
fakeDynamicClient := fakeDynamic.NewSimpleDynamicClient(scheme) fakeDynamicClient := fakeDynamic.NewSimpleDynamicClient(scheme)
ir := unstructured.Unstructured{} ir := unstructured.Unstructured{}
@ -1412,7 +1412,7 @@ func TestTraefikProxyOldIngressRouteTCPEndpoints(t *testing.T) {
assert.NoError(t, ir.UnmarshalJSON(ingressRouteAsJSON)) assert.NoError(t, ir.UnmarshalJSON(ingressRouteAsJSON))
// Create proxy resources // Create proxy resources
_, err = fakeDynamicClient.Resource(oldIngressrouteTCPGVR).Namespace(defaultTraefikNamespace).Create(context.Background(), &ir, metav1.CreateOptions{}) _, err = fakeDynamicClient.Resource(oldIngressRouteTCPGVR).Namespace(defaultTraefikNamespace).Create(context.Background(), &ir, metav1.CreateOptions{})
assert.NoError(t, err) assert.NoError(t, err)
source, err := NewTraefikSource(context.TODO(), fakeDynamicClient, fakeKubernetesClient, defaultTraefikNamespace, "kubernetes.io/ingress.class=traefik", ti.ignoreHostnameAnnotation, false, false) source, err := NewTraefikSource(context.TODO(), fakeDynamicClient, fakeKubernetesClient, defaultTraefikNamespace, "kubernetes.io/ingress.class=traefik", ti.ignoreHostnameAnnotation, false, false)
@ -1421,7 +1421,7 @@ func TestTraefikProxyOldIngressRouteTCPEndpoints(t *testing.T) {
count := &unstructured.UnstructuredList{} count := &unstructured.UnstructuredList{}
for len(count.Items) < 1 { for len(count.Items) < 1 {
count, _ = fakeDynamicClient.Resource(oldIngressrouteTCPGVR).Namespace(defaultTraefikNamespace).List(context.Background(), metav1.ListOptions{}) count, _ = fakeDynamicClient.Resource(oldIngressRouteTCPGVR).Namespace(defaultTraefikNamespace).List(context.Background(), metav1.ListOptions{})
} }
endpoints, err := source.Endpoints(context.Background()) endpoints, err := source.Endpoints(context.Background())
@ -1445,7 +1445,7 @@ func TestTraefikProxyOldIngressRouteUDPEndpoints(t *testing.T) {
title: "IngressRouteTCP with hostname annotation", title: "IngressRouteTCP with hostname annotation",
ingressRouteUDP: IngressRouteUDP{ ingressRouteUDP: IngressRouteUDP{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: oldIngressrouteUDPGVR.GroupVersion().String(), APIVersion: oldIngressRouteUDPGVR.GroupVersion().String(),
Kind: "IngressRouteUDP", Kind: "IngressRouteUDP",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -1475,7 +1475,7 @@ func TestTraefikProxyOldIngressRouteUDPEndpoints(t *testing.T) {
title: "IngressRouteTCP with multiple hostname annotation", title: "IngressRouteTCP with multiple hostname annotation",
ingressRouteUDP: IngressRouteUDP{ ingressRouteUDP: IngressRouteUDP{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: oldIngressrouteUDPGVR.GroupVersion().String(), APIVersion: oldIngressRouteUDPGVR.GroupVersion().String(),
Kind: "IngressRouteUDP", Kind: "IngressRouteUDP",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -1515,7 +1515,7 @@ func TestTraefikProxyOldIngressRouteUDPEndpoints(t *testing.T) {
title: "IngressRouteTCP ignoring hostname annotation", title: "IngressRouteTCP ignoring hostname annotation",
ingressRouteUDP: IngressRouteUDP{ ingressRouteUDP: IngressRouteUDP{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: oldIngressrouteUDPGVR.GroupVersion().String(), APIVersion: oldIngressRouteUDPGVR.GroupVersion().String(),
Kind: "IngressRouteUDP", Kind: "IngressRouteUDP",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -1538,12 +1538,12 @@ func TestTraefikProxyOldIngressRouteUDPEndpoints(t *testing.T) {
fakeKubernetesClient := fakeKube.NewSimpleClientset() fakeKubernetesClient := fakeKube.NewSimpleClientset()
scheme := runtime.NewScheme() scheme := runtime.NewScheme()
scheme.AddKnownTypes(ingressrouteGVR.GroupVersion(), &IngressRoute{}, &IngressRouteList{}) scheme.AddKnownTypes(ingressRouteGVR.GroupVersion(), &IngressRoute{}, &IngressRouteList{})
scheme.AddKnownTypes(ingressrouteTCPGVR.GroupVersion(), &IngressRouteTCP{}, &IngressRouteTCPList{}) scheme.AddKnownTypes(ingressRouteTCPGVR.GroupVersion(), &IngressRouteTCP{}, &IngressRouteTCPList{})
scheme.AddKnownTypes(ingressrouteUDPGVR.GroupVersion(), &IngressRouteUDP{}, &IngressRouteUDPList{}) scheme.AddKnownTypes(ingressRouteUDPGVR.GroupVersion(), &IngressRouteUDP{}, &IngressRouteUDPList{})
scheme.AddKnownTypes(oldIngressrouteGVR.GroupVersion(), &IngressRoute{}, &IngressRouteList{}) scheme.AddKnownTypes(oldIngressRouteGVR.GroupVersion(), &IngressRoute{}, &IngressRouteList{})
scheme.AddKnownTypes(oldIngressrouteTCPGVR.GroupVersion(), &IngressRouteTCP{}, &IngressRouteTCPList{}) scheme.AddKnownTypes(oldIngressRouteTCPGVR.GroupVersion(), &IngressRouteTCP{}, &IngressRouteTCPList{})
scheme.AddKnownTypes(oldIngressrouteUDPGVR.GroupVersion(), &IngressRouteUDP{}, &IngressRouteUDPList{}) scheme.AddKnownTypes(oldIngressRouteUDPGVR.GroupVersion(), &IngressRouteUDP{}, &IngressRouteUDPList{})
fakeDynamicClient := fakeDynamic.NewSimpleDynamicClient(scheme) fakeDynamicClient := fakeDynamic.NewSimpleDynamicClient(scheme)
ir := unstructured.Unstructured{} ir := unstructured.Unstructured{}
@ -1554,7 +1554,7 @@ func TestTraefikProxyOldIngressRouteUDPEndpoints(t *testing.T) {
assert.NoError(t, ir.UnmarshalJSON(ingressRouteAsJSON)) assert.NoError(t, ir.UnmarshalJSON(ingressRouteAsJSON))
// Create proxy resources // Create proxy resources
_, err = fakeDynamicClient.Resource(oldIngressrouteUDPGVR).Namespace(defaultTraefikNamespace).Create(context.Background(), &ir, metav1.CreateOptions{}) _, err = fakeDynamicClient.Resource(oldIngressRouteUDPGVR).Namespace(defaultTraefikNamespace).Create(context.Background(), &ir, metav1.CreateOptions{})
assert.NoError(t, err) assert.NoError(t, err)
source, err := NewTraefikSource(context.TODO(), fakeDynamicClient, fakeKubernetesClient, defaultTraefikNamespace, "kubernetes.io/ingress.class=traefik", ti.ignoreHostnameAnnotation, false, false) source, err := NewTraefikSource(context.TODO(), fakeDynamicClient, fakeKubernetesClient, defaultTraefikNamespace, "kubernetes.io/ingress.class=traefik", ti.ignoreHostnameAnnotation, false, false)
@ -1563,7 +1563,7 @@ func TestTraefikProxyOldIngressRouteUDPEndpoints(t *testing.T) {
count := &unstructured.UnstructuredList{} count := &unstructured.UnstructuredList{}
for len(count.Items) < 1 { for len(count.Items) < 1 {
count, _ = fakeDynamicClient.Resource(oldIngressrouteUDPGVR).Namespace(defaultTraefikNamespace).List(context.Background(), metav1.ListOptions{}) count, _ = fakeDynamicClient.Resource(oldIngressRouteUDPGVR).Namespace(defaultTraefikNamespace).List(context.Background(), metav1.ListOptions{})
} }
endpoints, err := source.Endpoints(context.Background()) endpoints, err := source.Endpoints(context.Background())
@ -1590,7 +1590,7 @@ func TestTraefikAPIGroupDisableFlags(t *testing.T) {
title: "IngressRoute.traefik.containo.us with the legacy API group enabled", title: "IngressRoute.traefik.containo.us with the legacy API group enabled",
ingressRoute: IngressRoute{ ingressRoute: IngressRoute{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: oldIngressrouteGVR.GroupVersion().String(), APIVersion: oldIngressRouteGVR.GroupVersion().String(),
Kind: "IngressRoute", Kind: "IngressRoute",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -1603,7 +1603,7 @@ func TestTraefikAPIGroupDisableFlags(t *testing.T) {
}, },
}, },
}, },
gvr: oldIngressrouteGVR, gvr: oldIngressRouteGVR,
disableLegacy: false, disableLegacy: false,
disableNew: false, disableNew: false,
expected: []*endpoint.Endpoint{ expected: []*endpoint.Endpoint{
@ -1623,7 +1623,7 @@ func TestTraefikAPIGroupDisableFlags(t *testing.T) {
title: "IngressRoute.traefik.containo.us with the legacy API group disabled", title: "IngressRoute.traefik.containo.us with the legacy API group disabled",
ingressRoute: IngressRoute{ ingressRoute: IngressRoute{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: oldIngressrouteGVR.GroupVersion().String(), APIVersion: oldIngressRouteGVR.GroupVersion().String(),
Kind: "IngressRoute", Kind: "IngressRoute",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -1636,7 +1636,7 @@ func TestTraefikAPIGroupDisableFlags(t *testing.T) {
}, },
}, },
}, },
gvr: oldIngressrouteGVR, gvr: oldIngressRouteGVR,
disableLegacy: true, disableLegacy: true,
disableNew: false, disableNew: false,
}, },
@ -1644,7 +1644,7 @@ func TestTraefikAPIGroupDisableFlags(t *testing.T) {
title: "IngressRoute.traefik.io with the new API group enabled", title: "IngressRoute.traefik.io with the new API group enabled",
ingressRoute: IngressRoute{ ingressRoute: IngressRoute{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: ingressrouteGVR.GroupVersion().String(), APIVersion: ingressRouteGVR.GroupVersion().String(),
Kind: "IngressRoute", Kind: "IngressRoute",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -1657,7 +1657,7 @@ func TestTraefikAPIGroupDisableFlags(t *testing.T) {
}, },
}, },
}, },
gvr: ingressrouteGVR, gvr: ingressRouteGVR,
disableLegacy: false, disableLegacy: false,
disableNew: false, disableNew: false,
expected: []*endpoint.Endpoint{ expected: []*endpoint.Endpoint{
@ -1677,7 +1677,7 @@ func TestTraefikAPIGroupDisableFlags(t *testing.T) {
title: "IngressRoute.traefik.io with the new API group disabled", title: "IngressRoute.traefik.io with the new API group disabled",
ingressRoute: IngressRoute{ ingressRoute: IngressRoute{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: ingressrouteGVR.GroupVersion().String(), APIVersion: ingressRouteGVR.GroupVersion().String(),
Kind: "IngressRoute", Kind: "IngressRoute",
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -1690,7 +1690,7 @@ func TestTraefikAPIGroupDisableFlags(t *testing.T) {
}, },
}, },
}, },
gvr: ingressrouteGVR, gvr: ingressRouteGVR,
disableLegacy: false, disableLegacy: false,
disableNew: true, disableNew: true,
}, },
@ -1701,12 +1701,12 @@ func TestTraefikAPIGroupDisableFlags(t *testing.T) {
fakeKubernetesClient := fakeKube.NewSimpleClientset() fakeKubernetesClient := fakeKube.NewSimpleClientset()
scheme := runtime.NewScheme() scheme := runtime.NewScheme()
scheme.AddKnownTypes(ingressrouteGVR.GroupVersion(), &IngressRoute{}, &IngressRouteList{}) scheme.AddKnownTypes(ingressRouteGVR.GroupVersion(), &IngressRoute{}, &IngressRouteList{})
scheme.AddKnownTypes(ingressrouteTCPGVR.GroupVersion(), &IngressRouteTCP{}, &IngressRouteTCPList{}) scheme.AddKnownTypes(ingressRouteTCPGVR.GroupVersion(), &IngressRouteTCP{}, &IngressRouteTCPList{})
scheme.AddKnownTypes(ingressrouteUDPGVR.GroupVersion(), &IngressRouteUDP{}, &IngressRouteUDPList{}) scheme.AddKnownTypes(ingressRouteUDPGVR.GroupVersion(), &IngressRouteUDP{}, &IngressRouteUDPList{})
scheme.AddKnownTypes(oldIngressrouteGVR.GroupVersion(), &IngressRoute{}, &IngressRouteList{}) scheme.AddKnownTypes(oldIngressRouteGVR.GroupVersion(), &IngressRoute{}, &IngressRouteList{})
scheme.AddKnownTypes(oldIngressrouteTCPGVR.GroupVersion(), &IngressRouteTCP{}, &IngressRouteTCPList{}) scheme.AddKnownTypes(oldIngressRouteTCPGVR.GroupVersion(), &IngressRouteTCP{}, &IngressRouteTCPList{})
scheme.AddKnownTypes(oldIngressrouteUDPGVR.GroupVersion(), &IngressRouteUDP{}, &IngressRouteUDPList{}) scheme.AddKnownTypes(oldIngressRouteUDPGVR.GroupVersion(), &IngressRouteUDP{}, &IngressRouteUDPList{})
fakeDynamicClient := fakeDynamic.NewSimpleDynamicClient(scheme) fakeDynamicClient := fakeDynamic.NewSimpleDynamicClient(scheme)
ir := unstructured.Unstructured{} ir := unstructured.Unstructured{}