Configurez des fonctionnalités avancées d'ALB Ingress, telles que les règles de routage, les redirections HTTPS, les réécritures d'URL, les déploiements canaris et la persistance de session.
Acheminer les requêtes en fonction des noms de domaine
Créez un Ingress pour acheminer les requêtes en fonction d'un nom de domaine ou d'un nom de domaine vide.
Nom de domaine
Cet exemple définit le chemin de routage sur /hello. Les requêtes adressées à demo.domain.ingress.top/hello sont transférées vers le service backend.
-
Déployez le manifeste suivant pour créer un Service, un Deployment et un Ingress qui acheminent les requêtes en fonction du nom de domaine spécifié.
-
Exécutez
kubectl get ingpour obtenir l'adresse de l'instance ALB. Exécutez ensuite la commande suivante en remplaçantADDRESSpar l'adresse de l'instance.curl -H "host: demo.domain.ingress.top" ADDRESS/helloRésultat attendu :
{"hello":"coffee"}
Nom de domaine vide
Avec un nom de domaine vide et un chemin de routage défini sur /hello, les requêtes adressées à ADDRESS/hello sont transférées vers le service backend.
-
Déployez le manifeste suivant pour créer un Service, un Deployment et un Ingress.
-
Exécutez
kubectl get ingpour obtenir l'adresse de l'instance ALB. Exécutez ensuite la commande suivante en remplaçantADDRESSpar l'adresse de l'instance.curl ADDRESS/helloRésultat attendu :
{"hello":"coffee"}
Routage basé sur les chemins d'URL
ALB Ingress achemine les requêtes en fonction des chemins d'URL. Spécifiez le mode de correspondance dans le champ pathType. Le champ pathType prend en charge trois modes.
Correspondance exacte (Exact) : correspond exactement au chemin d'URL.
Par défaut (ImplementationSpecific) : le contrôleur ALB Ingress traite ce mode comme une correspondance exacte. Si aucun chemin n'est spécifié, la valeur par défaut est
/.Correspondance par préfixe (Prefix) : correspond au préfixe du chemin d'URL.
Lorsque
pathTypeest défini surExactouPrefix, le chemin doit être un chemin absolu non vide. Sinon, la validation échoue.En cas de conflit entre les politiques de correspondance d'URL, les requêtes sont acheminées en fonction de la priorité des règles de transfert.
-
Chemins simples (/, /foo, /foo/)
Mode de correspondance
Chemin de la règle
Chemin de la requête
Correspondance ?
Correspondance par préfixe (Prefix)
/
/ (correspond à tous les chemins)
Oui
/foo
-
/foo
-
/foo/
Oui
/foo/
-
/foo
-
/foo/
Oui
/aaa
/ccc
Non. Le préfixe ne correspond pas.
Correspondance exacte (Exact) ou par défaut (ImplementationSpecific)
/foo
/foo
Oui
/bar
Non
/foo/
Non
/foo/
/foo
Non
-
-
Chemins hiérarchiques (/aaa/bb, /aaa/bbb, /aaa/bbb/)
Mode de correspondance
Chemin de la règle
Chemin de la requête
Correspondance ?
Correspondance par préfixe (Prefix)
/aaa/bb
/aaa/bbb
Non
/aaa/bbb
/aaa/bbb
Oui
/aaa/bbb/
/aaa/bbb
Oui. La barre oblique finale dans le chemin de la règle est ignorée.
/aaa/bbb
/aaa/bbb/
Oui. La barre oblique finale dans le chemin de la requête est prise en compte.
/aaa/bbb/ccc
Oui. Le chemin de la règle est un préfixe du chemin de la requête.
-
Deux chemins de règle
Mode de correspondance
Chemin de la règle
Chemin de la requête
Correspondance ?
Correspondance par préfixe (Prefix)
-
/
-
/aaa
/aaa/ccc
Oui. Le chemin de la requête correspond au chemin de règle
/aaa.-
/aaa
-
/
/aaa/ccc
Oui. Le chemin de la requête correspond au chemin de règle
/aaa./ccc
Oui. Le chemin de la requête correspond au chemin de règle
/.-
/aaa
-
/bbb
/ccc
Non. Le préfixe ne correspond pas.
-
Exemples pour chaque mode de correspondance :
Correspondance par préfixe (Prefix)
Ce mode effectue une correspondance de préfixe sensible à la casse sur les éléments du chemin d'URL, séparés par /.
Le chemin de règle / correspond à tous les chemins commençant par /, tels que /hello.
-
Déployez le manifeste suivant pour créer la ressource Ingress.
-
Exécutez
kubectl get ingpour obtenir l'adresse de l'instance ALB. Exécutez ensuite la commande suivante en remplaçantADDRESSpar l'adresse obtenue.curl ADDRESS/helloRésultat attendu :
{"hello":"coffee"}
Correspondance exacte ou par défaut
Le chemin de règle /hello correspond uniquement aux requêtes adressées à /hello.
-
Déployez le manifeste suivant pour créer la ressource Ingress.
-
Exécutez
kubectl get ingpour obtenir l'adresse de l'instance ALB. Exécutez ensuite la commande suivante en remplaçantADDRESSpar l'adresse obtenue.curl ADDRESS/helloRésultat attendu :
{"hello":"coffee"}
Configurer les checks de santé
Utilisez des annotations pour configurer les checks de santé pour ALB Ingress.
Exemples d'annotations :
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: cafe-ingress
annotations:
alb.ingress.kubernetes.io/healthcheck-enabled: "true"
alb.ingress.kubernetes.io/healthcheck-path: "/"
alb.ingress.kubernetes.io/healthcheck-protocol: "HTTP"
alb.ingress.kubernetes.io/healthcheck-httpversion: "HTTP1.1"
alb.ingress.kubernetes.io/healthcheck-method: "HEAD"
alb.ingress.kubernetes.io/healthcheck-code: "http_2xx"
alb.ingress.kubernetes.io/healthcheck-timeout-seconds: "5"
alb.ingress.kubernetes.io/healthcheck-interval-seconds: "2"
alb.ingress.kubernetes.io/healthy-threshold-count: "3"
alb.ingress.kubernetes.io/unhealthy-threshold-count: "3"
spec:
... ...
|
Paramètre |
Description |
Valeur par défaut |
|
|
Indique si les contrôles d'état (health checks) doivent être activés pour le groupe de serveurs backend.
|
|
|
|
Le chemin utilisé pour les contrôles d'état. |
|
|
|
Le protocole utilisé pour les contrôles d'état.
|
|
|
|
Version du protocole HTTP. Ne prend effet que si
|
|
|
|
La méthode utilisée pour les contrôles d'état.
Important
Si |
|
|
|
Code(s) d'état indiquant qu'un serveur backend est sain. Spécifiez une ou plusieurs options, séparées par des virgules.
|
|
|
|
Code(s) d'état indiquant qu'un serveur backend est sain. Ce paramètre est prioritaire sur Les valeurs valides dépendent de
|
|
|
|
Le délai d'expiration du contrôle d'état en secondes. Valeurs valides : 1 à 300. |
|
|
|
L'intervalle entre les contrôles d'état en secondes. Valeurs valides : 1 à 50. |
|
|
|
Le nombre de contrôles d'état réussis consécutifs requis pour marquer un serveur backend comme sain. Valeurs valides : 2 à 10. |
|
|
|
Le nombre de contrôles d'état échoués consécutifs requis pour marquer un serveur backend comme non sain. Valeurs valides : 2 à 10. |
|
|
|
Le port utilisé pour les contrôles d'état. |
Remarque
Une valeur de |
Rediriger les requêtes HTTP vers HTTPS
Ajoutez l'annotation suivante pour rediriger les requêtes HTTP vers le port HTTPS 443.
Cette fonctionnalité s'applique uniquement aux règles de transfert HTTP sur le port d'écoute 80.
Cette annotation doit être utilisée conjointement avec des annotations pour les actions de transfert personnalisées, telles que
RemoveHeader,InsertHeaderetCors.Avant d'utiliser cette annotation, assurez-vous qu'un écouteur HTTPS est configuré sur le port 443 dans l'AlbConfig. Consultez Configurer un écouteur ALB à l'aide d'un AlbConfig.
|
Paramètre |
Description |
Exemple d'annotation |
|
|
Redirige les requêtes HTTP vers le port HTTPS 443. |
|
Configurer HTTPS ou gRPC en backend
Ajoutez l'annotation suivante pour utiliser HTTPS ou gRPC comme protocole backend.
Le protocole backend ne peut pas être modifié après la création de l'Ingress. Supprimez et recréez l'Ingress pour le modifier.
|
Paramètre |
Description |
Exemple YAML |
|
|
|
|
Configurer les expressions régulières
Utilisez l'annotation alb.ingress.kubernetes.io/use-regex: "true" pour activer la correspondance par expression régulière pour les règles de chemin dans spec.rules avec pathType: Prefix.
S'applique uniquement aux règles de chemin avec
pathType: Prefix. Active la syntaxe regex dans le champpathdespec.rules, indépendamment des conditions de transfert personnalisées.Cette annotation active la correspondance regex quelle que soit sa valeur (
trueoufalse). Supprimez l'annotation pour la désactiver.Sans cette annotation, la création de l'Ingress échoue si le chemin contient des caractères spéciaux tels que
=^()[]|, etc..Les valeurs de chemin dans une condition de transfert personnalisée (
alb.ingress.kubernetes.io/conditions.YOUR-SVC-NAME) sont transmises directement à ALB et ne nécessitent pas l'annotationuse-regex. Pour activer la correspondance regex, ajoutez le préfixe~*ou~à la valeur du chemin. L'annotationuse-regexaffecte uniquement le champpathdansspec.rules.
Règles de transfert personnalisées
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/conditions.YOUR-SVC-NAME: | ## Replace YOUR-SVC-NAME with the actual Service name. It must match backend.service.name below.
[{
"type": "Path",
"pathConfig": {
"values": [
"~*/pathvalue1", ## Add the ~* or ~ prefix to a regular expression. The text after the prefix is the regular expression itself. ~* indicates a case-sensitive match, and ~ indicates a case-insensitive match.
"/pathvalue2" ## An exact match does not require a prefix.
]
}
}]
name: ingress-example
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /test-path-for-alb
pathType: Prefix
backend:
service:
name: YOUR-SVC-NAME ## YOUR-SVC-NAME here must match the Service name specified in the custom forwarding condition annotation to define the association.
port:
number: 88
Spec.rules
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/use-regex: "true" ## Allows the path in spec.rules to use a regular expression.
name: ingress-example
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /test-[a-z]-alb[()^]*
pathType: Prefix
backend:
service:
name: tea-svc
port:
number: 88
|
Paramètre |
Description |
|
|
|
Active les expressions régulières pour les règles de chemin dans |
|
|
|
Configure une condition de transfert personnalisée. Consultez Personnaliser les règles de transfert pour un Ingress ALB. Remplacez |
|
Le tableau suivant décrit les règles de correspondance par expression régulière.
|
Objet |
Préfixe |
Exemple de règle |
Chemin client |
Correspondance ? |
Description |
|
Nom de domaine |
Commence par |
|
test.EXAMPLE.com |
Oui |
Les noms de domaine prennent en charge la correspondance par expression régulière insensible à la casse. |
|
Chemin |
Commence par |
|
/API |
Oui |
Les chemins prennent en charge la correspondance par expression régulière insensible à la casse. |
|
Commence par |
|
/Api |
Non |
Les chemins prennent en charge la correspondance par expression régulière sensible à la casse. |
Correspondance de préfixe par expression régulière
Par défaut, la correspondance par expression régulière fonctionne sur le mode « contient ». Pour ne faire correspondre que les chemins commençant par un contenu spécifique, ajoutez ^ au début de l'expression. Par exemple, ^/api ne correspond qu'aux chemins commençant par /api.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-example
annotations:
alb.ingress.kubernetes.io/use-regex: "true" ## Enable regex matching.
alb.ingress.kubernetes.io/conditions.YOUR-SVC-NAME: | ## Replace YOUR-SVC-NAME with the actual service name. This must match backend.service.name below.
[
{
"type": "Path",
"pathConfig": {
"values": [
"~*^/pathvalue1", # A path that starts with ~* or ~ indicates a regex match. The caret (^) indicates "starts with /pathvalue1".
"/pathvalue2" # For a standard prefix or exact match, do not add ~* or ~.
]
}
}
]
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /test-path-for-alb
pathType: Prefix
backend:
service:
name: YOUR-SVC-NAME # Replace with the actual service name, which must match the annotation.
port:
number: 88
Configurer les réécritures
L'Ingress ALB réécrit les chemins de requête avant de les transférer vers le Service backend. Utilisez les deux annotations suivantes :
-
alb.ingress.kubernetes.io/rewrite-target: /path/${number}: spécifie le chemin vers lequel les requêtes sont réécrites.ImportantUtilisez les variables
${number}pour référencer les groupes de capture issus de l'expression régulière définie dans le chemin de l'Ingress. Vous pouvez référencer jusqu'à trois groupes de capture à l'aide de${1},${2}et${3}.Le paramètre
pathTypede l'Ingress doit être défini surPrefix.
-
alb.ingress.kubernetes.io/use-regex: true: active l'utilisation d'une expression régulière dans le chemin. Cette option est activée par défaut lorsque vous configurezrewrite-target.ImportantCette annotation active la correspondance par expression régulière quelle que soit sa valeur (
trueoufalse). Supprimez l'annotation pour la désactiver.Sans cette annotation, la création de l'Ingress échoue si le chemin contient des caractères spéciaux tels que
"%#;!()[]^,"\"".
Exemples de configuration
Exemple 1 : Supprimer un préfixe
Dans l'exemple YAML suivant, le chemin path: /something(/|$)(.*) utilise une expression régulière pour diviser le chemin de la requête client en trois parties :
/something: correspond au préfixe à supprimer.(/|$): premier groupe de capture, qui correspond soit à un/après/something, soit à la fin du chemin ($).(.*): deuxième groupe de capture, qui correspond à tous les caractères situés après/something/et est référencé comme${2}dans le chemin réécrit.
L'annotation alb.ingress.kubernetes.io/rewrite-target définit le chemin réécrit comme / suivi de ${2}. Le tableau suivant présente les résultats de la réécriture.
|
Chemin client d'origine |
Correspondance regex du chemin |
Chemin réécrit |
|
|
Correspondance. Le deuxième groupe de capture est vide. |
|
|
|
Correspondance. Le deuxième groupe de capture est vide. |
|
|
|
Correspondance. Le deuxième groupe de capture est |
|
|
|
Aucune correspondance. Dans cet exemple, comme la requête ne correspond à aucune règle de routage, l'Ingress ALB renvoie un code d'état 503. |
|
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: rewrite-ingress
annotations:
alb.ingress.kubernetes.io/use-regex: "true" # Allows the path field to use a regular expression.
alb.ingress.kubernetes.io/rewrite-target: /${2} # This annotation supports regular expression replacement.
spec:
ingressClassName: alb
rules:
- host: demo.alb.ingress.top
http:
paths:
- path: /something(/|$)(.*)
pathType: Prefix
backend:
service:
name: rewrite-svc
port:
number: 9080
Exemple 2 : Capturer et réorganiser plusieurs parties
L'exemple suivant capture et réorganise plusieurs parties du chemin /items/(.*)/(.*)/(.*). Il convertit également les segments de chemin en paramètres de requête, sans nécessiter de modification côté client. Le chemin réécrit est construit sous la forme /, suivi du deuxième groupe de capture ${2}, de la chaîne ?code= et du troisième groupe de capture ${3}. Le tableau suivant présente les résultats de la réécriture.
Cet exemple nécessite que le client utilise un format de chemin fixe comportant quatre segments.
|
Chemin client d'origine |
Correspondance regex du chemin |
Chemin réécrit |
|
|
Correspondance. Le deuxième groupe de capture est |
|
|
|
Correspondance. Le deuxième groupe de capture est |
|
|
|
Aucune correspondance. Dans cet exemple, comme la requête ne correspond à aucune règle de routage, l'Ingress ALB renvoie un code d'état 503. |
|
|
|
Aucune correspondance. Dans cet exemple, comme la requête ne correspond à aucune règle de routage, l'Ingress ALB renvoie un code d'état 503. |
|
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: rewrite-ingress
annotations:
alb.ingress.kubernetes.io/use-regex: "true" # Allows the path field to use a regular expression.
alb.ingress.kubernetes.io/rewrite-target: /${2}?code=${3} # This annotation supports regular expression replacement.
spec:
ingressClassName: alb
rules:
- host: demo.alb.ingress.top
http:
paths:
- path: /items/(.*)/(.*)/(.*)
pathType: Prefix
backend:
service:
name: rewrite-svc
port:
number: 9080
Exemple 3 : Réécrire plusieurs chemins vers un seul chemin
L'exemple suivant utilise une expression régulière pour faire correspondre plusieurs chemins (/app-a(/|$)(.*) et /app-b(/|$)(.*)) et les réécrit vers un seul chemin. Le chemin réécrit est /app-c/ suivi de ${2}. Le tableau suivant présente les résultats de la réécriture.
|
Chemin client d'origine |
Correspondance regex du chemin |
Chemin réécrit |
|
|
Correspondance. Le deuxième groupe de capture est |
|
|
|
Correspondance. Le deuxième groupe de capture est |
|
|
|
Correspondance. Le deuxième groupe de capture est vide. |
|
|
|
Aucune correspondance. Dans cet exemple, comme la requête ne correspond à aucune règle de routage, l'Ingress ALB renvoie un code d'état 503. |
|
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: rewrite-ingress
annotations:
alb.ingress.kubernetes.io/use-regex: "true" # allows the path field to use a regular expression.
alb.ingress.kubernetes.io/rewrite-target: /app-c/${2} # This annotation supports regular expression replacement.
spec:
ingressClassName: alb
rules:
- host: demo.alb.ingress.top
http:
paths:
- path: /app-a(/|$)(.*)
pathType: Prefix
backend:
service:
name: rewrite-svc
port:
number: 9080
- path: /app-b(/|$)(.*)
pathType: Prefix
backend:
service:
name: rewrite-svc
port:
number: 9080
Exemple 4 : Réécrire le nom de domaine
L'annotation alb.ingress.kubernetes.io/rewrite-target prend uniquement en charge la modification du chemin. Pour modifier d'autres parties de l'URL, telles que le nom de domaine ou les paramètres de requête, utilisez une règle de transfert personnalisée.
Tester les règles de réécriture
Utilisez la commande sed pour vérifier si un chemin client correspond à l'expression régulière du chemin et pour prévisualiser le chemin réécrit.
Cet exemple utilise le chemin de capture /items/(.*)/(.*)/(.*) et la règle de réécriture /${2}?code=${3} de l'Exemple 2 : Capturer et réorganiser plusieurs parties.
-
Enregistrez les exemples de chemins suivants dans un fichier nommé
path2.txt:/items/electronics/computers/554 /items/produce/fruits/12 /items/headphones/5 /drinks/41 -
Vérifiez si les chemins correspondent et affichez les chemins réécrits :
La commande suivante adapte l'expression régulière du chemin de l'exemple (
/items/(.*)/(.*)/(.*)) et le chemin réécrit (/${2}?code=${3}) pour sed. Lors de l'utilisation de sed, les caractères spéciaux tels que/doivent être échappés avec une barre oblique inverse (\), et les références aux groupes de capture s'écrivent\2au lieu de${2}.sed -E 's#\/items\/(.*)\/(.*)\/(.*)#Matched: [] --- Rewritten: [/\2?code=\3]#' path2.txtLe résultat attendu est le suivant. Les deux premiers chemins correspondent à la règle et sont réécrits, tandis que les deux derniers ne correspondent pas et restent inchangés.
Matched: [/items/electronics/computers/554] --- Rewritten: [/computers?code=554] Matched: [/items/produce/fruits/12] --- Rewritten: [/fruits?code=12] /items/headphones/5 /drinks/41
Configurer des ports d'écoute personnalisés
Ajoutez une annotation pour exposer un service à la fois sur le port 80 (HTTP) et le port 443 (HTTPS).
ALB ne permet pas de créer directement des écouteurs dans un Ingress. Créez d'abord les ports et protocoles d'écoute requis dans un AlbConfig, puis référencez-les dans l'Ingress. Consultez la rubrique Utiliser un AlbConfig pour configurer un écouteur ALB.
|
Paramètre |
Description |
Exemple YAML |
|
|
Expose le service sur les ports 80 et 443. |
|
Configurer la priorité des règles de transfert
Par défaut, ALB hiérarchise les règles de transfert selon les critères suivants :
-
Le système trie les ressources Ingress par ordre lexicographique en fonction de
namespace/name. Un Ingress dont la valeur lexicographique est plus faible possède une priorité plus élevée.Les namespaces sont comparés en premier, puis les noms caractère par caractère.
-
Au sein d'un même Ingress, les règles sont hiérarchisées selon leur ordre dans le champ
rules. Les règles listées en premier ont une priorité plus élevée.rules: - host: www.example.com http: ... - host: www.test.com http: ...
Pour spécifier la priorité d'une règle de transfert ALB sans modifier le namespace/name de l'Ingress, ajoutez l'annotation Ingress suivante :
|
Paramètre |
Description |
Valeur |
Exemple YAML |
|
|
Spécifie la priorité de la règle de transfert ALB. Une valeur plus faible indique une priorité plus élevée. La priorité de chaque règle doit être unique au sein du même écouteur. |
[1, 1000] Par défaut : 10 |
|
Implémenter des versions canari à l'aide d'annotations
ALB prend en charge les versions canari basées sur les en-têtes, les cookies et les pondérations. Consultez la rubrique Implémenter des versions canari à l'aide d'un Ingress ALB pour connaître les bonnes pratiques.
|
Paramètre |
Description |
Description |
|
|
Active la fonctionnalité de version canari. |
|
-
Distribuer le trafic canari en fonction d'un en-tête spécifié
Paramètre
Description
Exemple YAML
alb.ingress.kubernetes.io/canary-by-headerCes annotations définissent un en-tête de requête personnalisé et sa valeur pour le routage du trafic. Les deux annotations sont obligatoires.
-
Lorsque l'
en-têteet lavaleur d'en-têted'une requête correspondent aux valeurs configurées, le trafic de la requête est dirigé vers le point d'entrée du service canari. -
Les requêtes non correspondantes sont évaluées selon des règles de priorité inférieure.
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: alb.ingress.kubernetes.io/order: "1" alb.ingress.kubernetes.io/canary: "true" alb.ingress.kubernetes.io/canary-by-header: "location" alb.ingress.kubernetes.io/canary-by-header-value: "hz" name: demo-canary spec: ... ...alb.ingress.kubernetes.io/canary-by-header-valueSi une requête contient l'en-tête
location: hz, ALB achemine le trafic vers le Service canari. Les autres requêtes sont évaluées selon des règles de priorité inférieure, telles que celles basées sur un cookie ou une pondération. -
-
Distribuer le trafic canari en fonction d'un cookie spécifié
Paramètre
Valeur du cookie
Exemple YAML
alb.ingress.kubernetes.io/canary-by-cookie-
always: Achemine toutes les requêtes vers le Service canari. -
never: N'achemine jamais les requêtes vers le Service canari.
Les versions canari basées sur les cookies ne prennent pas en charge les valeurs personnalisées, uniquement
alwaysetnever.apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: alb.ingress.kubernetes.io/order: "2" alb.ingress.kubernetes.io/canary: "true" alb.ingress.kubernetes.io/canary-by-cookie: "demo" name: demo-canary-cookie ... ...Si une requête contient l'en-tête
Cookie: demo=always, ALB achemine le trafic vers le Service canari. Si l'en-tête contientCookie: demo=never, ALB n'achemine pas le trafic vers le Service canari. -
-
Distribuer le trafic par pondération
Paramètre
Description
Exemple YAML
alb.ingress.kubernetes.io/canary-weightPourcentage du trafic acheminé vers le Service canari. Valeurs valides : 0 à 100.
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: alb.ingress.kubernetes.io/order: "3" alb.ingress.kubernetes.io/canary: "true" alb.ingress.kubernetes.io/canary-weight: "50" name: demo-canary-weight
Configurer la persistance de session avec des annotations
Utilisez les annotations suivantes pour configurer la persistance de session pour un Ingress ALB.
Exemple d'annotations :
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: cafe-ingress-v3
annotations:
alb.ingress.kubernetes.io/sticky-session: "true"
alb.ingress.kubernetes.io/sticky-session-type: "Server" # To use a custom cookie, set this annotation to Server.
alb.ingress.kubernetes.io/cookie-timeout: "1800"
alb.ingress.kubernetes.io/cookie: "test"
spec:
... ...
|
Paramètre |
Description |
Valeur par défaut |
|
|
Indique s'il faut activer la persistance de session.
|
|
|
|
Spécifie la manière dont l'équilibreur de charge gère le cookie.
Remarque
S'applique uniquement lorsque |
|
|
|
Le délai d'expiration du cookie en secondes. Valeurs valides : 1 à 86400. S'applique uniquement lorsque |
1000 |
|
|
La valeur du cookie personnalisé. Obligatoire (non vide) lorsque |
"" |
Spécifier l'algorithme d'équilibrage de charge
Utilisez une annotation pour spécifier l'algorithme d'équilibrage de charge pour un groupe de serveurs backend.
|
Paramètre |
Valeur |
Description |
|
|
|
|
Round robin pondéré. Les serveurs ayant des pondérations plus élevées reçoivent plus de requêtes. (Par défaut) |
|
|
|
Distribue les requêtes en fonction de la pondération et du nombre actuel de connexions. Si les pondérations sont égales, le serveur ayant le moins de connexions est sélectionné. |
||
|
|
Achemine les requêtes provenant de la même adresse IP source vers le même serveur backend. |
||
|
|
Achemine les requêtes en fonction d'un hachage d'un paramètre d'URL spécifié. Utilisez l'annotation
|
Configuration CORS
Utilisez les annotations suivantes pour configurer le partage de ressources cross-origin (CORS) pour l'Ingress ALB.
Exemples d'annotations :
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: alb-ingress
annotations:
alb.ingress.kubernetes.io/enable-cors: "true"
alb.ingress.kubernetes.io/cors-expose-headers: ""
alb.ingress.kubernetes.io/cors-allow-methods: "GET,POST"
alb.ingress.kubernetes.io/cors-allow-credentials: "true"
alb.ingress.kubernetes.io/cors-max-age: "600"
alb.ingress.kubernetes.io/cors-allow-origin: "Allowed origin domain name"
spec:
... ...
|
Paramètre |
Description |
Valeur par défaut |
|
|
Active le partage de ressources cross-origin (CORS). |
Valeur par défaut : |
|
|
Spécifie les origines autorisées à accéder aux ressources du serveur. Séparez plusieurs origines par une virgule (,). Chaque valeur doit commencer par |
|
|
|
Spécifie les méthodes HTTP autorisées pour les requêtes cross-origin. Les valeurs ne sont pas sensibles à la casse. Séparez plusieurs méthodes HTTP par une virgule (,). |
|
|
|
Spécifie les en-têtes de requête autorisés pour les requêtes cross-origin. Définissez ce paramètre sur
|
|
|
|
Spécifie les en-têtes de réponse à exposer au client. Définissez ce paramètre sur
|
|
|
|
Indique s'il faut inclure les informations d'identification dans les requêtes cross-origin. |
|
|
|
Durée de mise en cache des réponses préliminaires, en secondes. Valeurs valides : 0 à 172 800. |
Valeur par défaut : |
Connexion persistante avec le backend
Les connexions persistantes avec le backend permettent à ALB de réutiliser les connexions TCP vers les serveurs backend, réduisant ainsi la surcharge liée aux connexions dans les scénarios à haut débit.
|
Paramètre |
Description |
Exemple YAML |
|
|
Active les connexions persistantes avec le backend pour réduire la surcharge des connexions TCP. |
|
Association de backends IPv6 aux groupes de serveurs
L'association de backends IPv6 permet d'utiliser des Pods IPv4 et IPv6 au sein d'un même groupe de serveurs, mais nécessite un cluster à double pile. Consultez Créer un cluster ACK managé.
Les limitations suivantes s'appliquent lorsque l'association de backends IPv6 est activée :
Pour activer l'association de backends IPv6 pour un groupe de serveurs, vous devez activer l'IPv6 pour le VPC du groupe de serveurs.
L'association de backends IPv6 n'est pas prise en charge pour les groupes de serveurs de type IP ou Function Compute lorsqu'ils sont associés via une action de transfert personnalisée.
Si un Ingress est associé à une instance ALB uniquement IPv4, vous ne pouvez pas activer l'association de backends IPv6 pour ses groupes de serveurs.
Configurez le Service et l'Ingress ALB pour la double pile. Après avoir créé une instance ALB à double pile, vous pouvez associer des serveurs backend IPv4 et IPv6 au groupe de serveurs.
|
Objet de configuration |
Paramètre |
Valeur |
Description |
Exemple YAML |
|
Service |
|
|
Spécifie les types d'adresses IP disponibles pour le Service. |
|
|
|
|
Définit la stratégie IP du Service, activant ainsi la mise en réseau à double pile. |
||
|
Ingress ALB |
|
|
Active l'association de backends IPv6 pour le groupe de serveurs. |
|
Configurer la limitation du débit (QPS)
Ajoutez l'annotation suivante pour activer la limitation du débit (QPS) pour les règles de transfert.
|
Annotation |
Description |
Exemple YAML |
|
|
Spécifie la limite QPS pour les règles de transfert. Valeurs valides : 1 à 1 000 000. |
|
Démarrage progressif
Le démarrage progressif augmente graduellement le trafic vers les Pods nouvellement ajoutés, évitant ainsi les surcharges dues à des pics de trafic soudains.
|
Paramètre |
Description |
Exemple YAML |
|
|
Indique s'il faut activer le démarrage progressif. Désactivé par défaut.
|
|
|
|
Durée de montée en charge progressive du démarrage, en secondes. Valeurs valides : 30–900. Par défaut : 30. |
Drainage de connexion
Lorsqu'un Pod passe à l'état Terminating, l'Ingress ALB le retire du groupe de serveurs mais ne ferme pas immédiatement les connexions existantes, ce qui peut provoquer des erreurs de requête ou empêcher un arrêt gracieux. Le drainage de connexion maintient les connexions existantes ouvertes pendant un délai configurable avant de les fermer. Consultez Utiliser le drainage de connexion avec un Ingress ALB pour arrêter gracieusement un service.
L'Ingress ALB ne garantit pas que les Pods restent en cours d'exécution jusqu'à la fin du drainage de connexion. Pour contrôler la disponibilité des Pods pendant la terminaison, configurez spec.terminationGracePeriodSeconds ou utilisez un hook preStop.
|
Paramètre |
Description |
Exemple YAML |
|
|
Indique s'il faut activer le drainage de connexion.
|
|
|
|
Spécifie le délai d'expiration du drainage de connexion en secondes. Valeurs valides : [0, 900]. Par défaut : 300. |
Désactiver l'équilibrage de charge inter-zones
Par défaut, ALB répartit le trafic entre les zones de disponibilité. La désactivation de l'équilibrage de charge inter-zones restreint le trafic aux services backend situés dans la même zone.
Si vous désactivez l'équilibrage de charge inter-zones, assurez-vous que chaque zone de disponibilité dispose de ressources backend suffisantes.
Utilisez l'exemple suivant pour désactiver l'équilibrage de charge inter-zones :
|
Paramètre |
Description |
Exemple YAML |
|
|
Indique s'il faut activer l'équilibrage de charge inter-zones. Activé par défaut.
|
|