Contrôleur d'entrée Citrix ADC

Configurations d’entrée

Kubernetes Ingress vous permet d’acheminer les demandes vers les services en fonction de l’hôte ou du chemin d’accès de la demande, en centralisant un certain nombre de services en un seul point d’entrée.

Le Citrix ingress controller est construit autour de Kubernetes Ingress et configure automatiquement un ou plusieurs Citrix ADC en fonction de la configuration de la ressource Ingress.

Routage basé sur le nom d’hôte

L’exemple de définition d’entrée suivant montre comment configurer une entrée pour acheminer le trafic en fonction du nom d’hôte :

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-->

Une fois l’exemple de définition Ingress déployé, toute la demande HTTP avec un en-tête d’hôte est équilibrée par Citrix ADC vers service1. De plus, la demande HTTP avec un en-tête d’hôte est l’équilibreur de charge par Citrix ADC vers service2.

Routage basé sur le chemin

L’exemple de définition d’entrée suivant montre comment configurer une entrée pour acheminer le trafic en fonction du chemin d’accès de l’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-->

Une fois l’exemple de définition Ingress déployé, toutes les demandes HTTP avec un hôte test.example.com et un chemin d’URL avec préfixe /foo, Citrix ADC achemine la demande vers service1 et toutes les autres demandes sont routées vers service2.

Le Citrix ingress controller suit la stratégie de première correspondance pour évaluer les chemins. Pour une correspondance efficace, le Citrix ingress controller ordonne les chemins en fonction de l’ordre décroissant de la longueur du chemin. Il ordonne également les chemins qui appartiennent aux mêmes hôtes sur plusieurs ressources d’entrée.

Routage d’hôte générique

L’exemple de définition d’entrée suivant montre comment configurer une entrée avec un hôte générique.

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-->

Une fois l’exemple de définition Ingress déployé, les demandes HTTP vers tous les sous-domaines de example.com sont routées service1 par Citrix ADC.

Remarque :

Les règles comportant des hôtes non génériques ont une priorité supérieure à celle des hôtes génériques. Parmi les différents hôtes génériques, les règles sont ordonnées selon l’ordre décroissant de la longueur des hôtes.

Correspondance de chemin

Les entrées appartenant à networking.k8s.io/v1 ApiVersion peuvent être utilisées PathType: Exact pour considérer le chemin d’accès pour la correspondance exacte.

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-->

(Obsolète à partir de Kubernetes 1.22 et versions ultérieures) Par défaut pour les entrées appartenant à extension/v1beta1, les chemins sont traités comme des Prefix expressions. L’utilisation de l’annotation ingress.citrix.com/path-match-method: "exact" dans la définition d’entrée définit le Citrix ingress controller pour prendre en compte le chemin d’accès pour la correspondance exacte.

L’exemple de définition d’entrée suivant montre comment configurer Ingress pour une correspondance de chemin d’accès exacte :

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-->

Une fois l’exemple de définition Ingress déployé, les demandes HTTP avec chemin d’accès /exact sont routées par Citrix ADC vers service1 mais pas vers /exact/somepath.

Routage sans nom d’hôte

L’exemple suivant montre le routage basé sur le chemin pour le trafic par défaut qui ne correspond à aucun itinéraire basé sur l’hôte. Cette règle d’entrée s’applique à tout le trafic HTTP entrant via l’adresse IP spécifiée.

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-->

Tout le trafic entrant qui ne correspond pas aux règles d’entrée avec le nom d’hôte est mis en correspondance ici pour les chemins d’accès pour le routage.

Backend par défaut

Le back-end par défaut est un service qui gère tout le trafic qui n’est mis en correspondance avec aucune des règles d’entrée.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: default-ingress
  namespace: default
spec:
  defaultBackend:
    service:
      name: testsvc
      port:
        number: 80

<!--NeedCopy-->

Remarque :

Un back-end global par défaut peut être spécifié si Citrix ADC CPX équilibre la charge du trafic. Vous pouvez créer un back-end par défaut par frontend-ip:port combinaison dans le cas où Citrix ADC VPX ou MPX est le périphérique d’entrée.

Configurations d’entrée