Configuraciones de entrada
Kubernetes Ingress le proporciona una forma de redirigir solicitudes a los servicios en función del host o la ruta de la solicitud, centralizando varios servicios en un único punto de entrada.
El NetScaler Ingress Controller se basa en Kubernetes Ingress y configura automáticamente uno o más NetScaler en función de la configuración de recursos de Ingress.
Redirección basada en nombres de host
El siguiente ejemplo de definición de Ingress demuestra cómo configurar un Ingress para redirigir el tráfico en función del nombre de host:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: virtual-host-ingress
namespace: default
spec:
rules:
- host: foo.bar.com
http:
paths:
- backend:
service:
name: service1
port:
number: 80
pathType: Prefix
path: /
- host: bar.foo.com
http:
paths:
- backend:
service:
name: service2
port:
number: 80
pathType: Prefix
path: /
<!--NeedCopy-->
Después de implementar la definición de Ingress de muestra, NetScaler equilibra la carga de todas las solicitudes HTTP con un encabezado de host a service1
. Además, la solicitud HTTP con encabezado de host es un equilibrador de carga de NetScaler para service2
.
Redirección por rutas
El siguiente ejemplo de definición de Ingress demuestra cómo configurar un Ingress para redirigir el tráfico en función de la ruta URL:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: path-ingress
namespace: default
spec:
rules:
- host: test.example.com
http:
paths:
- backend:
service:
name: service1
port:
number: 80
path: /foo
pathType: Prefix
- backend:
service:
name: service2
port:
number: 80
path: /
pathType: Prefix
<!--NeedCopy-->
Después de implementar la definición de Ingress de ejemplo, todas las solicitudes HTTP con ruta de host test.example.com
y URL con prefijo /foo
, NetScaler redirige la solicitud service1
y todas las demás solicitudes se redirigen a service2
.
NetScaler Ingress Controller sigue la política de primera coincidencia para evaluar las rutas. Para lograr una coincidencia eficaz, NetScaler Ingress Controller ordena las rutas en función del orden descendente de la longitud de la ruta. También ordena las rutas que pertenecen a los mismos hosts en varios recursos de entrada.
Redirección host comodín
En el siguiente ejemplo de definición de Ingress se demuestra cómo configurar una entrada con un host comodín.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: wildcard-ingress
namespace: default
spec:
rules:
- host: '*.example.com'
http:
paths:
- backend:
service:
name: service1
port:
number: 80
path: /
pathType: Prefix
<!--NeedCopy-->
Después de implementar la definición de Ingress de ejemplo, NetScaler redirige las solicitudes HTTP de todos los subdominios de example.com
a service1
.
Nota:
Las reglas con hosts no comodín reciben mayor prioridad que los hosts comodín. Entre los diferentes hosts comodín, las reglas se ordenan en orden descendente de longitud de los hosts.
Coincidencia de ruta exacta
Las entradas que pertenecen a networking.k8s.io/v1
APIVersion pueden utilizar PathType: Exact
para considerar la ruta de la coincidencia exacta.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: Path-exact-Ingress
namespace: default
spec:
rules:
- host: test.example.com
http:
paths:
- backend:
service:
name: service1
port:
name: 80
path: /exact
pathType: Exact
<!--NeedCopy-->
(Obsoleto a partir de Kubernetes 1.22 y posteriores) De forma predeterminada, para los Ingresos que pertenecen a extension/v1beta1
, las rutas se tratan como expresiones Prefix
. El uso de la anotación ingress.citrix.com/path-match-method: "exact"
de la definición de ingreso define el Ingress Controller de NetScaler para considerar la ruta de la coincidencia exacta.
En el siguiente ejemplo de definición de Ingress se demuestra cómo configurar Ingress para una coincidencia de ruta exacta:
apiVersion: extension/v1beta1
kind: Ingress
metadata:
name: path-exact-ingress
namespace: default
annotations:
ingress.citrix.com/path-match-method: "exact"
spec:
rules:
- host:test.example.com
http:
paths:
- path: /exact
backend:
serviceName: service1
servicePort: 80
<!--NeedCopy-->
Después de implementar la definición de Ingress de ejemplo, NetScaler redirige las solicitudes HTTP con ruta /exact
a service1
, pero no a /exact/somepath
.
Redirección sin nombre de host
El siguiente ejemplo muestra la redirección basada en rutas para el tráfico predeterminado que no coincide con ninguna ruta basada en host. Esta regla de entrada se aplica a todo el tráfico HTTP entrante a través de la dirección IP especificada.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: default-path-ingress
namespace: default
spec:
rules:
- http:
paths:
- backend:
service:
name: service1
port:
number: 80
path: /foo
pathType: Prefix
- backend:
service:
name: service2
port:
number: 80
path: /
pathType: Prefix
<!--NeedCopy-->
Todo el tráfico entrante que no coincida con las reglas de entrada con el nombre de host coincide aquí para las rutas de redirección.
Backend predeterminado
El back-end predeterminado es un servicio que maneja todo el tráfico que no se compara con ninguna de las reglas de ingreso.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: default-ingress
namespace: default
spec:
defaultBackend:
service:
name: testsvc
port:
number: 80
<!--NeedCopy-->
Nota:
Se puede especificar un back-end predeterminado global si NetScaler CPX equilibra la carga del tráfico. Puede crear un back-end predeterminado por
frontend-ip:port
combinación en caso de que NetScaler VPX o MPX sea el dispositivo de entrada.