Utilisation des annotations de service pour configurer les équilibreurs de charge Network Load Balancer - Amazon EKS

Aidez à améliorer cette page

Pour contribuer à ce guide de l’utilisateur, cliquez sur le lien Modifier cette page sur GitHub qui se trouve dans le volet droit de chaque page.

Utilisation des annotations de service pour configurer les équilibreurs de charge Network Load Balancer

Découvrez comment configurer les équilibreurs de charge Network Load Balancer (NLB) dans Amazon EKS à l’aide des annotations du service Kubernetes. Cette rubrique explique les annotations prises en charge par le mode automatique EKS pour personnaliser le comportement des NLB, notamment l’accessibilité internet, les vérifications d’intégrité, la terminaison SSL/TLS et les modes de ciblage IP.

Lorsque vous créez une ressource Kubernetes de type LoadBalancer dans le mode automatique EKS, EKS provisionne et configure automatiquement un équilibreur de charge AWS Network Load Balancer en fonction des annotations que vous spécifiez. Cette approche déclarative vous permet de gérer les configurations des équilibreurs de charge directement via vos manifestes Kubernetes, conformément aux pratiques d’infrastructure en tant que code.

Le mode automatique EKS gère automatiquement le provisionnement de l’équilibreur de charge Network Load Balancer pour tous les services de type LoadBalancer. Aucune installation ou configuration supplémentaire de contrôleur n’est nécessaire. La spécification loadBalancerClass: eks.amazonaws.com/nlb est automatiquement définie comme valeur par défaut du cluster, simplifiant ainsi le déploiement et assurant la compatibilité avec les charges de travail Kubernetes existantes.

Note

Le mode automatique EKS nécessite l’ajout de balises sur les sous-réseaux afin d’identifier les sous-réseaux publics et privés.

Si vous avez créé votre cluster avec eksctl, ces balises sont déjà présentes.

Découvrez comment Baliser les sous-réseaux pour le mode automatique EKS.

Exemple de service

Pour plus d’informations sur la ressource Kubernetes Service, consultez la documentation Kubernetes.

Consultez l’exemple de ressource Service ci-dessous :

apiVersion: v1 kind: Service metadata: name: echoserver annotations: # Specify the load balancer scheme as internet-facing to create a public-facing Network Load Balancer (NLB) service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing spec: selector: app: echoserver ports: - port: 80 targetPort: 8080 protocol: TCP type: LoadBalancer # Specify the new load balancer class for NLB as part of EKS Auto Mode feature # For clusters with Auto Mode enabled, this field can be omitted as it's the default loadBalancerClass: eks.amazonaws.com/nlb

Annotations couramment utilisées

Le tableau ci-dessous présente les annotations couramment utilisées et prises en charge par le mode automatique EKS. Notez que le mode automatique EKS ne prend pas en charge toutes les annotations existantes.

Astuce

Toutes les annotations suivantes doivent être préfixées par service.beta.kubernetes.io/

Champ Description Exemple

aws-load-balancer-type

Spécifie le type d’équilibreur de charge. Utilisez external pour les nouveaux déploiements.

external

aws-load-balancer-nlb-target-type

Spécifie s’il faut acheminer le trafic vers les instances de nœuds ou directement vers les adresses IP des pods. Utilisez instance pour les déploiements standards ou ip pour un routage direct vers les pods.

instance

aws-load-balancer-scheme

Contrôle si l’équilibreur de charge est interne ou accessible depuis Internet.

internet-facing

aws-load-balancer-healthcheck-protocol

Protocole de surveillance de l’état pour le groupe cible. Les options courantes sont TCP (par défaut) ou HTTP.

HTTP

aws-load-balancer-healthcheck-path

Le chemin HTTP utilisé pour la surveillance de l’état lorsque vous utilisez le protocole HTTP/HTTPS.

/healthz

aws-load-balancer-healthcheck-port

Port utilisé pour la surveillance de l’état. Il peut s’agir d’un numéro de port spécifique ou du traffic-port.

traffic-port

aws-load-balancer-subnets

Spécifie les sous-réseaux dans lesquels créer l’équilibreur de charge. Vous pouvez utiliser des ID ou des noms de sous-réseaux.

subnet-xxxx, subnet-yyyy

aws-load-balancer-ssl-cert

ARN du certificat SSL provenant d’AWS Certificate Manager pour HTTPS/TLS.

arn:aws:acm:region:account:certificate/cert-id

aws-load-balancer-ssl-ports

Spécifie les ports devant utiliser SSL/TLS.

443, 8443

load-balancer-source-ranges

Plages CIDR autorisées à accéder à l’équilibreur de charge.

10.0.0.0/24, 192.168.1.0/24

aws-load-balancer-additional-resource-tags

Balises AWS supplémentaires à appliquer à l’équilibreur de charge et aux ressources associées.

Environment=prod,Team=platform

aws-load-balancer-ip-address-type

Spécifie si l’équilibreur de charge utilise IPv4 ou la double pile (IPv4 + IPv6).

ipv4 ou dualstack

Considérations

  • Vous devez mettre à jour le rôle IAM du cluster afin d’activer la propagation des balises de Kubernetes vers les ressources de l’équilibreur de charge AWS Load Balancer. Pour de plus amples informations, consultez Balises AWS personnalisées pour les ressources EKS Auto.

  • Pour plus d’informations sur l’association des ressources avec le mode automatique EKS ou avec le contrôleur d’équilibreur de charge AWS Load Balancer Controller, consultez Référence de migration.

  • Pour plus d’informations sur la résolution des problèmes liés aux équilibreurs de charge, consultez Résolution des problèmes avec le mode automatique EKS.

  • Pour des considérations supplémentaires concernant l’utilisation de la fonctionnalité d’équilibrage de charge du mode automatique EKS, consultez Equilibrage de charge.

Lors de la migration vers le mode automatique EKS pour l’équilibrage de charge, plusieurs modifications concernant les annotations de service et la configuration des ressources sont nécessaires. Les tableaux suivants présentent les principales différences entre l’ancienne et la nouvelle mise en œuvre, incluant les options non prises en charge et les alternatives recommandées.

Annotations de service

Précédent New Description

service.beta.kubernetes.io/load-balancer-source-ranges

Non pris en charge

Utiliser spec.loadBalancerSourceRanges sur le service

service.beta.kubernetes.io/aws-load-balancer-type

Non pris en charge

Utiliser spec.loadBalancerClass sur le service

service.beta.kubernetes.io/aws-load-balancer-internal

Non pris en charge

Utiliser service.beta.kubernetes.io/aws-load-balancer-scheme

Divers attributs de l’équilibreur de charge

Non pris en charge

Utiliser service.beta.kubernetes.io/aws-load-balancer-attributes

service.beta.kubernetes.io/aws-load-balancer-proxy-protocol

Non pris en charge

Utiliser service.beta.kubernetes.io/aws-load-balancer-attributes à la place

service.beta.kubernetes.io/aws-load-balancer-access-log-enabled

Non pris en charge

Utiliser service.beta.kubernetes.io/aws-load-balancer-attributes à la place

service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-name

Non pris en charge

Utiliser service.beta.kubernetes.io/aws-load-balancer-attributes à la place

service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-prefix

Non pris en charge

Utiliser service.beta.kubernetes.io/aws-load-balancer-attributes à la place

service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled

Non pris en charge

Utiliser service.beta.kubernetes.io/aws-load-balancer-attributes à la place

Pour migrer à partir des annotations d’attributs d’équilibreur de charge désormais obsolètes, regroupez ces paramètres dans l’annotation service.beta.kubernetes.io/aws-load-balancer-attributes. Cette annotation accepte une liste de paires clé-valeur séparées par des virgules afin de définir plusieurs attributs de l’équilibreur de charge. Par exemple, pour spécifier le protocole proxy, la journalisation des accès et l’équilibrage de charge entre zones, utilisez le format suivant :

service.beta.kubernetes.io/aws-load-balancer-attributes: access_logs.s3.enabled=true,access_logs.s3.bucket=my-bucket,access_logs.s3.prefix=my-prefix,load_balancing.cross_zone.enabled=true

Ce format consolidé offre une méthode plus cohérente et flexible pour configurer les attributs de l’équilibreur de charge, tout en réduisant le nombre d’annotations nécessaires. Passez en revue vos configurations de service existantes et mettez-les à jour pour utiliser ce format consolidé.

TargetGroupBinding

Précédent New Description

elbv2.k8s.aws/v1beta1

eks.amazonaws.com/v1

Modifications de version d’API

spec.targetType facultatif

spec.targetType obligatoire

Spécifications explicite du type de cible

spec.networking.ingress.from

Non pris en charge

Ne prend plus en charge NLB sans groupes de sécurité