Enrutamiento de contenido avanzado para Ingress de Kubernetes mediante el CRD HTTPRoute

Last published : Oct 02, 2026
El Ingress nativo de Kubernetes ofrece enrutamiento básico basado en host y ruta, que es compatible con el NetScaler Ingress Controller. NetScaler también proporciona un enfoque alternativo utilizando CRD de enrutamiento de contenido para admitir capacidades de enrutamiento avanzadas. Los CRD de enrutamiento de contenido incluyen Listener CRD y HTTPRoute CRD. Estos CRD proporcionan características avanzadas de enrutamiento de contenido, como expresiones basadas en regex y conmutación de contenido basada en parámetros de consulta, cookies, encabezados HTTP y otras expresiones personalizadas de NetScaler.
Con la versión de Ingress networking.k8s.io/v1, Kubernetes introduce soporte para backends de recursos. Un backend de recursos es una ObjectRef a otro recurso de Kubernetes dentro del mismo espacio de nombres que un objeto Ingress.
Ahora, NetScaler admite la configuración del recurso CRD de ruta HTTP como un backend de recursos en Ingress. Por defecto, Ingress solo admite capacidades limitadas de enrutamiento de contenido, como el enrutamiento basado en ruta y host. Con esta característica, puede extender las capacidades avanzadas de enrutamiento de contenido a Ingress y configurar varias opciones de conmutación de contenido. Para un dominio dado, puede usar el recurso personalizado HTTPRoute para configurar la conmutación de contenido sin perder la compatibilidad con terceros de la API de Ingress de Kubernetes.
Arquitectura
Nota:
  • Esta característica es compatible con la versión de Ingress de Kubernetes networking.k8s.io/v1 que está disponible en Kubernetes 1.19 y versiones posteriores.
  • Si el enrutamiento de ruta de Ingress y HTTPRoute se utilizan para el mismo dominio, todas las políticas de enrutamiento de contenido del recurso HTTPRoute tienen menor prioridad que las políticas de enrutamiento de contenido basadas en Ingress. Por lo tanto, se recomienda configurar todas las políticas de conmutación de contenido del recurso HTTPRoute para un dominio dado si se requiere un enrutamiento de contenido avanzado.

Configurar el enrutamiento de contenido avanzado para Ingress de Kubernetes mediante el CRD HTTPRoute

Este procedimiento muestra cómo implementar un recurso HTTPRoute como un backend de recursos para admitir el enrutamiento de contenido avanzado.

Requisitos previos

  • Asegúrese de que la versión de la API de Ingress networking.k8s.io/v1 esté disponible en el clúster de Kubernetes.
  • Asegúrese de que el CRD HTTPRoute esté implementado.

Implementar el recurso Ingress

Defina el recurso Ingress con el backend de recursos apuntando a un recurso personalizado HTTPRoute en un archivo YAML. Especifique todas las configuraciones de front-end, como certificados, perfiles de front-end, dirección IP de front-end y clase de Ingress, como parte del recurso Ingress.
A continuación se muestra un recurso Ingress de ejemplo denominado sample-ingress.yaml.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: kuard-ingress
  annotations:
    ingress.citrix.com/frontend-ip: "x.x.x.x"
    ingress.citrix.com/insecure-termination: "redirect"
spec:
  ingressClassName: citrix
  tls:
  - secretName: web-ingress-secret
  rules:
  - host: kuard.example.com
    http:
      paths:
      - pathType: ImplementationSpecific
        backend:
          resource:
            apiGroup: citrix.com
            kind: HTTPRoute
            name: kuard-example-route
Después de definir el recurso Ingress en un archivo YAML, implemente el archivo YAML utilizando el siguiente comando. Aquí, sample-ingress.yaml es la definición del archivo YAML.
kubectl apply -f sample-ingress.yaml
En este ejemplo, las políticas de conmutación de contenido para el dominio kuard.example.com se definen como parte del recurso personalizado HTTPRoute llamado kuard-example-route. Certificates, frontend-ip y ingress class se especifican como parte del recurso Ingress. Las anotaciones de back-end, como el método de equilibrio de carga y las configuraciones del grupo de servicios, se especifican como parte del recurso personalizado HTTPRoute.

Implementar el recurso HTTPRoute

Defina la configuración de la ruta HTTP en un archivo YAML. En el archivo YAML, utilice HTTPRoute en el campo kind y en la sección spec añada los atributos CRD HTTPRoute según sus requisitos para la configuración de la ruta HTTP.
Para obtener más información sobre la descripción y los ejemplos de la API, consulte la documentación de HTTPRoute.
A continuación se muestra una configuración de recurso HTTPRoute de ejemplo. Este ejemplo muestra cómo utilizar la conmutación de contenido basada en parámetros de consulta para los diversos microservicios de back-end de Kubernetes.
apiVersion: citrix.com/v1
kind: HTTPRoute
metadata:
   name: kuard-example-route
spec:
  hostname:
  - kuard.example.com
  rules:
  - name: kuard-blue
    match:
    - queryParams:
      - name: version
        contains: v2
    action:
      backend:
        kube:
          service: kuard-blue
          port: 80
  - name: kuard-green
    match:
    - queryParams:
      - name: version
        contains: v3
    action:
      backend:
        kube:
          service: kuard-green
          port: 80
  - name: kuard-default
    match:
    - path:
       prefix: /
    action:
      backend:
        kube:
          service: kuard-purple
          port: 80
Una vez que haya definido las rutas HTTP en el archivo YAML, implemente el archivo YAML. En este ejemplo, httproute es la definición de YAML.
kubectl apply -f httproute.yaml