Contrôleur d'entrée Citrix ADC

Routage de contenu avancé pour Kubernetes Ingress à l’aide du CRD HTTPRoute

Kubernetes native Ingress offre un routage de base basé sur l’hôte et le chemin qui est pris en charge par le Citrix ingress controller. Citrix propose également une approche alternative utilisant des CRD de routage de contenu pour prendre en charge des fonctionnalités de routage avancées. Les CRD de routage de contenu incluent le CRD Listener et le CRD HTTPRoute. Ces CRD fournissent des fonctionnalités de routage de contenu avancées telles que l’expression basée sur des expressions régulières et la commutation de contenu en fonction des paramètres de requête, des cookies, des en-têtes HTTP et d’autres expressions personnalisées Citrix ADC.

Avec la version Ingress networking.k8s.io/v1, Kubernetes introduit la prise en charge des moteurs de ressources. Un moteur de ressource est une ressource Kubernetes ObjectRef vers une autre ressource Kubernetes dans le même espace de noms qu’un objet Ingress.

Citrix prend désormais en charge la configuration de la ressource CRD de route HTTP en tant que moteur de ressource dans Ingress. Par défaut, Ingress ne prend en charge que des fonctionnalités de routage de contenu limitées telles que le routage basé sur le chemin et l’hôte. Grâce à cette fonctionnalité, vous pouvez étendre les fonctionnalités avancées de routage de contenu à Ingress et configurer diverses options de commutation de contenu. Pour un domaine donné, vous pouvez utiliser la ressource HTTPRoute personnalisée pour configurer la commutation de contenu sans perdre la prise en charge de la compatibilité tierce partie de l’API Kubernetes Ingress.

Architecture

Remarque :

  • Cette fonctionnalité prend en charge la version networking.k8s.io/v1 Kubernetes Ingress disponible sur Kubernetes 1.19 et les versions ultérieures.

  • Si le routage du chemin d’entrée et HTTPRoute sont utilisés pour le même domaine, toutes les stratégies de routage de contenu de la HTTPRoute ressource ont une priorité inférieure à celle des stratégies de routage de contenu basées sur l’entrée. Il est donc recommandé de configurer toutes les stratégies de commutation de contenu de laHTTPRoute ressource pour un domaine donné si un routage de contenu avancé est requis.

Configurer le routage de contenu avancé pour Kubernetes Ingress à l’aide du CRD HTTPRoute

Cette procédure indique comment déployer une ressource HTTPRoute en tant que moteur de ressource pour prendre en charge le routage de contenu avancé.

Conditions préalables

  • Assurez-vous que la version de l’API d’entrée networking.k8s.io/v1 est disponible dans le cluster Kubernetes.
  • Assurez-vous que le CRD HTTPRoute est déployé.

Déployer la ressource Ingress

Définissez la ressource Ingress avec le back-end de la ressource pointant vers une ressource HTTPRoute personnalisée dans un fichier YAML. Spécifiez toutes les configurations frontales telles que les certificats, les profils frontaux, l’adresse IP frontale et la classe d’entrée dans le cadre de la ressource Ingress.

Voici un exemple de ressource Ingress nommée sample-ingress.yaml.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: kuard-ingress
  annotations:
    ingress.citrix.com/frontend-ip: "x.x.x.x"
    kubernetes.io/ingress.class: citrix
    ingress.citrix.com/insecure-termination: "redirect"
spec:
  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
<!--NeedCopy-->

Après avoir défini la ressource Ingress dans un fichier YAML, déployez le fichier YAML à l’aide de la commande suivante. sample-ingress.yaml Voici la définition du fichier YAML.

kubectl apply -f sample-ingress.yaml

Dans cet exemple, les stratégies de commutation de contenu pour le domaine kuard.example.com sont définies dans le cadre de la ressource HTTPRoute personnalisée appelée kuard-example-route. Certificatesfrontend-ip, et ingress class sont spécifiés dans le cadre de la ressource Ingress. Les annotations dorsales telles que la méthode d’équilibrage de charge et les configurations de groupe de services sont spécifiées dans le cadre de la ressource HTTPRoute personnalisée.

Déployer la ressource HTTPRoute

Définissez la configuration de l’itinéraire HTTP dans un fichier YAML. Dans le fichier YAML, utilisez HTTPRoute dans le champ kind et dans la section spec, ajoutez les attributs HTTPRoute CRD en fonction de vos besoins pour la configuration de l’itinéraire HTTP.

Pour plus d’informations sur la description et les exemples d’API, consultez la documentation HTTPRoute.

Voici un exemple de configuration HTTPRoute des ressources. Cet exemple montre comment utiliser la commutation de contenu basée sur les paramètres de requête pour les différents microservices dorsaux 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
<!--NeedCopy-->

Après avoir défini les itinéraires HTTP dans le fichier YAML, déployez le fichier YAML. Dans cet exemple, httproute correspond à la définition YAML.

kubectl apply -f httproute.yaml
Routage de contenu avancé pour Kubernetes Ingress à l’aide du CRD HTTPRoute