Remove support of the networking.k8s.io/v1beta1 APIVersion
This commit is contained in:
parent
5fd6913ee5
commit
4fbe9b81ec
248 changed files with 2614 additions and 3640 deletions
|
@ -33,6 +33,10 @@ linters-settings:
|
||||||
desc: not allowed
|
desc: not allowed
|
||||||
- pkg: "github.com/pkg/errors"
|
- pkg: "github.com/pkg/errors"
|
||||||
desc: Should be replaced by standard lib errors package
|
desc: Should be replaced by standard lib errors package
|
||||||
|
- pkg: "k8s.io/api/networking/v1beta1"
|
||||||
|
desc: This API is deprecated
|
||||||
|
- pkg: "k8s.io/api/extensions/v1beta1"
|
||||||
|
desc: This API is deprecated
|
||||||
godox:
|
godox:
|
||||||
keywords:
|
keywords:
|
||||||
- FIXME
|
- FIXME
|
||||||
|
@ -47,14 +51,10 @@ linters-settings:
|
||||||
pkg: "k8s.io/api/core/v1"
|
pkg: "k8s.io/api/core/v1"
|
||||||
- alias: netv1
|
- alias: netv1
|
||||||
pkg: "k8s.io/api/networking/v1"
|
pkg: "k8s.io/api/networking/v1"
|
||||||
- alias: netv1beta1
|
|
||||||
pkg: "k8s.io/api/networking/v1beta1"
|
|
||||||
- alias: admv1
|
- alias: admv1
|
||||||
pkg: "k8s.io/api/admission/v1"
|
pkg: "k8s.io/api/admission/v1"
|
||||||
- alias: admv1beta1
|
- alias: admv1beta1
|
||||||
pkg: "k8s.io/api/admission/v1beta1"
|
pkg: "k8s.io/api/admission/v1beta1"
|
||||||
- alias: extv1beta1
|
|
||||||
pkg: "k8s.io/api/extensions/v1beta1"
|
|
||||||
- alias: metav1
|
- alias: metav1
|
||||||
pkg: "k8s.io/apimachinery/pkg/apis/meta/v1"
|
pkg: "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
- alias: ktypes
|
- alias: ktypes
|
||||||
|
|
|
@ -3,11 +3,16 @@
|
||||||
This page is maintained and updated periodically to reflect our roadmap and any decisions around feature deprecation.
|
This page is maintained and updated periodically to reflect our roadmap and any decisions around feature deprecation.
|
||||||
|
|
||||||
| Feature | Deprecated | End of Support | Removal |
|
| Feature | Deprecated | End of Support | Removal |
|
||||||
|-----------------------------------------------------------------------------------------------------|------------|----------------|---------|
|
|----------------------------------------------------------------------------------------------------------------------|------------|----------------|---------|
|
||||||
| [Kubernetes CRDs API Version `traefik.io/v1alpha1`](#kubernetes-crds-api-version-traefikiov1alpha1) | N/A | N/A | 3.0 |
|
| [Kubernetes CRDs API Version `traefik.io/v1alpha1`](#kubernetes-crds-api-version-traefikiov1alpha1) | N/A | N/A | 3.0 |
|
||||||
|
| [Kubernetes Ingress API Version `networking.k8s.io/v1beta1`](#kubernetes-ingress-api-version-networkingk8siov1beta1) | N/A | N/A | 3.0 |
|
||||||
|
|
||||||
## Impact
|
## Impact
|
||||||
|
|
||||||
### Kubernetes CRDs API Version `traefik.io/v1alpha1`
|
### Kubernetes CRDs API Version `traefik.io/v1alpha1`
|
||||||
|
|
||||||
The newly introduced Kubernetes CRD API Version `traefik.io/v1alpha1` will subsequently be removed in Traefik v3. The following version will be `traefik.io/v1`.
|
The newly introduced Kubernetes CRD API Version `traefik.io/v1alpha1` will subsequently be removed in Traefik v3. The following version will be `traefik.io/v1`.
|
||||||
|
|
||||||
|
### Kubernetes Ingress API Version `networking.k8s.io/v1beta1`
|
||||||
|
|
||||||
|
The Kubernetes Ingress API Version `networking.k8s.io/v1beta1` is removed in v3. Please use the API Group `networking.k8s.io/v1` instead.
|
||||||
|
|
|
@ -85,7 +85,7 @@ In v3, the InfluxDB v1 metrics provider has been removed because InfluxDB v1.x m
|
||||||
|
|
||||||
### Kubernetes CRDs API Group `traefik.containo.us`
|
### Kubernetes CRDs API Group `traefik.containo.us`
|
||||||
|
|
||||||
In v3 the Kubernetes CRDs API Group `traefik.containo.us` has been removed.
|
In v3, the Kubernetes CRDs API Group `traefik.containo.us` has been removed.
|
||||||
Please use the API Group `traefik.io` instead.
|
Please use the API Group `traefik.io` instead.
|
||||||
|
|
||||||
## Docker & Docker Swarm
|
## Docker & Docker Swarm
|
||||||
|
@ -94,3 +94,10 @@ In v3, the provider Docker has been split into 2 providers:
|
||||||
|
|
||||||
- Docker provider (without Swarm support)
|
- Docker provider (without Swarm support)
|
||||||
- Swarm provider (Swarm support only)
|
- Swarm provider (Swarm support only)
|
||||||
|
|
||||||
|
### Kubernetes Ingress API Group `networking.k8s.io/v1beta1`
|
||||||
|
|
||||||
|
As v3 is targeting support for Kubernetes v1.23+,
|
||||||
|
the Kubernetes Ingress API Group `networking.k8s.io/v1beta1` ([removed since Kubernetes v1.22](https://kubernetes.io/docs/reference/using-api/deprecation-guide/#ingress-v122)) support has been removed.
|
||||||
|
|
||||||
|
Please use the API Group `networking.k8s.io/v1` instead.
|
||||||
|
|
|
@ -13,7 +13,7 @@ it manages access to cluster services by supporting the [Ingress](https://kubern
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
Traefik supports `1.14+` Kubernetes clusters.
|
Traefik supports `1.23+` Kubernetes clusters.
|
||||||
|
|
||||||
## Routing Configuration
|
## Routing Configuration
|
||||||
|
|
||||||
|
@ -68,28 +68,6 @@ spec:
|
||||||
number: 80
|
number: 80
|
||||||
```
|
```
|
||||||
|
|
||||||
```yaml tab="Ingress v1beta1 (deprecated)"
|
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
name: foo
|
|
||||||
namespace: production
|
|
||||||
|
|
||||||
spec:
|
|
||||||
rules:
|
|
||||||
- host: example.net
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /bar
|
|
||||||
backend:
|
|
||||||
serviceName: service1
|
|
||||||
servicePort: 80
|
|
||||||
- path: /foo
|
|
||||||
backend:
|
|
||||||
serviceName: service1
|
|
||||||
servicePort: 80
|
|
||||||
```
|
|
||||||
|
|
||||||
## LetsEncrypt Support with the Ingress Provider
|
## LetsEncrypt Support with the Ingress Provider
|
||||||
|
|
||||||
By design, Traefik is a stateless application,
|
By design, Traefik is a stateless application,
|
||||||
|
@ -257,46 +235,7 @@ Value of `kubernetes.io/ingress.class` annotation that identifies Ingress object
|
||||||
If the parameter is set, only Ingresses containing an annotation with the same value are processed.
|
If the parameter is set, only Ingresses containing an annotation with the same value are processed.
|
||||||
Otherwise, Ingresses missing the annotation, having an empty value, or the value `traefik` are processed.
|
Otherwise, Ingresses missing the annotation, having an empty value, or the value `traefik` are processed.
|
||||||
|
|
||||||
??? info "Kubernetes 1.18+"
|
??? info "Example"
|
||||||
|
|
||||||
If the Kubernetes cluster version is 1.18+,
|
|
||||||
the new `IngressClass` resource can be leveraged to identify Ingress objects that should be processed.
|
|
||||||
In that case, Traefik will look for an `IngressClass` in the cluster with the controller value equal to *traefik.io/ingress-controller*.
|
|
||||||
|
|
||||||
In addition to the controller value matching mechanism, the property `ingressClass` (if set) will be used to select IngressClasses by applying a strict matching on their name.
|
|
||||||
|
|
||||||
Please see [this article](https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/) for more information or the example below.
|
|
||||||
|
|
||||||
```yaml tab="IngressClass"
|
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
|
||||||
kind: IngressClass
|
|
||||||
metadata:
|
|
||||||
name: traefik-lb
|
|
||||||
spec:
|
|
||||||
controller: traefik.io/ingress-controller
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="Ingress"
|
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
name: example-ingress
|
|
||||||
spec:
|
|
||||||
ingressClassName: traefik-lb
|
|
||||||
rules:
|
|
||||||
- host: "*.example.com"
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /example
|
|
||||||
backend:
|
|
||||||
serviceName: example-service
|
|
||||||
servicePort: 80
|
|
||||||
```
|
|
||||||
|
|
||||||
??? info "Kubernetes 1.19+"
|
|
||||||
|
|
||||||
If the Kubernetes cluster version is 1.19+,
|
|
||||||
prefer using the `networking.k8s.io/v1` [apiVersion](https://v1-19.docs.kubernetes.io/docs/setup/release/notes/#api-change) of `Ingress` and `IngressClass`.
|
|
||||||
|
|
||||||
```yaml tab="IngressClass"
|
```yaml tab="IngressClass"
|
||||||
apiVersion: networking.k8s.io/v1
|
apiVersion: networking.k8s.io/v1
|
||||||
|
|
|
@ -97,29 +97,6 @@ which in turn will create the resulting routers, services, handlers, etc.
|
||||||
number: 80
|
number: 80
|
||||||
```
|
```
|
||||||
|
|
||||||
```yaml tab="Ingress v1beta1 (deprecated)"
|
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
name: myingress
|
|
||||||
annotations:
|
|
||||||
traefik.ingress.kubernetes.io/router.entrypoints: web
|
|
||||||
|
|
||||||
spec:
|
|
||||||
rules:
|
|
||||||
- host: example.com
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /bar
|
|
||||||
backend:
|
|
||||||
serviceName: whoami
|
|
||||||
servicePort: 80
|
|
||||||
- path: /foo
|
|
||||||
backend:
|
|
||||||
serviceName: whoami
|
|
||||||
servicePort: 80
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="Traefik"
|
```yaml tab="Traefik"
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: ServiceAccount
|
kind: ServiceAccount
|
||||||
|
@ -500,29 +477,6 @@ This way, any Ingress attached to this Entrypoint will have TLS termination by d
|
||||||
number: 80
|
number: 80
|
||||||
```
|
```
|
||||||
|
|
||||||
```yaml tab="Ingress v1beta1 (deprecated)"
|
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
name: myingress
|
|
||||||
annotations:
|
|
||||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
|
||||||
|
|
||||||
spec:
|
|
||||||
rules:
|
|
||||||
- host: example.com
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /bar
|
|
||||||
backend:
|
|
||||||
serviceName: whoami
|
|
||||||
servicePort: 80
|
|
||||||
- path: /foo
|
|
||||||
backend:
|
|
||||||
serviceName: whoami
|
|
||||||
servicePort: 80
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="Traefik"
|
```yaml tab="Traefik"
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: ServiceAccount
|
kind: ServiceAccount
|
||||||
|
@ -709,30 +663,6 @@ For more options, please refer to the available [annotations](#on-ingress).
|
||||||
number: 80
|
number: 80
|
||||||
```
|
```
|
||||||
|
|
||||||
```yaml tab="Ingress v1beta1 (deprecated)"
|
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
name: myingress
|
|
||||||
annotations:
|
|
||||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
|
||||||
traefik.ingress.kubernetes.io/router.tls: true
|
|
||||||
|
|
||||||
spec:
|
|
||||||
rules:
|
|
||||||
- host: example.com
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /bar
|
|
||||||
backend:
|
|
||||||
serviceName: whoami
|
|
||||||
servicePort: 80
|
|
||||||
- path: /foo
|
|
||||||
backend:
|
|
||||||
serviceName: whoami
|
|
||||||
servicePort: 80
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="Traefik"
|
```yaml tab="Traefik"
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: ServiceAccount
|
kind: ServiceAccount
|
||||||
|
@ -856,29 +786,6 @@ For more options, please refer to the available [annotations](#on-ingress).
|
||||||
- secretName: supersecret
|
- secretName: supersecret
|
||||||
```
|
```
|
||||||
|
|
||||||
```yaml tab="Ingress v1beta1 (deprecated)"
|
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
name: foo
|
|
||||||
namespace: production
|
|
||||||
|
|
||||||
spec:
|
|
||||||
rules:
|
|
||||||
- host: example.net
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /bar
|
|
||||||
backend:
|
|
||||||
serviceName: service1
|
|
||||||
servicePort: 80
|
|
||||||
# Only selects which certificate(s) should be loaded from the secret, in order to terminate TLS.
|
|
||||||
# Doesn't enable TLS for that ingress (hence for the underlying router).
|
|
||||||
# Please see the TLS annotations on ingress made for that purpose.
|
|
||||||
tls:
|
|
||||||
- secretName: supersecret
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="Secret"
|
```yaml tab="Secret"
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: Secret
|
kind: Secret
|
||||||
|
@ -947,18 +854,6 @@ spec:
|
||||||
number: 80
|
number: 80
|
||||||
```
|
```
|
||||||
|
|
||||||
```yaml tab="Ingress v1beta1 (deprecated)"
|
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
name: cheese
|
|
||||||
|
|
||||||
spec:
|
|
||||||
defaultBackend:
|
|
||||||
serviceName: stilton
|
|
||||||
serverPort: 80
|
|
||||||
```
|
|
||||||
|
|
||||||
This ingress follows the Global Default Backend property of ingresses.
|
This ingress follows the Global Default Backend property of ingresses.
|
||||||
This will allow users to create a "default router" that will match all unmatched requests.
|
This will allow users to create a "default router" that will match all unmatched requests.
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
apiVersion: networking.k8s.io/v1
|
||||||
kind: Ingress
|
kind: Ingress
|
||||||
metadata:
|
metadata:
|
||||||
name: test.ingress.https
|
name: test.ingress.https
|
||||||
|
@ -11,7 +11,10 @@ spec:
|
||||||
paths:
|
paths:
|
||||||
- path: /whoami
|
- path: /whoami
|
||||||
backend:
|
backend:
|
||||||
serviceName: whoami
|
service:
|
||||||
servicePort: http
|
name: whoami
|
||||||
|
port:
|
||||||
|
name: http
|
||||||
|
pathType: Prefix
|
||||||
tls:
|
tls:
|
||||||
- secretName: tls-cert
|
- secretName: tls-cert
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
apiVersion: networking.k8s.io/v1
|
||||||
kind: Ingress
|
kind: Ingress
|
||||||
metadata:
|
metadata:
|
||||||
name: test.ingress
|
name: test.ingress
|
||||||
|
@ -13,5 +13,8 @@ spec:
|
||||||
paths:
|
paths:
|
||||||
- path: /whoami
|
- path: /whoami
|
||||||
backend:
|
backend:
|
||||||
serviceName: whoami
|
service:
|
||||||
servicePort: http
|
name: whoami
|
||||||
|
port:
|
||||||
|
name: http
|
||||||
|
pathType: Prefix
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
apiVersion: networking.k8s.io/v1
|
||||||
kind: IngressClass
|
kind: IngressClass
|
||||||
metadata:
|
metadata:
|
||||||
name: traefik-keep
|
name: traefik-keep
|
||||||
|
@ -7,7 +7,7 @@ spec:
|
||||||
|
|
||||||
---
|
---
|
||||||
kind: Ingress
|
kind: Ingress
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
apiVersion: networking.k8s.io/v1
|
||||||
metadata:
|
metadata:
|
||||||
name: "whoami-keep-route"
|
name: "whoami-keep-route"
|
||||||
spec:
|
spec:
|
||||||
|
@ -18,11 +18,14 @@ spec:
|
||||||
paths:
|
paths:
|
||||||
- path: "/keep"
|
- path: "/keep"
|
||||||
backend:
|
backend:
|
||||||
serviceName: "whoami"
|
service:
|
||||||
servicePort: 80
|
name: whoami
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
pathType: Prefix
|
||||||
|
|
||||||
---
|
---
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
apiVersion: networking.k8s.io/v1
|
||||||
kind: IngressClass
|
kind: IngressClass
|
||||||
metadata:
|
metadata:
|
||||||
name: traefik-drop
|
name: traefik-drop
|
||||||
|
@ -31,7 +34,7 @@ spec:
|
||||||
|
|
||||||
---
|
---
|
||||||
kind: Ingress
|
kind: Ingress
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
apiVersion: networking.k8s.io/v1
|
||||||
metadata:
|
metadata:
|
||||||
name: "whoami-drop-route"
|
name: "whoami-drop-route"
|
||||||
spec:
|
spec:
|
||||||
|
@ -42,11 +45,14 @@ spec:
|
||||||
paths:
|
paths:
|
||||||
- path: "/drop"
|
- path: "/drop"
|
||||||
backend:
|
backend:
|
||||||
serviceName: "whoami"
|
service:
|
||||||
servicePort: 80
|
name: whoami
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
pathType: Prefix
|
||||||
|
|
||||||
---
|
---
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
apiVersion: networking.k8s.io/v1
|
||||||
kind: IngressClass
|
kind: IngressClass
|
||||||
metadata:
|
metadata:
|
||||||
name: traefik-not-ingress-controller
|
name: traefik-not-ingress-controller
|
||||||
|
@ -55,7 +61,7 @@ spec:
|
||||||
|
|
||||||
---
|
---
|
||||||
kind: Ingress
|
kind: Ingress
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
apiVersion: networking.k8s.io/v1
|
||||||
metadata:
|
metadata:
|
||||||
name: "whoami-drop-ingress"
|
name: "whoami-drop-ingress"
|
||||||
spec:
|
spec:
|
||||||
|
@ -66,5 +72,8 @@ spec:
|
||||||
paths:
|
paths:
|
||||||
- path: "/ingress"
|
- path: "/ingress"
|
||||||
backend:
|
backend:
|
||||||
serviceName: "whoami"
|
service:
|
||||||
servicePort: 80
|
name: whoami
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
pathType: Prefix
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
version: "3.8"
|
version: "3.8"
|
||||||
services:
|
services:
|
||||||
server:
|
server:
|
||||||
image: rancher/k3s:v1.20.15-k3s1
|
image: rancher/k3s:v1.23.17-k3s1
|
||||||
command: server --disable-agent --no-deploy coredns --no-deploy servicelb --no-deploy traefik --no-deploy local-storage --no-deploy metrics-server --log /output/k3s.log --bind-address=server --tls-san=server
|
command: server --disable-agent --no-deploy coredns --no-deploy servicelb --no-deploy traefik --no-deploy local-storage --no-deploy metrics-server --log /output/k3s.log --bind-address=server --tls-san=server
|
||||||
environment:
|
environment:
|
||||||
K3S_CLUSTER_SECRET: somethingtotallyrandom
|
K3S_CLUSTER_SECRET: somethingtotallyrandom
|
||||||
|
@ -12,7 +12,7 @@ services:
|
||||||
- ./fixtures/k8s:/var/lib/rancher/k3s/server/manifests
|
- ./fixtures/k8s:/var/lib/rancher/k3s/server/manifests
|
||||||
|
|
||||||
node:
|
node:
|
||||||
image: rancher/k3s:v1.20.15-k3s1
|
image: rancher/k3s:v1.23.17-k3s1
|
||||||
privileged: true
|
privileged: true
|
||||||
environment:
|
environment:
|
||||||
K3S_URL: https://server:6443
|
K3S_URL: https://server:6443
|
||||||
|
|
|
@ -15,11 +15,9 @@ import (
|
||||||
traefikversion "github.com/traefik/traefik/v3/pkg/version"
|
traefikversion "github.com/traefik/traefik/v3/pkg/version"
|
||||||
corev1 "k8s.io/api/core/v1"
|
corev1 "k8s.io/api/core/v1"
|
||||||
netv1 "k8s.io/api/networking/v1"
|
netv1 "k8s.io/api/networking/v1"
|
||||||
netv1beta1 "k8s.io/api/networking/v1beta1"
|
|
||||||
kerror "k8s.io/apimachinery/pkg/api/errors"
|
kerror "k8s.io/apimachinery/pkg/api/errors"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/labels"
|
"k8s.io/apimachinery/pkg/labels"
|
||||||
"k8s.io/apimachinery/pkg/util/intstr"
|
|
||||||
kinformers "k8s.io/client-go/informers"
|
kinformers "k8s.io/client-go/informers"
|
||||||
kclientset "k8s.io/client-go/kubernetes"
|
kclientset "k8s.io/client-go/kubernetes"
|
||||||
"k8s.io/client-go/rest"
|
"k8s.io/client-go/rest"
|
||||||
|
@ -42,7 +40,6 @@ type Client interface {
|
||||||
GetSecret(namespace, name string) (*corev1.Secret, bool, error)
|
GetSecret(namespace, name string) (*corev1.Secret, bool, error)
|
||||||
GetEndpoints(namespace, name string) (*corev1.Endpoints, bool, error)
|
GetEndpoints(namespace, name string) (*corev1.Endpoints, bool, error)
|
||||||
UpdateIngressStatus(ing *netv1.Ingress, ingStatus []netv1.IngressLoadBalancerIngress) error
|
UpdateIngressStatus(ing *netv1.Ingress, ingStatus []netv1.IngressLoadBalancerIngress) error
|
||||||
GetServerVersion() *version.Version
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type clientWrapper struct {
|
type clientWrapper struct {
|
||||||
|
@ -167,17 +164,10 @@ func (c *clientWrapper) WatchAll(namespaces []string, stopCh <-chan struct{}) (<
|
||||||
for _, ns := range namespaces {
|
for _, ns := range namespaces {
|
||||||
factoryIngress := kinformers.NewSharedInformerFactoryWithOptions(c.clientset, resyncPeriod, kinformers.WithNamespace(ns), kinformers.WithTweakListOptions(matchesLabelSelector))
|
factoryIngress := kinformers.NewSharedInformerFactoryWithOptions(c.clientset, resyncPeriod, kinformers.WithNamespace(ns), kinformers.WithTweakListOptions(matchesLabelSelector))
|
||||||
|
|
||||||
if supportsNetworkingV1Ingress(serverVersion) {
|
|
||||||
_, err = factoryIngress.Networking().V1().Ingresses().Informer().AddEventHandler(eventHandler)
|
_, err = factoryIngress.Networking().V1().Ingresses().Informer().AddEventHandler(eventHandler)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
_, err = factoryIngress.Networking().V1beta1().Ingresses().Informer().AddEventHandler(eventHandler)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
c.factoriesIngress[ns] = factoryIngress
|
c.factoriesIngress[ns] = factoryIngress
|
||||||
|
|
||||||
|
@ -226,20 +216,13 @@ func (c *clientWrapper) WatchAll(namespaces []string, stopCh <-chan struct{}) (<
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if !c.disableIngressClassInformer && supportsIngressClass(serverVersion) {
|
if !c.disableIngressClassInformer {
|
||||||
c.clusterFactory = kinformers.NewSharedInformerFactoryWithOptions(c.clientset, resyncPeriod)
|
c.clusterFactory = kinformers.NewSharedInformerFactoryWithOptions(c.clientset, resyncPeriod)
|
||||||
|
|
||||||
if supportsNetworkingV1Ingress(serverVersion) {
|
|
||||||
_, err = c.clusterFactory.Networking().V1().IngressClasses().Informer().AddEventHandler(eventHandler)
|
_, err = c.clusterFactory.Networking().V1().IngressClasses().Informer().AddEventHandler(eventHandler)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
_, err = c.clusterFactory.Networking().V1beta1().IngressClasses().Informer().AddEventHandler(eventHandler)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
c.clusterFactory.Start(stopCh)
|
c.clusterFactory.Start(stopCh)
|
||||||
|
|
||||||
|
@ -257,10 +240,7 @@ func (c *clientWrapper) WatchAll(namespaces []string, stopCh <-chan struct{}) (<
|
||||||
func (c *clientWrapper) GetIngresses() []*netv1.Ingress {
|
func (c *clientWrapper) GetIngresses() []*netv1.Ingress {
|
||||||
var results []*netv1.Ingress
|
var results []*netv1.Ingress
|
||||||
|
|
||||||
isNetworkingV1Supported := supportsNetworkingV1Ingress(c.serverVersion)
|
|
||||||
|
|
||||||
for ns, factory := range c.factoriesIngress {
|
for ns, factory := range c.factoriesIngress {
|
||||||
if isNetworkingV1Supported {
|
|
||||||
// networking
|
// networking
|
||||||
listNew, err := factory.Networking().V1().Ingresses().Lister().List(labels.Everything())
|
listNew, err := factory.Networking().V1().Ingresses().Lister().List(labels.Everything())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -269,86 +249,17 @@ func (c *clientWrapper) GetIngresses() []*netv1.Ingress {
|
||||||
}
|
}
|
||||||
|
|
||||||
results = append(results, listNew...)
|
results = append(results, listNew...)
|
||||||
continue
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// networking beta
|
|
||||||
list, err := factory.Networking().V1beta1().Ingresses().Lister().List(labels.Everything())
|
|
||||||
if err != nil {
|
|
||||||
log.Error().Err(err).Msgf("Failed to list ingresses in namespace %s", ns)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, ing := range list {
|
|
||||||
n, err := convert[netv1.Ingress](ing)
|
|
||||||
if err != nil {
|
|
||||||
log.Error().Err(err).Msgf("Failed to convert ingress %s from networking/v1beta1 to networking/v1", ns)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
addServiceFromV1Beta1(n, *ing)
|
|
||||||
|
|
||||||
results = append(results, n)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return results
|
return results
|
||||||
}
|
}
|
||||||
|
|
||||||
func addServiceFromV1Beta1(ing *netv1.Ingress, old netv1beta1.Ingress) {
|
|
||||||
if old.Spec.Backend != nil {
|
|
||||||
port := netv1.ServiceBackendPort{}
|
|
||||||
if old.Spec.Backend.ServicePort.Type == intstr.Int {
|
|
||||||
port.Number = old.Spec.Backend.ServicePort.IntVal
|
|
||||||
} else {
|
|
||||||
port.Name = old.Spec.Backend.ServicePort.StrVal
|
|
||||||
}
|
|
||||||
|
|
||||||
if old.Spec.Backend.ServiceName != "" {
|
|
||||||
ing.Spec.DefaultBackend = &netv1.IngressBackend{
|
|
||||||
Service: &netv1.IngressServiceBackend{
|
|
||||||
Name: old.Spec.Backend.ServiceName,
|
|
||||||
Port: port,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for rc, rule := range ing.Spec.Rules {
|
|
||||||
if rule.HTTP == nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
for pc, path := range rule.HTTP.Paths {
|
|
||||||
if path.Backend.Service == nil {
|
|
||||||
oldBackend := old.Spec.Rules[rc].HTTP.Paths[pc].Backend
|
|
||||||
|
|
||||||
port := netv1.ServiceBackendPort{}
|
|
||||||
if oldBackend.ServicePort.Type == intstr.Int {
|
|
||||||
port.Number = oldBackend.ServicePort.IntVal
|
|
||||||
} else {
|
|
||||||
port.Name = oldBackend.ServicePort.StrVal
|
|
||||||
}
|
|
||||||
|
|
||||||
svc := netv1.IngressServiceBackend{
|
|
||||||
Name: oldBackend.ServiceName,
|
|
||||||
Port: port,
|
|
||||||
}
|
|
||||||
|
|
||||||
ing.Spec.Rules[rc].HTTP.Paths[pc].Backend.Service = &svc
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// UpdateIngressStatus updates an Ingress with a provided status.
|
// UpdateIngressStatus updates an Ingress with a provided status.
|
||||||
func (c *clientWrapper) UpdateIngressStatus(src *netv1.Ingress, ingStatus []netv1.IngressLoadBalancerIngress) error {
|
func (c *clientWrapper) UpdateIngressStatus(src *netv1.Ingress, ingStatus []netv1.IngressLoadBalancerIngress) error {
|
||||||
if !c.isWatchedNamespace(src.Namespace) {
|
if !c.isWatchedNamespace(src.Namespace) {
|
||||||
return fmt.Errorf("failed to get ingress %s/%s: namespace is not within watched namespaces", src.Namespace, src.Name)
|
return fmt.Errorf("failed to get ingress %s/%s: namespace is not within watched namespaces", src.Namespace, src.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
if !supportsNetworkingV1Ingress(c.serverVersion) {
|
|
||||||
return c.updateIngressStatusOld(src, ingStatus)
|
|
||||||
}
|
|
||||||
|
|
||||||
ing, err := c.factoriesIngress[c.lookupNamespace(src.Namespace)].Networking().V1().Ingresses().Lister().Ingresses(src.Namespace).Get(src.Name)
|
ing, err := c.factoriesIngress[c.lookupNamespace(src.Namespace)].Networking().V1().Ingresses().Lister().Ingresses(src.Namespace).Get(src.Name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to get ingress %s/%s: %w", src.Namespace, src.Name, err)
|
return fmt.Errorf("failed to get ingress %s/%s: %w", src.Namespace, src.Name, err)
|
||||||
|
@ -376,43 +287,6 @@ func (c *clientWrapper) UpdateIngressStatus(src *netv1.Ingress, ingStatus []netv
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *clientWrapper) updateIngressStatusOld(src *netv1.Ingress, ingStatus []netv1.IngressLoadBalancerIngress) error {
|
|
||||||
ing, err := c.factoriesIngress[c.lookupNamespace(src.Namespace)].Networking().V1beta1().Ingresses().Lister().Ingresses(src.Namespace).Get(src.Name)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("failed to get ingress %s/%s: %w", src.Namespace, src.Name, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
logger := log.With().Str("namespace", ing.Namespace).Str("ingress", ing.Name).Logger()
|
|
||||||
|
|
||||||
ingresses, err := convertSlice[netv1.IngressLoadBalancerIngress](ing.Status.LoadBalancer.Ingress)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
if isLoadBalancerIngressEquals(ingresses, ingStatus) {
|
|
||||||
logger.Debug().Msg("Skipping ingress status update")
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
ingressesBeta1, err := convertSlice[netv1beta1.IngressLoadBalancerIngress](ingStatus)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
ingCopy := ing.DeepCopy()
|
|
||||||
ingCopy.Status = netv1beta1.IngressStatus{LoadBalancer: netv1beta1.IngressLoadBalancerStatus{Ingress: ingressesBeta1}}
|
|
||||||
|
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), defaultTimeout)
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
_, err = c.clientset.NetworkingV1beta1().Ingresses(ingCopy.Namespace).UpdateStatus(ctx, ingCopy, metav1.UpdateOptions{})
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("failed to update ingress status %s/%s: %w", src.Namespace, src.Name, err)
|
|
||||||
}
|
|
||||||
logger.Info().Msg("Updated ingress status")
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// isLoadBalancerIngressEquals returns true if the given slices are equal, false otherwise.
|
// isLoadBalancerIngressEquals returns true if the given slices are equal, false otherwise.
|
||||||
func isLoadBalancerIngressEquals(aSlice, bSlice []netv1.IngressLoadBalancerIngress) bool {
|
func isLoadBalancerIngressEquals(aSlice, bSlice []netv1.IngressLoadBalancerIngress) bool {
|
||||||
if len(aSlice) != len(bSlice) {
|
if len(aSlice) != len(bSlice) {
|
||||||
|
@ -472,26 +346,6 @@ func (c *clientWrapper) GetIngressClasses() ([]*netv1.IngressClass, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
var ics []*netv1.IngressClass
|
var ics []*netv1.IngressClass
|
||||||
if !supportsNetworkingV1Ingress(c.serverVersion) {
|
|
||||||
ingressClasses, err := c.clusterFactory.Networking().V1beta1().IngressClasses().Lister().List(labels.Everything())
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, ic := range ingressClasses {
|
|
||||||
if ic.Spec.Controller == traefikDefaultIngressClassController {
|
|
||||||
icN, err := convert[netv1.IngressClass](ic)
|
|
||||||
if err != nil {
|
|
||||||
log.Error().Err(err).Msgf("Failed to convert ingress class %s from networking/v1beta1 to networking/v1", ic.Name)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
ics = append(ics, icN)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return ics, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
ingressClasses, err := c.clusterFactory.Networking().V1().IngressClasses().Lister().List(labels.Everything())
|
ingressClasses, err := c.clusterFactory.Networking().V1().IngressClasses().Lister().List(labels.Everything())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -519,11 +373,6 @@ func (c *clientWrapper) lookupNamespace(ns string) string {
|
||||||
return ns
|
return ns
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetServerVersion returns the cluster server version, or an error.
|
|
||||||
func (c *clientWrapper) GetServerVersion() *version.Version {
|
|
||||||
return c.serverVersion
|
|
||||||
}
|
|
||||||
|
|
||||||
// translateNotFoundError will translate a "not found" error to a boolean return
|
// translateNotFoundError will translate a "not found" error to a boolean return
|
||||||
// value which indicates if the resource exists and a nil error.
|
// value which indicates if the resource exists and a nil error.
|
||||||
func translateNotFoundError(err error) (bool, error) {
|
func translateNotFoundError(err error) (bool, error) {
|
||||||
|
@ -547,14 +396,6 @@ func (c *clientWrapper) isWatchedNamespace(ns string) bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
// IngressClass objects are supported since Kubernetes v1.18.
|
|
||||||
// See https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-class
|
|
||||||
func supportsIngressClass(serverVersion *version.Version) bool {
|
|
||||||
ingressClassVersion := version.Must(version.NewVersion("1.18"))
|
|
||||||
|
|
||||||
return ingressClassVersion.LessThanOrEqual(serverVersion)
|
|
||||||
}
|
|
||||||
|
|
||||||
// filterIngressClassByName return a slice containing ingressclasses with the correct name.
|
// filterIngressClassByName return a slice containing ingressclasses with the correct name.
|
||||||
func filterIngressClassByName(ingressClassName string, ics []*netv1.IngressClass) []*netv1.IngressClass {
|
func filterIngressClassByName(ingressClassName string, ics []*netv1.IngressClass) []*netv1.IngressClass {
|
||||||
var ingressClasses []*netv1.IngressClass
|
var ingressClasses []*netv1.IngressClass
|
||||||
|
@ -567,11 +408,3 @@ func filterIngressClassByName(ingressClassName string, ics []*netv1.IngressClass
|
||||||
|
|
||||||
return ingressClasses
|
return ingressClasses
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ingress in networking.k8s.io/v1 is supported starting 1.19.
|
|
||||||
// thus, we query it in K8s starting 1.19.
|
|
||||||
func supportsNetworkingV1Ingress(serverVersion *version.Version) bool {
|
|
||||||
ingressNetworkingVersion := version.Must(version.NewVersion("1.19"))
|
|
||||||
|
|
||||||
return serverVersion.GreaterThanOrEqual(ingressNetworkingVersion)
|
|
||||||
}
|
|
||||||
|
|
|
@ -4,11 +4,9 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/hashicorp/go-version"
|
|
||||||
"github.com/traefik/traefik/v3/pkg/provider/kubernetes/k8s"
|
"github.com/traefik/traefik/v3/pkg/provider/kubernetes/k8s"
|
||||||
corev1 "k8s.io/api/core/v1"
|
corev1 "k8s.io/api/core/v1"
|
||||||
netv1 "k8s.io/api/networking/v1"
|
netv1 "k8s.io/api/networking/v1"
|
||||||
netv1beta1 "k8s.io/api/networking/v1beta1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var _ Client = (*clientMock)(nil)
|
var _ Client = (*clientMock)(nil)
|
||||||
|
@ -20,8 +18,6 @@ type clientMock struct {
|
||||||
endpoints []*corev1.Endpoints
|
endpoints []*corev1.Endpoints
|
||||||
ingressClasses []*netv1.IngressClass
|
ingressClasses []*netv1.IngressClass
|
||||||
|
|
||||||
serverVersion *version.Version
|
|
||||||
|
|
||||||
apiServiceError error
|
apiServiceError error
|
||||||
apiSecretError error
|
apiSecretError error
|
||||||
apiEndpointsError error
|
apiEndpointsError error
|
||||||
|
@ -30,15 +26,12 @@ type clientMock struct {
|
||||||
watchChan chan interface{}
|
watchChan chan interface{}
|
||||||
}
|
}
|
||||||
|
|
||||||
func newClientMock(serverVersion string, paths ...string) clientMock {
|
func newClientMock(path string) clientMock {
|
||||||
c := clientMock{}
|
c := clientMock{}
|
||||||
|
|
||||||
c.serverVersion = version.Must(version.NewVersion(serverVersion))
|
|
||||||
|
|
||||||
for _, path := range paths {
|
|
||||||
yamlContent, err := os.ReadFile(path)
|
yamlContent, err := os.ReadFile(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(fmt.Errorf("unable to read file %q: %w", path, err))
|
||||||
}
|
}
|
||||||
|
|
||||||
k8sObjects := k8s.MustParseYaml(yamlContent)
|
k8sObjects := k8s.MustParseYaml(yamlContent)
|
||||||
|
@ -50,28 +43,14 @@ func newClientMock(serverVersion string, paths ...string) clientMock {
|
||||||
c.secrets = append(c.secrets, o)
|
c.secrets = append(c.secrets, o)
|
||||||
case *corev1.Endpoints:
|
case *corev1.Endpoints:
|
||||||
c.endpoints = append(c.endpoints, o)
|
c.endpoints = append(c.endpoints, o)
|
||||||
case *netv1beta1.Ingress:
|
|
||||||
ing, err := convert[netv1.Ingress](o)
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
addServiceFromV1Beta1(ing, *o)
|
|
||||||
c.ingresses = append(c.ingresses, ing)
|
|
||||||
case *netv1.Ingress:
|
case *netv1.Ingress:
|
||||||
c.ingresses = append(c.ingresses, o)
|
c.ingresses = append(c.ingresses, o)
|
||||||
case *netv1beta1.IngressClass:
|
|
||||||
ic, err := convert[netv1.IngressClass](o)
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
c.ingressClasses = append(c.ingressClasses, ic)
|
|
||||||
case *netv1.IngressClass:
|
case *netv1.IngressClass:
|
||||||
c.ingressClasses = append(c.ingressClasses, o)
|
c.ingressClasses = append(c.ingressClasses, o)
|
||||||
default:
|
default:
|
||||||
panic(fmt.Sprintf("Unknown runtime object %+v %T", o, o))
|
panic(fmt.Sprintf("Unknown runtime object %+v %T", o, o))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return c
|
return c
|
||||||
}
|
}
|
||||||
|
@ -80,10 +59,6 @@ func (c clientMock) GetIngresses() []*netv1.Ingress {
|
||||||
return c.ingresses
|
return c.ingresses
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c clientMock) GetServerVersion() *version.Version {
|
|
||||||
return c.serverVersion
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c clientMock) GetService(namespace, name string) (*corev1.Service, bool, error) {
|
func (c clientMock) GetService(namespace, name string) (*corev1.Service, bool, error) {
|
||||||
if c.apiServiceError != nil {
|
if c.apiServiceError != nil {
|
||||||
return nil, false, c.apiServiceError
|
return nil, false, c.apiServiceError
|
||||||
|
|
|
@ -10,7 +10,6 @@ import (
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
corev1 "k8s.io/api/core/v1"
|
corev1 "k8s.io/api/core/v1"
|
||||||
netv1 "k8s.io/api/networking/v1"
|
netv1 "k8s.io/api/networking/v1"
|
||||||
netv1beta1 "k8s.io/api/networking/v1beta1"
|
|
||||||
kerror "k8s.io/apimachinery/pkg/api/errors"
|
kerror "k8s.io/apimachinery/pkg/api/errors"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
kschema "k8s.io/apimachinery/pkg/runtime/schema"
|
kschema "k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
|
@ -289,72 +288,3 @@ func TestClientIgnoresEmptyEndpointUpdates(t *testing.T) {
|
||||||
case <-time.After(50 * time.Millisecond):
|
case <-time.After(50 * time.Millisecond):
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestClientUsesCorrectServerVersion(t *testing.T) {
|
|
||||||
ingressV1Beta := &netv1beta1.Ingress{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Namespace: "default",
|
|
||||||
Name: "ingress-v1beta",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
ingressV1 := &netv1.Ingress{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Namespace: "default",
|
|
||||||
Name: "ingress-v1",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
kubeClient := kubefake.NewSimpleClientset(ingressV1Beta, ingressV1)
|
|
||||||
|
|
||||||
discovery, _ := kubeClient.Discovery().(*discoveryfake.FakeDiscovery)
|
|
||||||
discovery.FakedServerVersion = &kversion.Info{
|
|
||||||
GitVersion: "v1.18.12+foobar",
|
|
||||||
}
|
|
||||||
|
|
||||||
stopCh := make(chan struct{})
|
|
||||||
|
|
||||||
client := newClientImpl(kubeClient)
|
|
||||||
|
|
||||||
eventCh, err := client.WatchAll(nil, stopCh)
|
|
||||||
require.NoError(t, err)
|
|
||||||
|
|
||||||
select {
|
|
||||||
case event := <-eventCh:
|
|
||||||
ingress, ok := event.(*netv1beta1.Ingress)
|
|
||||||
require.True(t, ok)
|
|
||||||
|
|
||||||
assert.Equal(t, "ingress-v1beta", ingress.Name)
|
|
||||||
case <-time.After(50 * time.Millisecond):
|
|
||||||
assert.Fail(t, "expected to receive event for ingress")
|
|
||||||
}
|
|
||||||
|
|
||||||
select {
|
|
||||||
case <-eventCh:
|
|
||||||
assert.Fail(t, "received more than one event")
|
|
||||||
case <-time.After(50 * time.Millisecond):
|
|
||||||
}
|
|
||||||
|
|
||||||
discovery.FakedServerVersion = &kversion.Info{
|
|
||||||
GitVersion: "v1.19",
|
|
||||||
}
|
|
||||||
|
|
||||||
eventCh, err = client.WatchAll(nil, stopCh)
|
|
||||||
require.NoError(t, err)
|
|
||||||
|
|
||||||
select {
|
|
||||||
case event := <-eventCh:
|
|
||||||
ingress, ok := event.(*netv1.Ingress)
|
|
||||||
require.True(t, ok)
|
|
||||||
|
|
||||||
assert.Equal(t, "ingress-v1", ingress.Name)
|
|
||||||
case <-time.After(50 * time.Millisecond):
|
|
||||||
assert.Fail(t, "expected to receive event for ingress")
|
|
||||||
}
|
|
||||||
|
|
||||||
select {
|
|
||||||
case <-eventCh:
|
|
||||||
assert.Fail(t, "received more than one event")
|
|
||||||
case <-time.After(50 * time.Millisecond):
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -5,7 +5,6 @@ import (
|
||||||
|
|
||||||
corev1 "k8s.io/api/core/v1"
|
corev1 "k8s.io/api/core/v1"
|
||||||
netv1 "k8s.io/api/networking/v1"
|
netv1 "k8s.io/api/networking/v1"
|
||||||
netv1beta1 "k8s.io/api/networking/v1beta1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type marshaler interface {
|
type marshaler interface {
|
||||||
|
@ -17,7 +16,7 @@ type unmarshaler interface {
|
||||||
}
|
}
|
||||||
|
|
||||||
type LoadBalancerIngress interface {
|
type LoadBalancerIngress interface {
|
||||||
corev1.LoadBalancerIngress | netv1beta1.IngressLoadBalancerIngress | netv1.IngressLoadBalancerIngress
|
corev1.LoadBalancerIngress | netv1.IngressLoadBalancerIngress
|
||||||
}
|
}
|
||||||
|
|
||||||
// convertSlice converts slice of LoadBalancerIngress to slice of LoadBalancerIngress.
|
// convertSlice converts slice of LoadBalancerIngress to slice of LoadBalancerIngress.
|
||||||
|
|
|
@ -7,7 +7,6 @@ import (
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
corev1 "k8s.io/api/core/v1"
|
corev1 "k8s.io/api/core/v1"
|
||||||
netv1 "k8s.io/api/networking/v1"
|
netv1 "k8s.io/api/networking/v1"
|
||||||
netv1beta1 "k8s.io/api/networking/v1beta1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func Test_convertSlice_corev1_to_networkingv1(t *testing.T) {
|
func Test_convertSlice_corev1_to_networkingv1(t *testing.T) {
|
||||||
|
@ -45,76 +44,6 @@ func Test_convertSlice_corev1_to_networkingv1(t *testing.T) {
|
||||||
assert.Equal(t, expected, actual)
|
assert.Equal(t, expected, actual)
|
||||||
}
|
}
|
||||||
|
|
||||||
func Test_convertSlice_networkingv1beta1_to_networkingv1(t *testing.T) {
|
|
||||||
g := []netv1beta1.IngressLoadBalancerIngress{
|
|
||||||
{
|
|
||||||
IP: "132456",
|
|
||||||
Hostname: "foo",
|
|
||||||
Ports: []netv1beta1.IngressPortStatus{
|
|
||||||
{
|
|
||||||
Port: 123,
|
|
||||||
Protocol: "https",
|
|
||||||
Error: ptr("test"),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
actual, err := convertSlice[netv1.IngressLoadBalancerIngress](g)
|
|
||||||
require.NoError(t, err)
|
|
||||||
|
|
||||||
expected := []netv1.IngressLoadBalancerIngress{
|
|
||||||
{
|
|
||||||
IP: "132456",
|
|
||||||
Hostname: "foo",
|
|
||||||
Ports: []netv1.IngressPortStatus{
|
|
||||||
{
|
|
||||||
Port: 123,
|
|
||||||
Protocol: "https",
|
|
||||||
Error: ptr("test"),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
assert.Equal(t, expected, actual)
|
|
||||||
}
|
|
||||||
|
|
||||||
func Test_convertSlice_networkingv1_to_networkingv1beta1(t *testing.T) {
|
|
||||||
g := []netv1.IngressLoadBalancerIngress{
|
|
||||||
{
|
|
||||||
IP: "132456",
|
|
||||||
Hostname: "foo",
|
|
||||||
Ports: []netv1.IngressPortStatus{
|
|
||||||
{
|
|
||||||
Port: 123,
|
|
||||||
Protocol: "https",
|
|
||||||
Error: ptr("test"),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
actual, err := convertSlice[netv1beta1.IngressLoadBalancerIngress](g)
|
|
||||||
require.NoError(t, err)
|
|
||||||
|
|
||||||
expected := []netv1beta1.IngressLoadBalancerIngress{
|
|
||||||
{
|
|
||||||
IP: "132456",
|
|
||||||
Hostname: "foo",
|
|
||||||
Ports: []netv1beta1.IngressPortStatus{
|
|
||||||
{
|
|
||||||
Port: 123,
|
|
||||||
Protocol: "https",
|
|
||||||
Error: ptr("test"),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
assert.Equal(t, expected, actual)
|
|
||||||
}
|
|
||||||
|
|
||||||
func Test_convert(t *testing.T) {
|
func Test_convert(t *testing.T) {
|
||||||
g := &corev1.LoadBalancerIngress{
|
g := &corev1.LoadBalancerIngress{
|
||||||
IP: "132456",
|
IP: "132456",
|
||||||
|
|
|
@ -0,0 +1,102 @@
|
||||||
|
---
|
||||||
|
kind: Endpoints
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.10.0.1
|
||||||
|
- ip: 10.10.0.2
|
||||||
|
ports:
|
||||||
|
- name: tchouk
|
||||||
|
port: 8089
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Endpoints
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: toto
|
||||||
|
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.11.0.1
|
||||||
|
- ip: 10.11.0.2
|
||||||
|
ports:
|
||||||
|
- name: tchouk
|
||||||
|
port: 8089
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Ingress
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: ""
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- host: traefik.tchouk
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /bar
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: service1
|
||||||
|
port:
|
||||||
|
name: tchouk
|
||||||
|
pathType: Prefix
|
||||||
|
- path: /foo
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: service1
|
||||||
|
port:
|
||||||
|
name: carotte
|
||||||
|
pathType: Prefix
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Ingress
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: ""
|
||||||
|
namespace: toto
|
||||||
|
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- host: toto.traefik.tchouk
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /bar
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: service1
|
||||||
|
port:
|
||||||
|
name: tchouk
|
||||||
|
pathType: Prefix
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: tchouk
|
||||||
|
port: 80
|
||||||
|
clusterIP: 10.0.0.1
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: toto
|
||||||
|
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: tchouk
|
||||||
|
port: 80
|
||||||
|
clusterIP: 10.0.0.1
|
|
@ -1,29 +0,0 @@
|
||||||
---
|
|
||||||
kind: Endpoints
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
subsets:
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.10.0.1
|
|
||||||
- ip: 10.10.0.2
|
|
||||||
ports:
|
|
||||||
- name: tchouk
|
|
||||||
port: 8089
|
|
||||||
|
|
||||||
---
|
|
||||||
kind: Endpoints
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: toto
|
|
||||||
|
|
||||||
subsets:
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.11.0.1
|
|
||||||
- ip: 10.11.0.2
|
|
||||||
ports:
|
|
||||||
- name: tchouk
|
|
||||||
port: 8089
|
|
|
@ -1,37 +0,0 @@
|
||||||
---
|
|
||||||
kind: Ingress
|
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
|
||||||
metadata:
|
|
||||||
name: ""
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
rules:
|
|
||||||
- host: traefik.tchouk
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /bar
|
|
||||||
backend:
|
|
||||||
serviceName: service1
|
|
||||||
servicePort: tchouk
|
|
||||||
- path: /foo
|
|
||||||
backend:
|
|
||||||
serviceName: service1
|
|
||||||
servicePort: carotte
|
|
||||||
|
|
||||||
---
|
|
||||||
kind: Ingress
|
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
|
||||||
metadata:
|
|
||||||
name: ""
|
|
||||||
namespace: toto
|
|
||||||
|
|
||||||
spec:
|
|
||||||
rules:
|
|
||||||
- host: toto.traefik.tchouk
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /bar
|
|
||||||
backend:
|
|
||||||
serviceName: service1
|
|
||||||
servicePort: tchouk
|
|
|
@ -1,24 +0,0 @@
|
||||||
kind: Service
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- name: tchouk
|
|
||||||
port: 80
|
|
||||||
clusterIP: 10.0.0.1
|
|
||||||
|
|
||||||
---
|
|
||||||
kind: Service
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: toto
|
|
||||||
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- name: tchouk
|
|
||||||
port: 80
|
|
||||||
clusterIP: 10.0.0.1
|
|
|
@ -0,0 +1,84 @@
|
||||||
|
kind: Ingress
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: ""
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
defaultBackend:
|
||||||
|
service:
|
||||||
|
name: service1
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Ingress
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: ""
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
defaultBackend:
|
||||||
|
service:
|
||||||
|
name: service2
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
clusterIP: 10.0.0.1
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service2
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
clusterIP: 10.0.0.1
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Endpoints
|
||||||
|
apiversion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.30.0.1
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.41.0.1
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Endpoints
|
||||||
|
apiversion: v1
|
||||||
|
metadata:
|
||||||
|
name: service2
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.10.0.1
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.21.0.1
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
|
@ -1,32 +0,0 @@
|
||||||
kind: Endpoints
|
|
||||||
apiversion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
subsets:
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.30.0.1
|
|
||||||
ports:
|
|
||||||
- port: 8080
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.41.0.1
|
|
||||||
ports:
|
|
||||||
- port: 8080
|
|
||||||
|
|
||||||
---
|
|
||||||
kind: Endpoints
|
|
||||||
apiversion: v1
|
|
||||||
metadata:
|
|
||||||
name: service2
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
subsets:
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.10.0.1
|
|
||||||
ports:
|
|
||||||
- port: 8080
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.21.0.1
|
|
||||||
ports:
|
|
||||||
- port: 8080
|
|
|
@ -1,22 +0,0 @@
|
||||||
kind: Ingress
|
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
|
||||||
metadata:
|
|
||||||
name: ""
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
backend:
|
|
||||||
serviceName: service1
|
|
||||||
servicePort: 80
|
|
||||||
|
|
||||||
---
|
|
||||||
kind: Ingress
|
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
|
||||||
metadata:
|
|
||||||
name: ""
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
backend:
|
|
||||||
serviceName: service2
|
|
||||||
servicePort: 80
|
|
|
@ -1,22 +0,0 @@
|
||||||
kind: Service
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- port: 80
|
|
||||||
clusterIP: 10.0.0.1
|
|
||||||
|
|
||||||
---
|
|
||||||
kind: Service
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service2
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- port: 80
|
|
||||||
clusterIP: 10.0.0.1
|
|
|
@ -0,0 +1,57 @@
|
||||||
|
kind: Ingress
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: ""
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- host: traefik.tchouk
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /bar
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: service1
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
pathType: Prefix
|
||||||
|
- host: traefik.courgette
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /carotte
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: service1
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
pathType: Prefix
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
clusterIP: 10.0.0.1
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Endpoints
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.10.0.1
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.21.0.1
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
|
@ -1,15 +0,0 @@
|
||||||
kind: Endpoints
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
subsets:
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.10.0.1
|
|
||||||
ports:
|
|
||||||
- port: 8080
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.21.0.1
|
|
||||||
ports:
|
|
||||||
- port: 8080
|
|
|
@ -1,22 +0,0 @@
|
||||||
kind: Ingress
|
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
|
||||||
metadata:
|
|
||||||
name: ""
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
rules:
|
|
||||||
- host: traefik.tchouk
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /bar
|
|
||||||
backend:
|
|
||||||
serviceName: service1
|
|
||||||
servicePort: 80
|
|
||||||
- host: traefik.courgette
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /carotte
|
|
||||||
backend:
|
|
||||||
serviceName: service1
|
|
||||||
servicePort: 80
|
|
|
@ -1,10 +0,0 @@
|
||||||
kind: Service
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- port: 80
|
|
||||||
clusterIP: 10.0.0.1
|
|
|
@ -1,5 +1,5 @@
|
||||||
kind: Ingress
|
kind: Ingress
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
apiVersion: networking.k8s.io/v1
|
||||||
metadata:
|
metadata:
|
||||||
name: ""
|
name: ""
|
||||||
namespace: testing
|
namespace: testing
|
|
@ -0,0 +1,54 @@
|
||||||
|
kind: Ingress
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: ""
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- host: traefik.tchouk
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /bar
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: service1
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
pathType: Prefix
|
||||||
|
- path: /foo
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: service1
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
pathType: Prefix
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
clusterIP: 10.0.0.1
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Endpoints
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.10.0.1
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.21.0.1
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
|
@ -1,15 +0,0 @@
|
||||||
kind: Endpoints
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
subsets:
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.10.0.1
|
|
||||||
ports:
|
|
||||||
- port: 8080
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.21.0.1
|
|
||||||
ports:
|
|
||||||
- port: 8080
|
|
|
@ -1,19 +0,0 @@
|
||||||
kind: Ingress
|
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
|
||||||
metadata:
|
|
||||||
name: ""
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
rules:
|
|
||||||
- host: traefik.tchouk
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /bar
|
|
||||||
backend:
|
|
||||||
serviceName: service1
|
|
||||||
servicePort: 80
|
|
||||||
- path: /foo
|
|
||||||
backend:
|
|
||||||
serviceName: service1
|
|
||||||
servicePort: 80
|
|
|
@ -1,10 +0,0 @@
|
||||||
kind: Service
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- port: 80
|
|
||||||
clusterIP: 10.0.0.1
|
|
|
@ -0,0 +1,47 @@
|
||||||
|
kind: Ingress
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: ""
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- host: traefik.tchouk
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /bar
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: service1
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
pathType: Prefix
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
clusterIP: 10.0.0.1
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Endpoints
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.10.0.1
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.21.0.1
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
|
@ -1,15 +0,0 @@
|
||||||
kind: Endpoints
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
subsets:
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.10.0.1
|
|
||||||
ports:
|
|
||||||
- port: 8080
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.21.0.1
|
|
||||||
ports:
|
|
||||||
- port: 8080
|
|
|
@ -1,15 +0,0 @@
|
||||||
kind: Ingress
|
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
|
||||||
metadata:
|
|
||||||
name: ""
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
rules:
|
|
||||||
- host: traefik.tchouk
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /bar
|
|
||||||
backend:
|
|
||||||
serviceName: service1
|
|
||||||
servicePort: 80
|
|
|
@ -1,10 +0,0 @@
|
||||||
kind: Service
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- port: 80
|
|
||||||
clusterIP: 10.0.0.1
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
kind: Ingress
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: ""
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- http:
|
||||||
|
paths:
|
||||||
|
- path: /bar
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: service1
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
pathType: Prefix
|
||||||
|
- path: /foo
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: service1
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
pathType: Prefix
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
clusterIP: 10.0.0.1
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Endpoints
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.10.0.1
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.21.0.1
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
|
@ -1,15 +0,0 @@
|
||||||
kind: Endpoints
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
subsets:
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.10.0.1
|
|
||||||
ports:
|
|
||||||
- port: 8080
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.21.0.1
|
|
||||||
ports:
|
|
||||||
- port: 8080
|
|
|
@ -1,18 +0,0 @@
|
||||||
kind: Ingress
|
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
|
||||||
metadata:
|
|
||||||
name: ""
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
rules:
|
|
||||||
- http:
|
|
||||||
paths:
|
|
||||||
- path: /bar
|
|
||||||
backend:
|
|
||||||
serviceName: service1
|
|
||||||
servicePort: 80
|
|
||||||
- path: /foo
|
|
||||||
backend:
|
|
||||||
serviceName: service1
|
|
||||||
servicePort: 80
|
|
|
@ -1,10 +0,0 @@
|
||||||
kind: Service
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- port: 80
|
|
||||||
clusterIP: 10.0.0.1
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
kind: Ingress
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: example.com
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- http:
|
||||||
|
paths:
|
||||||
|
- path: /foo
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: service-foo
|
||||||
|
port:
|
||||||
|
number: 8080
|
||||||
|
pathType: Prefix
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service-foo
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 8080
|
||||||
|
type: ExternalName
|
||||||
|
externalName: "2001:0db8:3c4d:0015:0000:0000:1a2f:2a3b"
|
|
@ -1,14 +0,0 @@
|
||||||
kind: Ingress
|
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
|
||||||
metadata:
|
|
||||||
name: example.com
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
rules:
|
|
||||||
- http:
|
|
||||||
paths:
|
|
||||||
- path: /foo
|
|
||||||
backend:
|
|
||||||
serviceName: service-foo
|
|
||||||
servicePort: 8080
|
|
|
@ -1,13 +0,0 @@
|
||||||
---
|
|
||||||
kind: Service
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service-foo
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- name: http
|
|
||||||
port: 8080
|
|
||||||
type: ExternalName
|
|
||||||
externalName: "2001:0db8:3c4d:0015:0000:0000:1a2f:2a3b"
|
|
|
@ -0,0 +1,66 @@
|
||||||
|
kind: Ingress
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: example.com
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- http:
|
||||||
|
paths:
|
||||||
|
- path: /bar
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: service-bar
|
||||||
|
port:
|
||||||
|
number: 8080
|
||||||
|
pathType: Prefix
|
||||||
|
- path: /foo
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: service-foo
|
||||||
|
port:
|
||||||
|
number: 8080
|
||||||
|
pathType: Prefix
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service-bar
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 8080
|
||||||
|
clusterIP: "fc00:f853:ccd:e793::1"
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service-foo
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 8080
|
||||||
|
type: ExternalName
|
||||||
|
externalName: "2001:0db8:3c4d:0015:0000:0000:1a2f:2a3b"
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Endpoints
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service-bar
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: "2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b"
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 8080
|
|
@ -1,12 +0,0 @@
|
||||||
kind: Endpoints
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service-bar
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
subsets:
|
|
||||||
- addresses:
|
|
||||||
- ip: "2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b"
|
|
||||||
ports:
|
|
||||||
- name: http
|
|
||||||
port: 8080
|
|
|
@ -1,18 +0,0 @@
|
||||||
kind: Ingress
|
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
|
||||||
metadata:
|
|
||||||
name: example.com
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
rules:
|
|
||||||
- http:
|
|
||||||
paths:
|
|
||||||
- path: /bar
|
|
||||||
backend:
|
|
||||||
serviceName: service-bar
|
|
||||||
servicePort: 8080
|
|
||||||
- path: /foo
|
|
||||||
backend:
|
|
||||||
serviceName: service-foo
|
|
||||||
servicePort: 8080
|
|
|
@ -1,26 +0,0 @@
|
||||||
kind: Service
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service-bar
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- name: http
|
|
||||||
port: 8080
|
|
||||||
clusterIP: "fc00:f853:ccd:e793::1"
|
|
||||||
type: ClusterIP
|
|
||||||
|
|
||||||
---
|
|
||||||
kind: Service
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service-foo
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- name: http
|
|
||||||
port: 8080
|
|
||||||
type: ExternalName
|
|
||||||
externalName: "2001:0db8:3c4d:0015:0000:0000:1a2f:2a3b"
|
|
|
@ -1,15 +0,0 @@
|
||||||
kind: Endpoints
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
subsets:
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.10.0.1
|
|
||||||
ports:
|
|
||||||
- port: 8080
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.21.0.1
|
|
||||||
ports:
|
|
||||||
- port: 8080
|
|
|
@ -1,10 +0,0 @@
|
||||||
kind: Service
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- port: 80
|
|
||||||
clusterIP: 10.0.0.1
|
|
|
@ -1,15 +0,0 @@
|
||||||
kind: Endpoints
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
subsets:
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.10.0.1
|
|
||||||
ports:
|
|
||||||
- port: 8080
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.21.0.1
|
|
||||||
ports:
|
|
||||||
- port: 8080
|
|
|
@ -1,10 +0,0 @@
|
||||||
kind: Service
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- port: 80
|
|
||||||
clusterIP: 10.0.0.1
|
|
|
@ -0,0 +1,47 @@
|
||||||
|
kind: Ingress
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: ""
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- http:
|
||||||
|
paths:
|
||||||
|
- path: /bar
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: service1
|
||||||
|
port:
|
||||||
|
number: 443
|
||||||
|
pathType: Prefix
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 443
|
||||||
|
targetPort: 8443
|
||||||
|
clusterIP: 10.0.0.1
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Endpoints
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.10.0.1
|
||||||
|
ports:
|
||||||
|
- port: 8443
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.21.0.1
|
||||||
|
ports:
|
||||||
|
- port: 8443
|
|
@ -1,15 +0,0 @@
|
||||||
kind: Endpoints
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
subsets:
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.10.0.1
|
|
||||||
ports:
|
|
||||||
- port: 8443
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.21.0.1
|
|
||||||
ports:
|
|
||||||
- port: 8443
|
|
|
@ -1,14 +0,0 @@
|
||||||
kind: Ingress
|
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
|
||||||
metadata:
|
|
||||||
name: ""
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
rules:
|
|
||||||
- http:
|
|
||||||
paths:
|
|
||||||
- path: /bar
|
|
||||||
backend:
|
|
||||||
serviceName: service1
|
|
||||||
servicePort: 443
|
|
|
@ -1,11 +0,0 @@
|
||||||
kind: Service
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- port: 443
|
|
||||||
targetPort: 8443
|
|
||||||
clusterIP: 10.0.0.1
|
|
|
@ -0,0 +1,50 @@
|
||||||
|
kind: Ingress
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: ""
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- http:
|
||||||
|
paths:
|
||||||
|
- path: /bar
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: service1
|
||||||
|
port:
|
||||||
|
number: 8443
|
||||||
|
pathType: Prefix
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: https
|
||||||
|
protocol: ""
|
||||||
|
port: 8443
|
||||||
|
clusterIP: 10.0.0.1
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Endpoints
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.10.0.1
|
||||||
|
ports:
|
||||||
|
- name: https
|
||||||
|
port: 8443
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.21.0.1
|
||||||
|
ports:
|
||||||
|
- name: https
|
||||||
|
port: 8443
|
|
@ -1,17 +0,0 @@
|
||||||
kind: Endpoints
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
subsets:
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.10.0.1
|
|
||||||
ports:
|
|
||||||
- name: https
|
|
||||||
port: 8443
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.21.0.1
|
|
||||||
ports:
|
|
||||||
- name: https
|
|
||||||
port: 8443
|
|
|
@ -1,14 +0,0 @@
|
||||||
kind: Ingress
|
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
|
||||||
metadata:
|
|
||||||
name: ""
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
rules:
|
|
||||||
- http:
|
|
||||||
paths:
|
|
||||||
- path: /bar
|
|
||||||
backend:
|
|
||||||
serviceName: service1
|
|
||||||
servicePort: 8443
|
|
|
@ -1,12 +0,0 @@
|
||||||
kind: Service
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- name: https
|
|
||||||
protocol: ""
|
|
||||||
port: 8443
|
|
||||||
clusterIP: 10.0.0.1
|
|
|
@ -0,0 +1,50 @@
|
||||||
|
kind: Ingress
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: ""
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- http:
|
||||||
|
paths:
|
||||||
|
- path: /bar
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: service1
|
||||||
|
port:
|
||||||
|
number: 8443
|
||||||
|
pathType: Prefix
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: https-foo
|
||||||
|
protocol: ""
|
||||||
|
port: 8443
|
||||||
|
clusterIP: 10.0.0.1
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Endpoints
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.10.0.1
|
||||||
|
ports:
|
||||||
|
- name: https-foo
|
||||||
|
port: 8443
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.21.0.1
|
||||||
|
ports:
|
||||||
|
- name: https-foo
|
||||||
|
port: 8443
|
|
@ -1,17 +0,0 @@
|
||||||
kind: Endpoints
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
subsets:
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.10.0.1
|
|
||||||
ports:
|
|
||||||
- name: https-foo
|
|
||||||
port: 8443
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.21.0.1
|
|
||||||
ports:
|
|
||||||
- name: https-foo
|
|
||||||
port: 8443
|
|
|
@ -1,14 +0,0 @@
|
||||||
kind: Ingress
|
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
|
||||||
metadata:
|
|
||||||
name: ""
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
rules:
|
|
||||||
- http:
|
|
||||||
paths:
|
|
||||||
- path: /bar
|
|
||||||
backend:
|
|
||||||
serviceName: service1
|
|
||||||
servicePort: 8443
|
|
|
@ -1,12 +0,0 @@
|
||||||
kind: Service
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- name: https-foo
|
|
||||||
protocol: ""
|
|
||||||
port: 8443
|
|
||||||
clusterIP: 10.0.0.1
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
kind: Ingress
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: ""
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- http:
|
||||||
|
paths:
|
||||||
|
- path: /bar
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: service1
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
pathType: Prefix
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
clusterIP: 10.0.0.1
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Endpoints
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.10.0.1
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.21.0.1
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
|
@ -1,15 +0,0 @@
|
||||||
kind: Endpoints
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
subsets:
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.10.0.1
|
|
||||||
ports:
|
|
||||||
- port: 8080
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.21.0.1
|
|
||||||
ports:
|
|
||||||
- port: 8080
|
|
|
@ -1,14 +0,0 @@
|
||||||
kind: Ingress
|
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
|
||||||
metadata:
|
|
||||||
name: ""
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
rules:
|
|
||||||
- http:
|
|
||||||
paths:
|
|
||||||
- path: /bar
|
|
||||||
backend:
|
|
||||||
serviceName: service1
|
|
||||||
servicePort: 80
|
|
|
@ -1,11 +0,0 @@
|
||||||
---
|
|
||||||
kind: Service
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- port: 80
|
|
||||||
clusterIP: 10.0.0.1
|
|
|
@ -0,0 +1,55 @@
|
||||||
|
kind: Ingress
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: ""
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- host: traefik.tchouk
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /bar
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: service1
|
||||||
|
port:
|
||||||
|
name: tchouk
|
||||||
|
pathType: Prefix
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: carotte
|
||||||
|
port: 8082
|
||||||
|
- name: tchouk
|
||||||
|
port: 80
|
||||||
|
clusterIP: 10.0.0.1
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Endpoints
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.10.0.1
|
||||||
|
- ip: 10.10.0.2
|
||||||
|
ports:
|
||||||
|
- name: tchouk
|
||||||
|
port: 8089
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.10.0.1
|
||||||
|
- ip: 10.10.0.2
|
||||||
|
- ip: 10.10.0.3
|
||||||
|
ports:
|
||||||
|
- name: carotte
|
||||||
|
port: 8090
|
|
@ -1,20 +0,0 @@
|
||||||
kind: Endpoints
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
subsets:
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.10.0.1
|
|
||||||
- ip: 10.10.0.2
|
|
||||||
ports:
|
|
||||||
- name: tchouk
|
|
||||||
port: 8089
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.10.0.1
|
|
||||||
- ip: 10.10.0.2
|
|
||||||
- ip: 10.10.0.3
|
|
||||||
ports:
|
|
||||||
- name: carotte
|
|
||||||
port: 8090
|
|
|
@ -1,15 +0,0 @@
|
||||||
kind: Ingress
|
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
|
||||||
metadata:
|
|
||||||
name: ""
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
rules:
|
|
||||||
- host: traefik.tchouk
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /bar
|
|
||||||
backend:
|
|
||||||
serviceName: service1
|
|
||||||
servicePort: tchouk
|
|
|
@ -1,14 +0,0 @@
|
||||||
kind: Service
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- name: carotte
|
|
||||||
port: 8082
|
|
||||||
- name: tchouk
|
|
||||||
port: 80
|
|
||||||
clusterIP: 10.0.0.1
|
|
||||||
|
|
|
@ -0,0 +1,70 @@
|
||||||
|
kind: Ingress
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: ""
|
||||||
|
namespace: testing
|
||||||
|
annotations:
|
||||||
|
ingress.kubernetes.io/foo: bar
|
||||||
|
traefik.ingress.kubernetes.io/foo: bar
|
||||||
|
traefik.ingress.kubernetes.io/router.pathmatcher: Path
|
||||||
|
traefik.ingress.kubernetes.io/router.entrypoints: ep1,ep2
|
||||||
|
traefik.ingress.kubernetes.io/router.middlewares: md1,md2
|
||||||
|
traefik.ingress.kubernetes.io/router.priority: "42"
|
||||||
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
|
traefik.ingress.kubernetes.io/router.tls.certresolver: foobar
|
||||||
|
traefik.ingress.kubernetes.io/router.tls.domains.0.main: domain.com
|
||||||
|
traefik.ingress.kubernetes.io/router.tls.domains.0.sans: one.domain.com,two.domain.com
|
||||||
|
traefik.ingress.kubernetes.io/router.tls.domains.1.main: example.com
|
||||||
|
traefik.ingress.kubernetes.io/router.tls.domains.1.sans: one.example.com,two.example.com
|
||||||
|
traefik.ingress.kubernetes.io/router.tls.options: foobar
|
||||||
|
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- http:
|
||||||
|
paths:
|
||||||
|
- path: /bar
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: service1
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
pathType: Exact
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
annotations:
|
||||||
|
ingress.kubernetes.io/foo: bar
|
||||||
|
traefik.ingress.kubernetes.io/foo: bar
|
||||||
|
traefik.ingress.kubernetes.io/service.serversscheme: protocol
|
||||||
|
traefik.ingress.kubernetes.io/service.serverstransport: foobar@file
|
||||||
|
traefik.ingress.kubernetes.io/service.passhostheader: "true"
|
||||||
|
traefik.ingress.kubernetes.io/service.sticky.cookie: "true"
|
||||||
|
traefik.ingress.kubernetes.io/service.sticky.cookie.httponly: "true"
|
||||||
|
traefik.ingress.kubernetes.io/service.sticky.cookie.name: foobar
|
||||||
|
traefik.ingress.kubernetes.io/service.sticky.cookie.secure: "true"
|
||||||
|
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
clusterIP: 10.0.0.1
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Endpoints
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.10.0.1
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.21.0.1
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
|
@ -1,15 +0,0 @@
|
||||||
kind: Endpoints
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
subsets:
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.10.0.1
|
|
||||||
ports:
|
|
||||||
- port: 8080
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.21.0.1
|
|
||||||
ports:
|
|
||||||
- port: 8080
|
|
|
@ -1,28 +0,0 @@
|
||||||
kind: Ingress
|
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
|
||||||
metadata:
|
|
||||||
name: ""
|
|
||||||
namespace: testing
|
|
||||||
annotations:
|
|
||||||
ingress.kubernetes.io/foo: bar
|
|
||||||
traefik.ingress.kubernetes.io/foo: bar
|
|
||||||
traefik.ingress.kubernetes.io/router.pathmatcher: Path
|
|
||||||
traefik.ingress.kubernetes.io/router.entrypoints: ep1,ep2
|
|
||||||
traefik.ingress.kubernetes.io/router.middlewares: md1,md2
|
|
||||||
traefik.ingress.kubernetes.io/router.priority: "42"
|
|
||||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
|
||||||
traefik.ingress.kubernetes.io/router.tls.certresolver: foobar
|
|
||||||
traefik.ingress.kubernetes.io/router.tls.domains.0.main: domain.com
|
|
||||||
traefik.ingress.kubernetes.io/router.tls.domains.0.sans: one.domain.com,two.domain.com
|
|
||||||
traefik.ingress.kubernetes.io/router.tls.domains.1.main: example.com
|
|
||||||
traefik.ingress.kubernetes.io/router.tls.domains.1.sans: one.example.com,two.example.com
|
|
||||||
traefik.ingress.kubernetes.io/router.tls.options: foobar
|
|
||||||
|
|
||||||
spec:
|
|
||||||
rules:
|
|
||||||
- http:
|
|
||||||
paths:
|
|
||||||
- path: /bar
|
|
||||||
backend:
|
|
||||||
serviceName: service1
|
|
||||||
servicePort: 80
|
|
|
@ -1,21 +0,0 @@
|
||||||
---
|
|
||||||
kind: Service
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: testing
|
|
||||||
annotations:
|
|
||||||
ingress.kubernetes.io/foo: bar
|
|
||||||
traefik.ingress.kubernetes.io/foo: bar
|
|
||||||
traefik.ingress.kubernetes.io/service.serversscheme: protocol
|
|
||||||
traefik.ingress.kubernetes.io/service.serverstransport: foobar@file
|
|
||||||
traefik.ingress.kubernetes.io/service.passhostheader: "true"
|
|
||||||
traefik.ingress.kubernetes.io/service.sticky.cookie: "true"
|
|
||||||
traefik.ingress.kubernetes.io/service.sticky.cookie.httponly: "true"
|
|
||||||
traefik.ingress.kubernetes.io/service.sticky.cookie.name: foobar
|
|
||||||
traefik.ingress.kubernetes.io/service.sticky.cookie.secure: "true"
|
|
||||||
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- port: 80
|
|
||||||
clusterIP: 10.0.0.1
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
kind: Ingress
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: ""
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- host: "*.bar"
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /bar
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: service1
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
pathType: Prefix
|
||||||
|
|
||||||
|
- host: "bar"
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /bar
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: service1
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
pathType: Prefix
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
clusterIP: 10.0.0.1
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Endpoints
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.10.0.1
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.21.0.1
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
|
@ -1,15 +0,0 @@
|
||||||
kind: Endpoints
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
subsets:
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.10.0.1
|
|
||||||
ports:
|
|
||||||
- port: 8080
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.21.0.1
|
|
||||||
ports:
|
|
||||||
- port: 8080
|
|
|
@ -1,23 +0,0 @@
|
||||||
kind: Ingress
|
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
|
||||||
metadata:
|
|
||||||
name: ""
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
rules:
|
|
||||||
- host: "*.bar"
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /bar
|
|
||||||
backend:
|
|
||||||
serviceName: service1
|
|
||||||
servicePort: 80
|
|
||||||
|
|
||||||
- host: "bar"
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /bar
|
|
||||||
backend:
|
|
||||||
serviceName: service1
|
|
||||||
servicePort: 80
|
|
|
@ -1,10 +0,0 @@
|
||||||
kind: Service
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- port: 80
|
|
||||||
clusterIP: 10.0.0.1
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
kind: Ingress
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: ""
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- http:
|
||||||
|
paths:
|
||||||
|
- path: /foo/bar
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: service1
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
pathType: Prefix
|
||||||
|
|
||||||
|
- path: /foo-bar
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: service1
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
pathType: Prefix
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
clusterIP: 10.0.0.1
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Endpoints
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.10.0.1
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.21.0.1
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
|
@ -1,15 +0,0 @@
|
||||||
kind: Endpoints
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
subsets:
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.10.0.1
|
|
||||||
ports:
|
|
||||||
- port: 8080
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.21.0.1
|
|
||||||
ports:
|
|
||||||
- port: 8080
|
|
|
@ -1,19 +0,0 @@
|
||||||
kind: Ingress
|
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
|
||||||
metadata:
|
|
||||||
name: ""
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
rules:
|
|
||||||
- http:
|
|
||||||
paths:
|
|
||||||
- path: /foo/bar
|
|
||||||
backend:
|
|
||||||
serviceName: service1
|
|
||||||
servicePort: 80
|
|
||||||
|
|
||||||
- path: /foo-bar
|
|
||||||
backend:
|
|
||||||
serviceName: service1
|
|
||||||
servicePort: 80
|
|
|
@ -1,10 +0,0 @@
|
||||||
kind: Service
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- port: 80
|
|
||||||
clusterIP: 10.0.0.1
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
kind: Ingress
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: ""
|
||||||
|
namespace: testing
|
||||||
|
annotations:
|
||||||
|
kubernetes.io/ingress.class: traefik
|
||||||
|
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- http:
|
||||||
|
paths:
|
||||||
|
- path: /bar
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: service1
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
pathType: Prefix
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
clusterIP: 10.0.0.1
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Endpoints
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.10.0.1
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
|
@ -1,11 +0,0 @@
|
||||||
kind: Endpoints
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
subsets:
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.10.0.1
|
|
||||||
ports:
|
|
||||||
- port: 8080
|
|
|
@ -1,16 +0,0 @@
|
||||||
kind: Ingress
|
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
|
||||||
metadata:
|
|
||||||
name: ""
|
|
||||||
namespace: testing
|
|
||||||
annotations:
|
|
||||||
kubernetes.io/ingress.class: traefik
|
|
||||||
|
|
||||||
spec:
|
|
||||||
rules:
|
|
||||||
- http:
|
|
||||||
paths:
|
|
||||||
- path: /bar
|
|
||||||
backend:
|
|
||||||
serviceName: service1
|
|
||||||
servicePort: 80
|
|
|
@ -1,10 +0,0 @@
|
||||||
kind: Service
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- port: 80
|
|
||||||
clusterIP: 10.0.0.1
|
|
|
@ -0,0 +1,62 @@
|
||||||
|
kind: Ingress
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: defaultbackend
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
defaultBackend:
|
||||||
|
service:
|
||||||
|
name: defaultservice
|
||||||
|
port:
|
||||||
|
number: 8080
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
clusterIP: 10.0.0.1
|
||||||
|
---
|
||||||
|
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: defaultservice
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
||||||
|
clusterIP: 10.0.0.1
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Endpoints
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.10.0.1
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Endpoints
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: defaultservice
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.10.0.1
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
|
@ -16,3 +16,28 @@ spec:
|
||||||
name: service1
|
name: service1
|
||||||
port:
|
port:
|
||||||
number: 80
|
number: 80
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
clusterIP: 10.0.0.1
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Endpoints
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.10.0.1
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
|
@ -0,0 +1,41 @@
|
||||||
|
kind: Ingress
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: ""
|
||||||
|
namespace: testing
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- http:
|
||||||
|
paths:
|
||||||
|
- path: /bar
|
||||||
|
pathType: Exact
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: service1
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
clusterIP: 10.0.0.1
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Endpoints
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.10.0.1
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
|
@ -16,3 +16,28 @@ spec:
|
||||||
name: service1
|
name: service1
|
||||||
port:
|
port:
|
||||||
number: 80
|
number: 80
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
clusterIP: 10.0.0.1
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Endpoints
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.10.0.1
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
|
@ -0,0 +1,43 @@
|
||||||
|
kind: Ingress
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: ""
|
||||||
|
namespace: testing
|
||||||
|
annotations:
|
||||||
|
kubernetes.io/ingress.class: traefik
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- http:
|
||||||
|
paths:
|
||||||
|
- path: /bar
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: service1
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
pathType: prefix
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
clusterIP: 10.0.0.1
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Endpoints
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.10.0.1
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
|
@ -0,0 +1,44 @@
|
||||||
|
kind: Ingress
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: ""
|
||||||
|
namespace: testing
|
||||||
|
annotations:
|
||||||
|
kubernetes.io/ingress.class: traefik
|
||||||
|
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- http:
|
||||||
|
paths:
|
||||||
|
- path: /bar
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: service1
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
pathType: Prefix
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
clusterIP: 10.0.0.1
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Endpoints
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.10.0.1
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
|
@ -1,11 +0,0 @@
|
||||||
kind: Endpoints
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
subsets:
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.10.0.1
|
|
||||||
ports:
|
|
||||||
- port: 8080
|
|
|
@ -1,16 +0,0 @@
|
||||||
kind: Ingress
|
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
|
||||||
metadata:
|
|
||||||
name: ""
|
|
||||||
namespace: testing
|
|
||||||
annotations:
|
|
||||||
kubernetes.io/ingress.class: traefik
|
|
||||||
|
|
||||||
spec:
|
|
||||||
rules:
|
|
||||||
- http:
|
|
||||||
paths:
|
|
||||||
- path: /bar
|
|
||||||
backend:
|
|
||||||
serviceName: service1
|
|
||||||
servicePort: 80
|
|
|
@ -1,10 +0,0 @@
|
||||||
kind: Service
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: service1
|
|
||||||
namespace: testing
|
|
||||||
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- port: 80
|
|
||||||
clusterIP: 10.0.0.1
|
|
|
@ -0,0 +1,51 @@
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: IngressClass
|
||||||
|
metadata:
|
||||||
|
name: traefik-lb
|
||||||
|
spec:
|
||||||
|
controller: traefik.io/ingress-controller
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Ingress
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: ""
|
||||||
|
namespace: testing
|
||||||
|
spec:
|
||||||
|
ingressClassName: traefik-lb
|
||||||
|
rules:
|
||||||
|
- http:
|
||||||
|
paths:
|
||||||
|
- path: /bar
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: service1
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
pathType: Prefix
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
clusterIP: 10.0.0.1
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Endpoints
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.10.0.1
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
||||||
|
|
|
@ -0,0 +1,77 @@
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: IngressClass
|
||||||
|
metadata:
|
||||||
|
name: traefik-lb2
|
||||||
|
spec:
|
||||||
|
controller: traefik.io/ingress-controller
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: IngressClass
|
||||||
|
metadata:
|
||||||
|
name: traefik-lb
|
||||||
|
spec:
|
||||||
|
controller: traefik.io/ingress-controller
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Ingress
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: ""
|
||||||
|
namespace: testing
|
||||||
|
spec:
|
||||||
|
ingressClassName: traefik-lb
|
||||||
|
rules:
|
||||||
|
- http:
|
||||||
|
paths:
|
||||||
|
- path: /bar
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: service1
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
pathType: Prefix
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Ingress
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: ""
|
||||||
|
namespace: testing
|
||||||
|
spec:
|
||||||
|
ingressClassName: traefik-lb2
|
||||||
|
rules:
|
||||||
|
- http:
|
||||||
|
paths:
|
||||||
|
- path: /foo
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: service1
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
pathType: Prefix
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
clusterIP: 10.0.0.1
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Endpoints
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.10.0.1
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
|
@ -0,0 +1,42 @@
|
||||||
|
kind: Ingress
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: ""
|
||||||
|
namespace: testing
|
||||||
|
spec:
|
||||||
|
ingressClassName: traefik-lb
|
||||||
|
rules:
|
||||||
|
- http:
|
||||||
|
paths:
|
||||||
|
- path: /bar
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: service1
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
pathType: Prefix
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
clusterIP: 10.0.0.1
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Endpoints
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.10.0.1
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
|
@ -0,0 +1,77 @@
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: IngressClass
|
||||||
|
metadata:
|
||||||
|
name: traefik-lb2
|
||||||
|
spec:
|
||||||
|
controller: traefik.io/ingress-controller
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: IngressClass
|
||||||
|
metadata:
|
||||||
|
name: traefik-lb
|
||||||
|
spec:
|
||||||
|
controller: traefik.io/ingress-controller
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Ingress
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: ""
|
||||||
|
namespace: testing
|
||||||
|
spec:
|
||||||
|
ingressClassName: traefik-lb
|
||||||
|
rules:
|
||||||
|
- http:
|
||||||
|
paths:
|
||||||
|
- path: /bar
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: service1
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
pathType: Prefix
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Ingress
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: ""
|
||||||
|
namespace: testing
|
||||||
|
spec:
|
||||||
|
ingressClassName: traefik-lb2
|
||||||
|
rules:
|
||||||
|
- http:
|
||||||
|
paths:
|
||||||
|
- path: /foo
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: service1
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
pathType: Prefix
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
clusterIP: 10.0.0.1
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: Endpoints
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: service1
|
||||||
|
namespace: testing
|
||||||
|
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.10.0.1
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue