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:
Dans le fichier manifeste Ingress, définissez l'annotation kubernetes.io/ingress.class. Cette configuration est compatible avec les clusters exécutant toutes les versions de GKE.
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:
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 :
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.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/09/01 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/09/01 (UTC)."],[],[],null,["# Use a custom Ingress controller\n\n[Autopilot](/kubernetes-engine/docs/concepts/autopilot-overview) [Standard](/kubernetes-engine/docs/concepts/choose-cluster-mode)\n\n*** ** * ** ***\n\nThis page describes how you can use a custom Ingress controller with\nGoogle Kubernetes Engine (GKE).\n| **Caution:** Google does not provide support for debugging issues with custom Ingress controllers.\n\nUse a custom Ingress controller with the `HttpLoadBalancing` add-on enabled\n---------------------------------------------------------------------------\n\nYou can run a custom Ingress controller, such as `nginx-ingress`, by disabling\nthe `HttpLoadBalancing` add-on. This prevents the GKE Ingress\ncontroller from processing Ingress resources.\n\nIf you want to run a custom Ingress controller with the `HttpLoadBalancing`\nadd-on enabled, for example to use features such as\n[subsetting](/kubernetes-engine/docs/how-to/internal-load-balancing#subsetting)\nand\n[Private Service Connect](/kubernetes-engine/docs/how-to/internal-load-balancing-across-vpc-net),\nyou can use one of the following approaches:\n\n- In the Ingress manifest, set the [`kubernetes.io/ingress.class`](https://kubernetes.io/docs/concepts/services-networking/ingress/#deprecated-annotation) annotation. This configuration is supported for clusters running all GKE versions.\n- [Configure the `ingressClassName` field](#ingress_class).\n- [Configure a default Ingress class](#default_class)\n\nYou must ensure that `spec.ingressClassName` is not accidentally overwritten by\nany process. An update operation that changes `spec.IngressClassName` from a\nvalid value to an empty string (`\"\"`) causes the GKE Ingress\ncontroller to process the Ingress.\n\nConfigure the `ingressClassName` field\n--------------------------------------\n\nYou can use a custom Ingress controller by setting the `ingressClassName`\nfield in the Ingress manifest. The following manifest describes an Ingress that\nspecifies the\n[`nginx` Ingress controller](https://kubernetes.github.io/ingress-nginx/): \n\n apiVersion: networking.k8s.io/v1\n kind: Ingress\n metadata:\n name: cafe-ingress\n spec:\n ingressClassName: nginx\n tls:\n - hosts:\n - cafe.example.com\n secretName: cafe-secret\n rules:\n - host: cafe.example.com\n\n| **Note:** If an Ingress has an empty `spec.ingressClassName` or `spec.ingressClassName` is not present, and the Ingress does not have the annotation `kubernetes.io/ingress.class`, the GKE Ingress controller processes the Ingress.\n\nThis configuration is supported with the Ingress `v1beta1` API in\nGKE versions 1.18 to 1.21 and the Ingress `v1` API in\nGKE versions 1.19 and later.\n\nConfigure a default Ingress class\n---------------------------------\n\nYou can configure a default Ingress class for all Ingress resources in a\ncluster by creating an\n[`IngressClass`](https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-class)\nresource with the annotation `ingressclass.kubernetes.io/is-default-class` set\nto `true`: \n\n apiVersion: networking.k8s.io/v1\n kind: IngressClass\n metadata:\n name: nginx-public\n annotations:\n ingressclass.kubernetes.io/is-default-class: \"true\"\n spec:\n controller: k8s.io/ingress-nginx\n\n| **Note:** The [admission controller](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/) populates the `spec.ingressClassName` field for new Ingress resources in the cluster, but does not modify existing Ingress resources.\n\nThis configuration is available for clusters running GKE\nversions 1.19 and later.\n\nSummary of GKE Ingress controller behavior\n------------------------------------------\n\nFor clusters running GKE versions 1.18 and later, whether or not\nthe GKE Ingress controller processes an Ingress depends on the\nvalue of the `kubernetes.io/ingress.class` annotation and the `ingressClassName`\nfield in the Ingress manifest. For more information, see\n[GKE Ingress controller behavior](/kubernetes-engine/docs/concepts/ingress#controller_summary).\n\nWhat's next\n-----------\n\n- [Learn more about load balancing in Google Cloud](/load-balancing/docs/https).\n- [Learn how to configure Ingress for internal Application Load Balancers](/kubernetes-engine/docs/how-to/internal-load-balance-ingress).\n- [Learn how to configure Ingress for external Application Load Balancers](/kubernetes-engine/docs/how-to/load-balance-ingress).\n- [Implement GKE Ingress using NGNIX Ingress](https://github.com/GoogleCloudPlatform/gke-networking-recipes/tree/main/ingress/single-cluster/ingress-nginx)."]]