NetScaler Ingress Controller

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.

Configuraciones de entrada