Utiliser un contrôleur d'entrée personnalisé


Cette page explique comment utiliser un contrôleur d'entrée personnalisé avec Google Kubernetes Engine (GKE).

Utiliser un contrôleur d'entrée personnalisé avec le module complémentaire HttpLoadBalancing activé

Vous pouvez exécuter un contrôleur d'entrée personnalisé, tel que nginx-ingress, en désactivant le module complémentaire HttpLoadBalancing. Cela empêche le contrôleur GKE Ingress de traiter les ressources Ingress.

Si vous souhaitez exécuter un contrôleur d'entrée personnalisé avec le module complémentaire HttpLoadBalancing activé, par exemple pour utiliser des fonctionnalités telles que sous-paramètre et Private Service Connect, vous pouvez utiliser l'une des approches suivantes:

Vous devez vous assurer que spec.ingressClassName n'est pas accidentellement écrasé par un processus. Une opération de mise à jour qui transforme une valeur valide spec.IngressClassName en une chaîne vide ("") oblige le contrôleur GKE Ingress à traiter la ressource Ingress.

Configurer le champ ingressClassName

Vous pouvez utiliser un contrôleur d'entrée personnalisé en définissant le champ ingressClassName dans le fichier manifeste d'entrée. Le fichier manifeste suivant décrit une entrée spécifiant le contrôleur d'entrée nginx:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
 name: cafe-ingress
spec:
 ingressClassName: nginx
 tls:
 - hosts:
   - cafe.example.com
   secretName: cafe-secret
 rules:
 - host: cafe.example.com

Cette configuration est compatible avec l'API v1beta1 Ingress dans les versions 1.18 à 1.21 de GKE, et avec l'API Ingress v1 dans les versions 1.19 et ultérieures de GKE.

Configurer une classe Ingress par défaut

Vous pouvez configurer une classe Ingress par défaut pour toutes les ressources Ingress d'un cluster en créant une ressource IngressClass avec l'annotation ingressclass.kubernetes.io/is-default-class définie sur true:

apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
  name: nginx-public
  annotations:
    ingressclass.kubernetes.io/is-default-class: "true"
spec:
  controller: k8s.io/ingress-nginx

Cette configuration est disponible pour les clusters exécutant les versions 1.19 et ultérieures de GKE.

Résumé du comportement du contrôleur GKE Ingress

Pour les clusters exécutant les versions 1.18 et ultérieures de GKE, le fait que le contrôleur d'entrée GKE traite ou non une entrée dépend de la valeur de l'annotation kubernetes.io/ingress.class et du champ ingressClassName dans le fichier manifeste d'entrée. Pour en savoir plus, consultez la page Comportement du contrôleur GKE Ingress.

Étapes suivantes