APIG Ingress prend en charge 51 annotations NGINX Ingress pour une migration transparente et 40 annotations étendues pour la gouvernance du trafic et la sécurité.
Résumé de la prise en charge des annotations
| Catégorie | Nombre | Description |
|---|---|---|
| Annotations compatibles avec NGINX Ingress | 51 | Couvrent 90 % des cas d'utilisation |
| Annotations sans effet fonctionnel | 15 | Aucune configuration requise |
| Annotations à prendre en charge | 48 | Prévu ; utilisé dans des scénarios limités |
| Annotations non prises en charge | 5 | Spécifiques aux extraits de code internes de NGINX Ingress |
| Annotations étendues APIG | 40 | Contrôles supplémentaires de gouvernance du trafic et de sécurité au-delà de NGINX Ingress |
Référence rapide
Cliquez sur une annotation pour consulter sa description complète.
| Annotation | Portée | Statut | Valeur par défaut | Catégorie |
|---|---|---|---|---|
nginx.ingress.kubernetes.io/canary |
Ingress | Compatible | — | Déploiement Canary |
nginx.ingress.kubernetes.io/canary-by-header |
Ingress | Compatible | — | Déploiement Canary |
nginx.ingress.kubernetes.io/canary-by-header-value |
Ingress | Compatible | — | Déploiement Canary |
nginx.ingress.kubernetes.io/canary-by-header-pattern |
Ingress | Compatible | — | Déploiement Canary |
higress.ingress.kubernetes.io/canary-by-query |
Ingress | Extension Higress | — | Déploiement Canary |
higress.ingress.kubernetes.io/canary-by-query-value |
Ingress | Extension Higress | — | Déploiement Canary |
higress.ingress.kubernetes.io/canary-by-query-pattern |
Ingress | Extension Higress | — | Déploiement Canary |
nginx.ingress.kubernetes.io/canary-by-cookie |
Ingress | Compatible | — | Déploiement Canary |
higress.ingress.kubernetes.io/canary-by-cookie-value |
Ingress | Extension Higress (V1.2.30+) | — | Déploiement Canary |
nginx.ingress.kubernetes.io/canary-weight |
Ingress | Compatible | — | Déploiement Canary |
nginx.ingress.kubernetes.io/canary-weight-total |
Ingress | Compatible | — | Déploiement Canary |
higress.ingress.kubernetes.io/destination |
Ingress | Extension Higress | — | Routage multi-services |
higress.ingress.kubernetes.io/service-subset |
Ingress | Extension Higress (V1.2.25+) | — | Sous-ensembles de services |
higress.ingress.kubernetes.io/subset-labels |
Ingress | Extension Higress (V1.2.25+) | — | Sous-ensembles de services |
nginx.ingress.kubernetes.io/default-backend |
Ingress | Compatible | — | Secours |
nginx.ingress.kubernetes.io/custom-http-errors |
Ingress | Compatible | — | Secours |
nginx.ingress.kubernetes.io/use-regex |
Ingress | Compatible | — | Correspondance regex |
nginx.ingress.kubernetes.io/rewrite-target |
Ingress | Compatible | — | Réécriture |
nginx.ingress.kubernetes.io/upstream-vhost |
Ingress | Compatible | — | Réécriture |
nginx.ingress.kubernetes.io/ssl-redirect |
Ingress | Compatible | — | Redirection |
nginx.ingress.kubernetes.io/force-ssl-redirect |
Ingress | Compatible | — | Redirection |
nginx.ingress.kubernetes.io/permanent-redirect |
Ingress | Compatible | — | Redirection |
nginx.ingress.kubernetes.io/permanent-redirect-code |
Ingress | Compatible | — | Redirection |
nginx.ingress.kubernetes.io/temporal-redirect |
Ingress | Compatible | — | Redirection |
nginx.ingress.kubernetes.io/app-root |
Ingress | Compatible | — | Redirection |
nginx.ingress.kubernetes.io/enable-cors |
Ingress | Compatible | — | CORS |
nginx.ingress.kubernetes.io/cors-allow-origin |
Ingress | Compatible | — | CORS |
nginx.ingress.kubernetes.io/cors-allow-methods |
Ingress | Compatible | — | CORS |
nginx.ingress.kubernetes.io/cors-allow-headers |
Ingress | Compatible | — | CORS |
nginx.ingress.kubernetes.io/cors-expose-headers |
Ingress | Compatible | — | CORS |
nginx.ingress.kubernetes.io/cors-allow-credentials |
Ingress | Compatible | — | CORS |
nginx.ingress.kubernetes.io/cors-max-age |
Ingress | Compatible | — | CORS |
higress.ingress.kubernetes.io/request-header-control-add |
Ingress | Extension Higress | — | Contrôle des en-têtes |
higress.ingress.kubernetes.io/request-header-control-update |
Ingress | Extension Higress | — | Contrôle des en-têtes |
higress.ingress.kubernetes.io/request-header-control-remove |
Ingress | Extension Higress | — | Contrôle des en-têtes |
higress.ingress.kubernetes.io/response-header-control-add |
Ingress | Extension Higress | — | Contrôle des en-têtes |
higress.ingress.kubernetes.io/response-header-control-update |
Ingress | Extension Higress | — | Contrôle des en-têtes |
higress.ingress.kubernetes.io/response-header-control-remove |
Ingress | Extension Higress | — | Contrôle des en-têtes |
higress.ingress.kubernetes.io/timeout |
Ingress | Extension Higress | Aucune | Délai d'expiration |
nginx.ingress.kubernetes.io/proxy-next-upstream-tries |
Ingress | Compatible | 3 |
Nouvelle tentative |
nginx.ingress.kubernetes.io/proxy-next-upstream-timeout |
Ingress | Compatible | Aucune | Nouvelle tentative |
nginx.ingress.kubernetes.io/proxy-next-upstream |
Ingress | Compatible | — | Nouvelle tentative |
higress.ingress.kubernetes.io/mirror-target-service |
Ingress | Extension Higress | — | Mise en miroir du trafic |
higress.ingress.kubernetes.io/mirror-percentage |
Ingress | Extension Higress (V1.2.32+) | 100 |
Mise en miroir du trafic |
nginx.ingress.kubernetes.io/server-alias |
Nom de domaine | Partiellement compatible (V1.2.30+) | — | Alias de domaine |
higress.ingress.kubernetes.io/route-limit-rpm |
Ingress | Extension Higress | — | Limitation de débit (obsolète) |
higress.ingress.kubernetes.io/route-limit-rps |
Ingress | Extension Higress | — | Limitation de débit (obsolète) |
higress.ingress.kubernetes.io/route-limit-burst-multiplier |
Ingress | Extension Higress | 5 |
Limitation de débit (obsolète) |
higress.ingress.kubernetes.io/rate-limit |
Ingress | Extension Higress (V1.2.25+) | — | Limitation globale du débit |
higress.ingress.kubernetes.io/rate-limit-fallback-custom-response-code |
Ingress | Extension Higress (V1.2.25+) | 429 |
Limitation globale du débit |
higress.ingress.kubernetes.io/rate-limit-fallback-custom-response-body-type |
Ingress | Extension Higress (V1.2.25+) | text |
Limitation globale du débit |
higress.ingress.kubernetes.io/rate-limit-fallback-custom-response-body |
Ingress | Extension Higress (V1.2.25+) | sentinel rate limited |
Limitation globale du débit |
higress.ingress.kubernetes.io/rate-limit-fallback-redirect-url |
Ingress | Extension Higress (V1.2.25+) | — | Limitation globale du débit |
higress.ingress.kubernetes.io/concurrency-limit |
Ingress | Extension Higress (V1.2.25+) | — | Concurrence globale |
higress.ingress.kubernetes.io/concurrency-limit-fallback-custom-response-code |
Ingress | Extension Higress (V1.2.25+) | 429 |
Concurrence globale |
higress.ingress.kubernetes.io/concurrency-limit-fallback-custom-response-body-type |
Ingress | Extension Higress (V1.2.25+) | text |
Concurrence globale |
higress.ingress.kubernetes.io/concurrency-limit-fallback-custom-response-body |
Ingress | Extension Higress (V1.2.25+) | sentinel rate limited |
Concurrence globale |
higress.ingress.kubernetes.io/concurrency-limit-fallback-redirect-url |
Ingress | Extension Higress (V1.2.25+) | — | Concurrence globale |
nginx.ingress.kubernetes.io/backend-protocol |
Service | Partiellement compatible | HTTP |
Protocole backend |
nginx.ingress.kubernetes.io/load-balance |
Service | Partiellement compatible | round_robin |
Équilibrage de charge |
nginx.ingress.kubernetes.io/upstream-hash-by |
Service | Partiellement compatible | — | Équilibrage de charge |
higress.ingress.kubernetes.io/warmup |
Service | Extension Higress | Désactivé | Préchauffage |
nginx.ingress.kubernetes.io/affinity |
Service | Compatible | cookie |
Affinité de cookie |
nginx.ingress.kubernetes.io/affinity-mode |
Service | Partiellement compatible | balanced |
Affinité de cookie |
nginx.ingress.kubernetes.io/session-cookie-name |
Service | Compatible | — | Affinité de cookie |
nginx.ingress.kubernetes.io/session-cookie-path |
Service | Compatible | / |
Affinité de cookie |
nginx.ingress.kubernetes.io/session-cookie-max-age |
Service | Compatible | Niveau session | Affinité de cookie |
nginx.ingress.kubernetes.io/session-cookie-expires |
Service | Compatible | Niveau session | Affinité de cookie |
nginx.ingress.kubernetes.io/whitelist-source-range |
Ingress | Compatible | — | Contrôle d'accès IP |
nginx.ingress.kubernetes.io/denylist-source-range |
Ingress | Compatible (V1.2.31+) | — | Contrôle d'accès IP |
higress.ingress.kubernetes.io/blacklist-source-range |
Ingress | Extension Higress | — | Contrôle d'accès IP |
higress.ingress.kubernetes.io/domain-whitelist-source-range |
Ingress | Extension Higress | — | Contrôle d'accès IP |
higress.ingress.kubernetes.io/domain-blacklist-source-range |
Ingress | Extension Higress | — | Contrôle d'accès IP |
higress.ingress.kubernetes.io/connection-policy-tcp-max-connection |
Service | Extension Higress | — | Pool de connexions |
higress.ingress.kubernetes.io/connection-policy-tcp-max-connection-per-endpoint |
Service | Extension Higress | — | Pool de connexions |
higress.ingress.kubernetes.io/connection-policy-http-max-request-per-connection |
Service | Extension Higress | — | Pool de connexions |
higress.ingress.kubernetes.io/tls-min-protocol-version |
Nom de domaine | Extension Higress | TLSv1.0 |
TLS client-vers-passerelle |
higress.ingress.kubernetes.io/tls-max-protocol-version |
Nom de domaine | Extension Higress | TLSv1.3 |
TLS client-vers-passerelle |
nginx.ingress.kubernetes.io/ssl-cipher |
Nom de domaine | Compatible | Voir la description | TLS client-vers-passerelle |
higress.ingress.kubernetes.io/auth-tls-secret |
Nom de domaine | Partiellement compatible | — | TLS client-vers-passerelle |
nginx.ingress.kubernetes.io/proxy-ssl-secret |
Service | Compatible | — | TLS passerelle-vers-backend |
nginx.ingress.kubernetes.io/proxy-ssl-name |
Service | Compatible | — | TLS passerelle-vers-backend |
nginx.ingress.kubernetes.io/proxy-ssl-server-name |
Service | Compatible | — | TLS passerelle-vers-backend |
nginx.ingress.kubernetes.io/auth-type |
Ingress | Partiellement compatible | — | Authentification de base |
nginx.ingress.kubernetes.io/auth-secret |
Ingress | Compatible | — | Authentification de base |
nginx.ingress.kubernetes.io/auth-secret-type |
Ingress | Compatible | — | Authentification de base |
nginx.ingress.kubernetes.io/auth-realm |
Ingress | Compatible | — | Authentification de base |
Portée
Chaque annotation s'applique à une portée spécifique :
Ingress — S'applique aux règles de routage de la ressource Ingress sur laquelle l'annotation est définie.
Nom de domaine — S'applique à toutes les ressources Ingress qui partagent les mêmes hôtes.
Service — S'applique à toutes les ressources Ingress qui partagent les mêmes services.
Préfixes d'annotation
Pour les annotations partagées entre NGINX Ingress et APIG Ingress, ces préfixes sont interchangeables :
nginx.ingress.kubernetes.io/xxxhigress.ingress.kubernetes.io/xxx
Les annotations marquées Higress extension nécessitent le préfixe higress et ne peuvent pas utiliser le préfixe nginx.
Notes de compatibilité
Principales différences par rapport à NGINX Ingress :
Variables NGINX : Les variables NGINX utilisées dans les annotations et les extraits de code ne sont pas compatibles avec APIG Ingress. Vérifiez les annotations dépendantes des variables avant la migration.
Taille du corps de la requête : NGINX Ingress utilise
nginx.ingress.kubernetes.io/proxy-body-sizepour imposer une limite stricte et renvoie une erreur en cas de dépassement. APIG Ingress utilise un streaming par blocs sans limite prédéfinie de taille de corps. Pour les transferts de fichiers volumineux, ajustezDownstreamConnectionBufferLimitsdans la configuration de l'instance de passerelle.
Annotations de gouvernance du trafic
Déploiement canari
| Annotation | Portée | Statut | Description |
|---|---|---|---|
nginx.ingress.kubernetes.io/canary |
Ingress | Compatible | Active ou désactive le déploiement canari pour une route. |
nginx.ingress.kubernetes.io/canary-by-header |
Ingress | Compatible | Clé d'en-tête de requête utilisée pour la répartition du trafic. |
nginx.ingress.kubernetes.io/canary-by-header-value |
Ingress | Compatible | Valeur d'en-tête de requête pour la répartition du trafic. Prend en charge la correspondance exacte. |
nginx.ingress.kubernetes.io/canary-by-header-pattern |
Ingress | Compatible | Valeur d'en-tête de requête pour la répartition du trafic. Prend en charge les expressions régulières. |
higress.ingress.kubernetes.io/canary-by-query |
Ingress | Extension Higress | Clé de paramètre de requête URL utilisée pour la répartition du trafic. |
higress.ingress.kubernetes.io/canary-by-query-value |
Ingress | Extension Higress | Valeur de paramètre de requête URL pour la répartition du trafic. Prend en charge la correspondance exacte. |
higress.ingress.kubernetes.io/canary-by-query-pattern |
Ingress | Extension Higress | Valeur de paramètre de requête URL pour la répartition du trafic. Prend en charge les expressions régulières. |
nginx.ingress.kubernetes.io/canary-by-cookie |
Ingress | Compatible | Clé de cookie utilisée pour la répartition du trafic. |
higress.ingress.kubernetes.io/canary-by-cookie-value |
Ingress | Extension Higress (V1.2.30+) | Valeur de cookie pour la répartition du trafic. Prend en charge la correspondance exacte. |
nginx.ingress.kubernetes.io/canary-weight |
Ingress | Compatible | Pondération du service utilisée pour la répartition du trafic. |
nginx.ingress.kubernetes.io/canary-weight-total |
Ingress | Compatible | Pondération totale pour la répartition du trafic. |
Routage multi-services
| Annotation | Portée | Statut | Description |
|---|---|---|---|
higress.ingress.kubernetes.io/destination |
Ingress | Extension Higress | Répartit le trafic entre plusieurs services selon une pondération. Syntaxe : {weight}% {serviceName}.{serviceNamespace}.svc.cluster.local:{port} |
La définition de cette annotation modifie la destination de toutes les règles de routage sur l'Ingress. Si la syntaxe est incorrecte, l'annotation est ignorée et le routage reste inchangé.
Exemple :
annotations:
# 60% of traffic goes to foo, 40% to bar
higress.ingress.kubernetes.io/destination: |
60% foo.default.svc.cluster.local:8080
40% bar.default.svc.cluster.local:9090
Sous-ensembles de services
Acheminez les requêtes vers un sous-ensemble spécifique de pods lorsqu'un service gère plusieurs déploiements.
| Annotation | Portée | Statut | Description |
|---|---|---|---|
higress.ingress.kubernetes.io/service-subset |
Ingress | Extension Higress (V1.2.25+) | Identifie le sous-ensemble de pods vers lequel acheminer les requêtes. |
higress.ingress.kubernetes.io/subset-labels |
Ingress | Extension Higress (V1.2.25+) | (Facultatif) Sélecteur d'étiquettes utilisé avec service-subset pour classer les pods en sous-ensembles. |
Comportement de routage pour service-subset :
-
Si
subset-labelsn'est pas défini :Défini sur
""oubase— achemine vers les pods étiquetésopensergo.io/canary: ""ou les pods sans clé d'étiquetteopensergo.io/canary.Défini sur toute autre valeur (par exemple,
gray) — achemine vers les pods étiquetésopensergo.io/canary-gray: gray.
Si
subset-labelsest défini — achemine uniquement vers les pods dont les étiquettes correspondent aux paires clé-valeur définies danssubset-labels.
Si aucun pod ne correspond à l'étiquette spécifiée, les requêtes sont automatiquement transférées vers tous les pods du service.
Exemple :
annotations:
# Route to the "gray" subset of Pods
higress.ingress.kubernetes.io/service-subset: "gray"
Secours (Fallback)
| Annotation | Portée | Statut | Description |
|---|---|---|---|
nginx.ingress.kubernetes.io/default-backend |
Ingress | Compatible | Service de secours lorsque aucun nœud principal sain n'est disponible. |
nginx.ingress.kubernetes.io/custom-http-errors |
Ingress | Compatible | Codes d'état HTTP qui déclenchent le transfert vers le service de secours. |
Lorsqu'une requête est transférée vers le service de secours, le chemin de la requête est réécrit en /. Ce comportement correspond à celui de NGINX Ingress.
Correspondance par expression régulière
| Annotation | Portée | Statut | Description |
|---|---|---|---|
nginx.ingress.kubernetes.io/use-regex |
Ingress | Compatible | Active la correspondance de chemin par expression régulière sur l'Ingress en utilisant la syntaxe RE2. |
Réécriture
| Annotation | Portée | Statut | Description |
|---|---|---|---|
nginx.ingress.kubernetes.io/rewrite-target |
Ingress | Compatible | Chemin de destination pour la réécriture d'URL. Les groupes de capture sont pris en charge. |
nginx.ingress.kubernetes.io/upstream-vhost |
Ingress | Compatible | Réécrit l'en-tête Host dans les requêtes transférées vers un service backend. |
Redirection
L'utilisation des variables NGINX pour la redirection n'est pas documentée dans NGINX Ingress et peut entraîner des problèmes de compatibilité. Évitez d'utiliser les variables NGINX dans les annotations de redirection.
| Annotation | Portée | Statut | Description |
|---|---|---|---|
nginx.ingress.kubernetes.io/ssl-redirect |
Ingress | Compatible | Redirige HTTP vers HTTPS. |
nginx.ingress.kubernetes.io/force-ssl-redirect |
Ingress | Compatible | Force la redirection de HTTP vers HTTPS. |
nginx.ingress.kubernetes.io/permanent-redirect |
Ingress | Compatible | Envoie une redirection permanente vers l'URL spécifiée. |
nginx.ingress.kubernetes.io/permanent-redirect-code |
Ingress | Compatible | Code d'état HTTP utilisé pour les redirections permanentes. |
nginx.ingress.kubernetes.io/temporal-redirect |
Ingress | Compatible | Envoie une redirection temporaire vers l'URL spécifiée. |
nginx.ingress.kubernetes.io/app-root |
Ingress | Compatible | Redirige les requêtes depuis / vers le chemin racine de l'application spécifié. |
CORS
| Annotation | Portée | Statut | Description |
|---|---|---|---|
nginx.ingress.kubernetes.io/enable-cors |
Ingress | Compatible | Active le partage de ressources cross-origin (CORS). |
nginx.ingress.kubernetes.io/cors-allow-origin |
Ingress | Compatible | Origines autorisées pour les requêtes CORS. |
nginx.ingress.kubernetes.io/cors-allow-methods |
Ingress | Compatible | Méthodes HTTP autorisées pour CORS. Inclut GET, POST et PUT. |
nginx.ingress.kubernetes.io/cors-allow-headers |
Ingress | Compatible | En-têtes de requête autorisés pour CORS. |
nginx.ingress.kubernetes.io/cors-expose-headers |
Ingress | Compatible | En-têtes de réponse exposés aux navigateurs. |
nginx.ingress.kubernetes.io/cors-allow-credentials |
Ingress | Compatible | Indique si les identifiants peuvent être inclus dans les requêtes CORS. |
nginx.ingress.kubernetes.io/cors-max-age |
Ingress | Compatible | Durée de mise en cache (en secondes) des résultats des requêtes préliminaires. |
Contrôle des en-têtes
Les annotations de contrôle des en-têtes sur les routes de base et canari sont indépendantes et validées séparément. Utilisez-les pour configurer des politiques d'en-têtes distinctes pour chaque type de trafic.
| Annotation | Portée | Statut | Description |
|---|---|---|---|
higress.ingress.kubernetes.io/request-header-control-add |
Ingress | Extension Higress | Ajoute un en-tête aux requêtes transférées. Si l'en-tête existe, la valeur est ajoutée. |
higress.ingress.kubernetes.io/request-header-control-update |
Ingress | Extension Higress | Écrase un en-tête dans les requêtes transférées. |
higress.ingress.kubernetes.io/request-header-control-remove |
Ingress | Extension Higress | Supprime un en-tête des requêtes transférées. |
higress.ingress.kubernetes.io/response-header-control-add |
Ingress | Extension Higress | Ajoute un en-tête aux réponses client. Si l'en-tête existe, la valeur est ajoutée. |
higress.ingress.kubernetes.io/response-header-control-update |
Ingress | Extension Higress | Écrase un en-tête dans les réponses client. |
higress.ingress.kubernetes.io/response-header-control-remove |
Ingress | Extension Higress | Supprime un en-tête des réponses client. |
Syntaxe :
En-tête unique (ajout/mise à jour) : Utilisez une paire clé-valeur. Exemple :
X-Custom-Header: valuePlusieurs en-têtes (ajout/mise à jour) : Utilisez un scalaire de bloc YAML (
|). Chaque paire clé-valeur sur une ligne distincte.En-tête unique (suppression) : Utilisez uniquement la clé de l'en-tête.
Plusieurs en-têtes (suppression) : Clés d'en-tête séparées par des virgules.
Exemple — ajouter un en-tête de requête :
annotations:
higress.ingress.kubernetes.io/request-header-control-add: "X-Request-Id: abc123"
Exemple — ajouter plusieurs en-têtes de réponse :
annotations:
higress.ingress.kubernetes.io/response-header-control-add: |
X-Custom-Header: value1
X-Another-Header: value2
Exemple — supprimer plusieurs en-têtes de requête :
annotations:
higress.ingress.kubernetes.io/request-header-control-remove: "X-Forwarded-For,X-Real-IP"
Délai d'expiration (Timeout)
| Annotation | Portée | Statut | Par défaut | Description |
|---|---|---|---|---|
higress.ingress.kubernetes.io/timeout |
Ingress | Extension Higress | Aucun | Délai d'expiration de la requête en secondes. |
Ce délai d'expiration s'applique au niveau de la couche application (HTTP), et non au niveau de la couche de transport TCP.
Nouvelle tentative (Retry)
| Annotation | Portée | Statut | Par défaut | Description |
|---|---|---|---|---|
nginx.ingress.kubernetes.io/proxy-next-upstream-tries |
Ingress | Compatible | 3 |
Nombre maximal de tentatives de nouvelle tentative. |
nginx.ingress.kubernetes.io/proxy-next-upstream-timeout |
Ingress | Compatible | Aucun | Délai d'expiration pour les tentatives de nouvelle tentative, en secondes. |
nginx.ingress.kubernetes.io/proxy-next-upstream |
Ingress | Compatible | — | Conditions de nouvelle tentative. Consultez le mécanisme de nouvelle tentative NGINX pour connaître les valeurs valides. |
Mise en miroir du trafic
| Annotation | Portée | Statut | Par défaut | Description |
|---|---|---|---|---|
higress.ingress.kubernetes.io/mirror-target-service |
Ingress | Extension Higress | — | Service cible pour le trafic mis en miroir. Format : namespace/name:port. namespace prend par défaut l'espace de noms de la passerelle Ingress ; port prend par défaut le premier port. name est obligatoire. |
higress.ingress.kubernetes.io/mirror-percentage |
Ingress | Extension Higress (V1.2.32+) | 100 |
Pourcentage de trafic à mettre en miroir. Valeurs valides : 0–100. |
Exemple :
annotations:
# Mirror 20% of traffic to the shadow service
higress.ingress.kubernetes.io/mirror-target-service: "default/shadow-service:8080"
higress.ingress.kubernetes.io/mirror-percentage: "20"
Alias de domaine
| Annotation | Portée | Statut | Description |
|---|---|---|---|
nginx.ingress.kubernetes.io/server-alias |
Nom de domaine | Partiellement compatible (V1.2.30+) | Domaine alias partageant la configuration TLS, de routage et de gouvernance du trafic du domaine principal. Prend uniquement en charge les domaines à correspondance exacte et les domaines génériques. |
Limitation de débit (obsolète)
Ces annotations sont obsolètes. Utilisez plutôt le contrôle global de la limitation de débit.
| Annotation | Portée | Statut | Par défaut | Description |
|---|---|---|---|---|
higress.ingress.kubernetes.io/route-limit-rpm |
Ingress | Extension Higress | — | Nombre maximal de requêtes par minute (RPM) par passerelle. Limite de rafale = valeur × route-limit-burst-multiplier. Lorsqu'elle est déclenchée, le corps de la réponse est local_rate_limited. Renvoie 503 avant la version V1.2.23, 429 à partir de la version V1.2.23. |
higress.ingress.kubernetes.io/route-limit-rps |
Ingress | Extension Higress | — | Nombre maximal de requêtes par seconde (RPS) par passerelle. Même comportement de rafale et de réponse que route-limit-rpm. |
higress.ingress.kubernetes.io/route-limit-burst-multiplier |
Ingress | Extension Higress | 5 |
Multiplicateur de limite de rafale. |
Contrôle global de la limitation de débit (recommandé)
Toutes les annotations de cette section nécessitent la version V1.2.25 ou ultérieure de la passerelle.
| Annotation | Portée | Statut | Par défaut | Description |
|---|---|---|---|---|
higress.ingress.kubernetes.io/rate-limit |
Ingress | Extension Higress | — | Nombre maximal de RPS pour la route. Utilisé pour la limitation globale de débit. |
higress.ingress.kubernetes.io/rate-limit-fallback-custom-response-code |
Ingress | Extension Higress | 429 |
Code de réponse HTTP lorsque la limitation de débit est déclenchée. |
higress.ingress.kubernetes.io/rate-limit-fallback-custom-response-body-type |
Ingress | Extension Higress | text |
Type de contenu du corps de la réponse lorsque la limitation de débit est déclenchée. Définissez sur json pour renvoyer application/json; charset=UTF-8. |
higress.ingress.kubernetes.io/rate-limit-fallback-custom-response-body |
Ingress | Extension Higress | sentinel rate limited |
Corps de la réponse lorsque la limitation de débit est déclenchée. |
higress.ingress.kubernetes.io/rate-limit-fallback-redirect-url |
Ingress | Extension Higress | — | URL de redirection lorsque la limitation de débit est déclenchée. |
rate-limit-fallback-custom-response-codeetrate-limit-fallback-redirect-urlsont mutuellement exclusifs. Définissez-en un seul.
Exemple — renvoyer une réponse JSON personnalisée lorsque la limitation de débit est déclenchée :
annotations:
higress.ingress.kubernetes.io/rate-limit: "100"
higress.ingress.kubernetes.io/rate-limit-fallback-custom-response-code: "429"
higress.ingress.kubernetes.io/rate-limit-fallback-custom-response-body-type: "json"
higress.ingress.kubernetes.io/rate-limit-fallback-custom-response-body: '{"error":"rate limit exceeded"}'
Contrôle global de la concurrence
Toutes les annotations de cette section nécessitent la version V1.2.25 ou ultérieure de la passerelle.
| Annotation | Portée | Statut | Par défaut | Description |
|---|---|---|---|---|
higress.ingress.kubernetes.io/concurrency-limit |
Ingress | Extension Higress | — | Nombre maximal de requêtes simultanées sur la route. |
higress.ingress.kubernetes.io/concurrency-limit-fallback-custom-response-code |
Ingress | Extension Higress | 429 |
Code de réponse HTTP lorsque le contrôle de concurrence est déclenché. |
higress.ingress.kubernetes.io/concurrency-limit-fallback-custom-response-body-type |
Ingress | Extension Higress | text |
Type de contenu du corps de la réponse lorsque le contrôle de concurrence est déclenché. Définissez sur json pour renvoyer application/json; charset=UTF-8. |
higress.ingress.kubernetes.io/concurrency-limit-fallback-custom-response-body |
Ingress | Extension Higress | sentinel rate limited |
Corps de la réponse lorsque le contrôle de concurrence est déclenché. |
higress.ingress.kubernetes.io/concurrency-limit-fallback-redirect-url |
Ingress | Extension Higress | — | URL de redirection lorsque le contrôle de concurrence est déclenché. |
concurrency-limit-fallback-custom-response-codeetconcurrency-limit-fallback-redirect-urlsont mutuellement exclusifs. Définissez-en un seul.
Protocole backend
| Annotation | Portée | Statut | Par défaut | Description |
|---|---|---|---|---|
nginx.ingress.kubernetes.io/backend-protocol |
Service | Partiellement compatible | HTTP |
Protocole utilisé par le service backend. AJP et FCGI ne sont pas pris en charge. Valeurs valides : HTTP, HTTP2, HTTPS, gRPC, gRPCS. |
Équilibrage de charge
| Annotation | Portée | Statut | Par défaut | Description |
|---|---|---|---|---|
nginx.ingress.kubernetes.io/load-balance |
Service | Partiellement compatible | round_robin |
Algorithme d'équilibrage de charge. La moyenne mobile exponentiellement pondérée (EWMA) n'est pas prise en charge ; le système revient à round_robin. Valeurs valides : round_robin, least_conn, random. |
nginx.ingress.kubernetes.io/upstream-hash-by |
Service | Partiellement compatible | — | Algorithme de hachage cohérent. La combinaison de variables NGINX avec des constantes n'est pas prise en charge. Prend en charge le hachage par variable NGINX ($request_uri, $host, $remote_addr), en-tête de requête ($http_headerName), ou paramètre de requête ($arg_varName). |
Préchauffage (démarrage progressif)
| Annotation | Portée | Statut | Par défaut | Description |
|---|---|---|---|---|
higress.ingress.kubernetes.io/warmup |
Service | Extension Higress | Désactivé | Durée de la période de préchauffage en secondes. |
Le préchauffage nécessite un algorithme d'équilibrage de charge round_robin ou least_conn. Il n'est pas pris en charge avec d'autres algorithmes.
Affinité par cookie
| Annotation | Portée | Statut | Par défaut | Description |
|---|---|---|---|---|
nginx.ingress.kubernetes.io/affinity |
Service | Compatible | cookie |
Type d'affinité. Valeur par défaut et seule valeur valide : cookie. |
nginx.ingress.kubernetes.io/affinity-mode |
Service | Partiellement compatible | balanced |
Mode d'affinité. Le mode persistent n'est pas pris en charge. Valeur par défaut et seule valeur valide : balanced. |
nginx.ingress.kubernetes.io/session-cookie-name |
Service | Compatible | — | Nom du cookie utilisé comme clé de hachage. |
nginx.ingress.kubernetes.io/session-cookie-path |
Service | Compatible | / |
Chemin du cookie généré lorsque le cookie spécifié n'existe pas. |
nginx.ingress.kubernetes.io/session-cookie-max-age |
Service | Compatible | Niveau session | Durée d'expiration du cookie généré, en secondes. |
nginx.ingress.kubernetes.io/session-cookie-expires |
Service | Compatible | Niveau session | Durée d'expiration du cookie généré, en secondes. |
Contrôle d'accès par adresse IP
| Annotation | Portée | Statut | Description |
|---|---|---|---|
nginx.ingress.kubernetes.io/whitelist-source-range |
Ingress | Compatible | Liste d'autorisation d'adresses IP et de blocs CIDR pour la route. Séparés par des virgules. |
nginx.ingress.kubernetes.io/denylist-source-range |
Ingress | Compatible (V1.2.31+) | Liste de blocage au niveau de la route pour les adresses IP et les blocs CIDR. Séparés par des virgules. Prend le pas sur higress.ingress.kubernetes.io/blacklist-source-range. |
higress.ingress.kubernetes.io/blacklist-source-range |
Ingress | Extension Higress | Liste de blocage d'adresses IP et de blocs CIDR pour la route. Séparés par des virgules. |
higress.ingress.kubernetes.io/domain-whitelist-source-range |
Ingress | Extension Higress | Liste d'autorisation au niveau du domaine pour les adresses IP et les blocs CIDR. Séparés par des virgules. Les listes d'autorisation au niveau de la route prennent le pas. |
higress.ingress.kubernetes.io/domain-blacklist-source-range |
Ingress | Extension Higress | Liste de blocage au niveau du domaine pour les adresses IP et les blocs CIDR. Séparés par des virgules. Les listes de blocage au niveau de la route prennent le pas. |
Pool de connexions (passerelle vers backend)
| Annotation | Portée | Statut | Description |
|---|---|---|---|
higress.ingress.kubernetes.io/connection-policy-tcp-max-connection |
Service | Extension Higress | Nombre maximal total de connexions TCP vers le service backend. |
higress.ingress.kubernetes.io/connection-policy-tcp-max-connection-per-endpoint |
Service | Extension Higress | Nombre maximal de connexions TCP par endpoint backend. |
higress.ingress.kubernetes.io/connection-policy-http-max-request-per-connection |
Service | Extension Higress | Nombre maximal de requêtes HTTP par connexion backend. |
Annotations de sécurité
TLS entre le client et la passerelle
| Annotation | Portée | Statut | Valeur par défaut | Description |
|---|---|---|---|---|
higress.ingress.kubernetes.io/tls-min-protocol-version |
Nom de domaine | Extension Higress | TLSv1.0 |
Version minimale du protocole TLS. Valeurs valides : TLSv1.0, TLSv1.1, TLSv1.2, TLSv1.3. |
higress.ingress.kubernetes.io/tls-max-protocol-version |
Nom de domaine | Extension Higress | TLSv1.3 |
Version maximale du protocole TLS. Valeurs valides : TLSv1.0, TLSv1.1, TLSv1.2, TLSv1.3. |
nginx.ingress.kubernetes.io/ssl-cipher |
Nom de domaine | Compatible | Voir ci-dessous | Suites de chiffrement TLS, séparées par des virgules. S'applique uniquement aux versions TLS v1.0 à v1.2 (pas à la v1.3). |
higress.ingress.kubernetes.io/auth-tls-secret |
Nom de domaine | Partiellement compatible | — | Certificat CA pour la vérification du client mTLS. Format du nom du secret : {domain-certificate-secret-name}-cacert. |
Suites de chiffrement par défaut pour ssl-cipher : ECDHE-ECDSA-AES128-GCM-SHA256, ECDHE-RSA-AES128-GCM-SHA256, ECDHE-ECDSA-AES128-SHA, ECDHE-RSA-AES128-SHA, AES128-GCM-SHA256, AES128-SHA, ECDHE-ECDSA-AES256-GCM-SHA384, ECDHE-RSA-AES256-GCM-SHA384, ECDHE-ECDSA-AES256-SHA, ECDHE-RSA-AES256-SHA, AES256-GCM-SHA384, AES256-SHA.
TLS entre la passerelle et le backend
| Annotation | Portée | Statut | Description |
|---|---|---|---|
nginx.ingress.kubernetes.io/proxy-ssl-secret |
Service | Compatible | Certificat client utilisé par la passerelle pour l'authentification auprès du backend. |
nginx.ingress.kubernetes.io/proxy-ssl-name |
Service | Compatible | Indication du nom du serveur (SNI) envoyée lors du handshake TLS avec le backend. |
nginx.ingress.kubernetes.io/proxy-ssl-server-name |
Service | Compatible | Active ou désactive le SNI lors du handshake TLS avec le backend. |
Authentification de base
| Annotation | Portée | Statut | Description |
|---|---|---|---|
nginx.ingress.kubernetes.io/auth-type |
Ingress | Partiellement compatible | Type d'authentification. Seule la valeur basic est prise en charge. |
nginx.ingress.kubernetes.io/auth-secret |
Ingress | Compatible | Secret contenant les identifiants pour la route. Format : <namespace>/<name>. |
nginx.ingress.kubernetes.io/auth-secret-type |
Ingress | Compatible | Format des données du secret. auth-file : la clé est auth, la valeur est username:password (une entrée par ligne). auth-map : la clé est le nom d'utilisateur, la valeur est le mot de passe. |
nginx.ingress.kubernetes.io/auth-realm |
Ingress | Compatible | Domaine d'authentification. Les identifiants sont partagés au sein d'un même domaine. |
Référence complète des annotations NGINX Ingress : Annotations.