Créez un IngressClass pour configurer un Application Load Balancer - Amazon EKS

Aidez à améliorer cette page

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

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

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Créez un IngressClass pour configurer un Application Load Balancer

Le mode automatique d'EKS automatise les tâches de routine pour l'équilibrage de charge, notamment l'exposition des applications du cluster à Internet.

AWS suggère d'utiliser des équilibreurs de charge d'application (ALB) pour gérer le trafic HTTP et HTTPS. Les équilibreurs de charge d'application peuvent acheminer les demandes en fonction de leur contenu. Pour plus d'informations sur les équilibreurs de charge des applications, consultez Qu'est-ce qu'Elastic Load Balancing ?

Le mode automatique EKS crée et configure les équilibreurs de charge d'application ()ALBs. Par exemple, le mode automatique EKS crée un équilibreur de charge lorsque vous créez un objet Ingress Kubernetes et le configure pour acheminer le trafic vers la charge de travail de votre cluster.

Présentation

  1. Créez une IngressClassParams ressource en spécifiant AWS des valeurs de configuration spécifiques telles que le certificat à utiliser pour les sous-réseaux SSL/TLS et VPC.

  2. Créez une IngressClass ressource en spécifiant que le mode automatique EKS sera le contrôleur de la ressource.

  3. Créez une Ingress ressource qui associe un chemin et un port HTTP à une charge de travail de cluster.

  4. Le mode automatique EKS créera un Application Load Balancer qui pointe vers la charge de travail spécifiée dans la Ingress ressource, en utilisant la configuration de l'équilibreur de charge spécifiée dans la ressource. IngressClassParams

Prérequis

  • Mode automatique EKS activé sur un cluster Amazon EKS

  • Kubectl configuré pour se connecter à votre cluster

    • Vous pouvez l'utiliser kubectl apply -f <filename> pour appliquer les exemples de fichiers YAML de configuration ci-dessous à votre cluster.

Note

Le mode automatique d'EKS nécessite des balises de sous-réseau pour identifier les sous-réseaux publics et privés.

Si vous avez créé votre cluster aveceksctl, vous possédez déjà ces balises.

Découvrez comment Sous-réseaux de balises pour le mode automatique EKS.

Étape 1 : créer IngressClassParams

Créez un IngressClassParams objet pour spécifier AWS des options de configuration spécifiques pour l'Application Load Balancer. Utilisez la référence ci-dessous pour mettre à jour l'exemple de fichier YAML.

Notez le nom que vous avez défini pour la IngressClassParams ressource, vous en aurez besoin à l'étape suivante.

apiVersion: eks.amazonaws.com/v1 kind: IngressClassParams metadata: name: alb spec: scheme: internet-facing

Étape 2 : créer IngressClass

Créez un IngressClass qui fait référence aux valeurs de configuration AWS spécifiques définies dans la IngressClassParams ressource. Notez le nom duIngressClass. Dans cet exemple, les IngressClass et IngressClassParams sont tous deux nommésalb.

Utilisez l'is-default-classannotation pour contrôler si Ingress les ressources doivent utiliser cette classe par défaut.

apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: alb annotations: # Use this annotation to set an IngressClass as Default # If an Ingress doesn't specify a class, it will use the Default ingressclass.kubernetes.io/is-default-class: "true" spec: # Configures the IngressClass to use EKS Auto Mode controller: eks.amazonaws.com/alb parameters: apiGroup: eks.amazonaws.com kind: IngressClassParams # Use the name of the IngressClassParams set in the previous step name: alb

Pour plus d'informations sur les options de configuration, consultezIngressClassParams Référence.

Étape 3 : créer une entrée

Créez une Ingress ressource. Le but de cette ressource est d'associer les chemins et les ports de l'Application Load Balancer aux charges de travail de votre cluster.

Pour plus d'informations sur la configuration de cette ressource, consultez Ingress dans la documentation de Kubernetes.

apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: 2048-ingress spec: # this matches the name of IngressClass. # this can be omitted if you have a default ingressClass in cluster: the one with ingressclass.kubernetes.io/is-default-class: "true" annotation ingressClassName: alb rules: - http: paths: - path: /* pathType: ImplementationSpecific backend: service: name: <your-service> port: number: 80

Étape 4 : Vérifier le statut

kubectlÀ utiliser pour connaître le statut duIngress. La disponibilité de l'équilibreur de charge peut prendre quelques minutes.

Utilisez le nom de la Ingress ressource que vous avez définie à l'étape précédente.

kubectl get ingress <ingress-name>

Une fois que la ressource est prête, récupérez le nom de domaine de l'équilibreur de charge.

kubectl get ingress api-ingress -o jsonpath='{.status.loadBalancer.ingress[0].hostname}'

Pour afficher le service dans un navigateur Web, passez en revue le port et le chemin spécifiés dans le Ingress sauvetage.

Étape 5 : nettoyage

Pour nettoyer l'équilibreur de charge, utilisez la commande suivante :

kubectl delete ingress <ingress-name>

Le mode automatique EKS supprimera automatiquement l'équilibreur de charge associé dans votre AWS compte.

IngressClassParams Référence

Le tableau ci-dessous est une référence rapide pour les options de configuration couramment utilisées.

Champ Description Exemple de valeur

scheme

Définit si l'ALB est interne ou connecté à Internet

internet-facing

namespaceSelector

Limite les espaces de noms qui peuvent l'utiliser IngressClass

environment: prod

group.name

Regroupe plusieurs entrées pour partager un seul ALB

retail-apps

ipAddressType

Définit le type d'adresse IP pour l'ALB

dualstack

subnets.ids

Liste des sous-réseaux pour le déploiement IDs d'ALB

subnet-xxxx, subnet-yyyy

subnets.tags

Filtres de balises pour sélectionner des sous-réseaux pour ALB

Environment: prod

certificateARNs

ARNs de certificats SSL à utiliser

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

tags

Tags personnalisés pour les AWS ressources

Environment: prod, Team: platform

loadBalancerAttributes

Attributs spécifiques à l'équilibreur de charge

idle_timeout.timeout_seconds: 60

Considérations

  • Vous ne pouvez pas utiliser les annotations sur et IngressClass pour configurer les équilibreurs de charge avec le mode automatique EKS.

  • Vous devez mettre à jour le rôle IAM du cluster pour permettre la propagation des balises depuis Kubernetes vers les ressources Load AWS Balancer. Pour de plus amples informations, veuillez consulter AWS Balises personnalisées pour les ressources EKS Auto.

  • Pour plus d'informations sur l'association de ressources au mode automatique EKS ou au AWS Load Balancer Controller autogéré, consultez. Référence de migration

  • Pour plus d'informations sur la résolution des problèmes liés aux équilibreurs de charge, consultezRésoudre les problèmes liés au mode automatique d'EKS.

  • Pour plus d'informations sur l'utilisation de la fonctionnalité d'équilibrage de charge du mode automatique EKS, voirEquilibrage de charge.

Les tableaux suivants fournissent une comparaison détaillée des modifications IngressClassParams, des annotations d'entrée et des TargetGroupBinding configurations pour le mode automatique EKS. Ces tableaux mettent en évidence les principales différences entre la capacité d'équilibrage de charge du mode automatique d'EKS et le contrôleur d'équilibrage de charge open source, notamment les modifications de version de l'API, les fonctionnalités obsolètes et les noms de paramètres mis à jour.

IngressClassParams

Précédent New Description

elbv2.k8s.aws/v1beta1

eks.amazonaws.com/v1

Modification de la version de l'API

spec.certificateArn

spec.certificateARNs

Support pour plusieurs certificats ARNs

spec.subnets.tags

spec.subnets.matchTags

Schéma de correspondance des sous-réseaux modifié

spec.listeners.listenerAttributes

spec.listeners.attributes

Dénomination simplifiée des attributs

Annotations d'entrée

Précédent New Description

kubernetes.io/ingress.class

Non pris en charge

Utilisation spec.ingressClassName sur les objets Ingress

alb.ingress.kubernetes.io/group.name

Non pris en charge

Spécifier les groupes dans IngressClass uniquement

alb.ingress.kubernetes.io/waf-acl-id

Non pris en charge

Utilisez WAF v2 à la place

alb.ingress.kubernetes.io/web-acl-id

Non pris en charge

Utilisez WAF v2 à la place

alb.ingress.kubernetes.io/shield-advanced-protection

Non pris en charge

Intégration Shield désactivée

TargetGroupBinding

Précédent New Description

elbv2.k8s.aws/v1beta1

eks.amazonaws.com/v1

Modification de la version de l'API

spec.targetTypeoptionnel

spec.targetTyperequis

Spécification explicite du type de cible

spec.networking.ingress.from

Non pris en charge

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