Erstellen Sie einen IngressClass , um einen Application Load Balancer zu konfigurieren - Amazon EKS

Hilf mit, diese Seite zu verbessern

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Wenn Sie zu diesem Benutzerhandbuch beitragen möchten, wählen Sie den GitHub Link Diese Seite bearbeiten auf, der sich im rechten Bereich jeder Seite befindet.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Erstellen Sie einen IngressClass , um einen Application Load Balancer zu konfigurieren

Der automatische Modus von EKS automatisiert Routineaufgaben für den Lastenausgleich, einschließlich der Bereitstellung von Cluster-Apps im Internet.

AWS schlägt vor, Application Load Balancers (ALB) zur Bereitstellung von HTTP- und HTTPS-Verkehr zu verwenden. Application Load Balancers können Anfragen basierend auf dem Inhalt der Anfrage weiterleiten. Weitere Informationen zu Application Load Balancers finden Sie unter Was ist Elastic Load Balancing?

Der automatische EKS-Modus erstellt und konfiguriert Application Load Balancers (). ALBs Beispielsweise erstellt der automatische Modus von EKS einen Load Balancer, wenn Sie ein Ingress Kubernetes-Objekt erstellen, und konfiguriert ihn so, dass der Datenverkehr an Ihren Cluster-Workload weitergeleitet wird.

Übersicht

  1. Erstellen Sie eine IngressClassParams Ressource und geben Sie AWS bestimmte Konfigurationswerte an, z. B. das Zertifikat, das für SSL/TLS- und VPC-Subnetze verwendet werden soll.

  2. Erstellen Sie eine IngressClass Ressource und geben Sie an, dass EKS Auto Mode der Controller für die Ressource sein soll.

  3. Erstellen Sie eine Ingress Ressource, die einem Cluster-Workload einen HTTP-Pfad und -Port zuordnet.

  4. Der automatische Modus von EKS erstellt einen Application Load Balancer, der auf die in der Ressource angegebene Arbeitslast verweist, wobei die in der Ingress Ressource angegebene Load Balancer-Konfiguration verwendet wird. IngressClassParams

Voraussetzungen

  • Der automatische EKS-Modus ist auf einem Amazon EKS-Cluster aktiviert

  • Kubectl ist für die Verbindung mit Ihrem Cluster konfiguriert

    • Sie können kubectl apply -f <filename> die folgenden YAML-Beispielkonfigurationsdateien auf Ihren Cluster anwenden.

Anmerkung

Der automatische EKS-Modus benötigt Subnetz-Tags, um öffentliche und private Subnetze zu identifizieren.

Wenn Sie Ihren Cluster mit erstellt habeneksctl, verfügen Sie bereits über diese Tags.

Weitere Informationen erhalten Sie unter Tag-Subnetze für EKS Auto Mode.

Schritt 1: Erstellen IngressClassParams

Erstellen Sie ein IngressClassParams Objekt, um AWS spezifische Konfigurationsoptionen für den Application Load Balancer anzugeben. Verwenden Sie die nachstehende Referenz, um die YAML-Beispieldatei zu aktualisieren.

Notieren Sie sich den Namen, den Sie für die IngressClassParams Ressource festgelegt haben. Sie benötigen ihn im nächsten Schritt.

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

Schritt 2: Erstellen IngressClass

Erstellen Sie eineIngressClass, die auf die AWS spezifischen Konfigurationswerte verweist, die in der IngressClassParams Ressource festgelegt sind. Notieren Sie sich den Namen derIngressClass. In diesem Beispiel IngressClassParams sind IngressClass sowohl die als auch benanntalb.

Verwenden Sie die is-default-class Anmerkung, um zu steuern, ob Ingress Ressourcen diese Klasse standardmäßig verwenden sollen.

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

Weitere Informationen zu Konfigurationsoptionen finden Sie unterIngressClassParams Referenz.

Schritt 3: Ingress erstellen

Erstellen Sie eine Ingress Ressource. Der Zweck dieser Ressource besteht darin, Pfade und Ports auf dem Application Load Balancer mit Workloads in Ihrem Cluster zu verknüpfen.

Weitere Informationen zur Konfiguration dieser Ressource finden Sie unter Ingress in der Kubernetes-Dokumentation.

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

Schritt 4: Status überprüfen

Verwenden Siekubectl, um den Status von zu ermittelnIngress. Es kann einige Minuten dauern, bis der Load Balancer verfügbar ist.

Verwenden Sie den Namen der Ingress Ressource, den Sie im vorherigen Schritt festgelegt haben.

kubectl get ingress <ingress-name>

Sobald die Ressource bereit ist, rufen Sie den Domainnamen des Load Balancers ab.

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

Um den Dienst in einem Webbrowser anzuzeigen, überprüfen Sie den Port und den Pfad, die im Ingress Rescue angegeben wurden.

Schritt 5: Bereinigen

Verwenden Sie den folgenden Befehl, um den Load Balancer zu bereinigen:

kubectl delete ingress <ingress-name>

Der automatische Modus von EKS löscht automatisch den zugehörigen Load Balancer in Ihrem AWS Konto.

IngressClassParams Referenz

Die folgende Tabelle ist eine Kurzreferenz für häufig verwendete Konfigurationsoptionen.

Feld Beschreibung Beispielwert

scheme

Definiert, ob das ALB intern oder mit dem Internet verbunden ist

internet-facing

namespaceSelector

Schränkt ein, welche Namespaces dies verwenden können IngressClass

environment: prod

group.name

Gruppiert mehrere Ingresses, sodass sie sich ein einziges ALB teilen

retail-apps

ipAddressType

Legt den IP-Adresstyp für den ALB fest

dualstack

subnets.ids

Liste der Subnetze IDs für die ALB-Bereitstellung

subnet-xxxx, subnet-yyyy

subnets.tags

Tag-Filter zur Auswahl von Subnetzen für ALB

Environment: prod

certificateARNs

ARNs der zu verwendenden SSL-Zertifikate

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

tags

Benutzerdefinierte Tags für AWS Ressourcen

Environment: prod, Team: platform

loadBalancerAttributes

Load Balancer-spezifische Attribute

idle_timeout.timeout_seconds: 60

Überlegungen

  • Sie können Anmerkungen nicht für eine verwenden, IngressClass um Load Balancer mit dem automatischen EKS-Modus zu konfigurieren.

  • Sie müssen die Cluster-IAM-Rolle aktualisieren, um die Tag-Weitergabe von Kubernetes an AWS Load Balancer-Ressourcen zu ermöglichen. Weitere Informationen finden Sie unter Benutzerdefinierte Tags für EKS Auto-Ressourcen AWS.

  • Informationen zum Zuordnen von Ressourcen zum automatischen Modus von EKS oder zum selbstverwalteten Load AWS Balancer Controller finden Sie unter. Referenz zur Migration

  • Informationen zur Behebung von Problemen mit Load Balancers finden Sie unter. Problembehandlung im EKS-Automatikmodus

  • Weitere Hinweise zur Verwendung der Lastenausgleichsfunktion von EKS Auto Mode finden Sie unterLoad Balancing.

Die folgenden Tabellen bieten einen detaillierten Vergleich der Änderungen IngressClassParams, der Ingress-Anmerkungen und der TargetGroupBinding Konfigurationen für den automatischen EKS-Modus. In diesen Tabellen werden die wichtigsten Unterschiede zwischen der Lastenausgleichsfunktion von EKS Auto Mode und dem Open-Source-Load Balancer-Controller hervorgehoben, einschließlich API-Versionsänderungen, veralteter Funktionen und aktualisierter Parameternamen.

IngressClassParams

Zurück Neu Beschreibung

elbv2.k8s.aws/v1beta1

eks.amazonaws.com/v1

Änderung der API-Version

spec.certificateArn

spec.certificateARNs

Support für mehrere Zertifikate ARNs

spec.subnets.tags

spec.subnets.matchTags

Das Subnetz-Abgleichschema wurde geändert

spec.listeners.listenerAttributes

spec.listeners.attributes

Vereinfachte Attributbenennung

Eingangs-Anmerkungen

Bisherige Neu Beschreibung

kubernetes.io/ingress.class

Nicht unterstützt

Für spec.ingressClassName Ingress-Objekte verwenden

alb.ingress.kubernetes.io/group.name

Nicht unterstützt

Geben Sie Gruppen nur in an IngressClass

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

Nicht unterstützt

Verwenden Sie stattdessen WAF v2

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

Nicht unterstützt

Verwenden Sie stattdessen WAF v2

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

Nicht unterstützt

Shield-Integration deaktiviert

TargetGroupBinding

Bisherige Neu Beschreibung

elbv2.k8s.aws/v1beta1

eks.amazonaws.com/v1

Änderung der API-Version

spec.targetTypeoptional

spec.targetTypeerforderlich

Explizite Angabe des Zieltyps

spec.networking.ingress.from

Nicht unterstützt

Unterstützt NLB ohne Sicherheitsgruppen nicht mehr