mirror of
https://github.com/kubernetes-sigs/external-dns.git
synced 2025-08-06 09:36:58 +02:00
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:
parent
9f16d835f1
commit
5a321b6fb6
@ -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) |
|
||||||
|
18
docs/snippets/traefik-proxy/ingress-route-default.yaml
Normal file
18
docs/snippets/traefik-proxy/ingress-route-default.yaml
Normal 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
|
@ -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
|
@ -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
|
59
docs/snippets/traefik-proxy/with-cluster-rbac.yaml
Normal file
59
docs/snippets/traefik-proxy/with-cluster-rbac.yaml
Normal 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
|
24
docs/snippets/traefik-proxy/without-rbac.yaml
Normal file
24
docs/snippets/traefik-proxy/without-rbac.yaml
Normal 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
|
@ -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
|
||||||
|
@ -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)
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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{}
|
||||||
|
Loading…
Reference in New Issue
Block a user