Greifen Sie mit AWS PrivateLink und einem Network Load Balancer privat auf Container-Anwendungen auf Amazon EKS zu - AWS Prescriptive Guidance

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.

Greifen Sie mit AWS PrivateLink und einem Network Load Balancer privat auf Container-Anwendungen auf Amazon EKS zu

Erstellt von Kirankumar Chandrashekar (AWS)

Umwelt: Produktion

Technologien: Container und Mikroservices DevOps; Modernisierung; Sicherheit, Identität, Compliance

Arbeitslast: Alle anderen Workloads

AWS-Dienste: Amazon EKS; Amazon VPC

Dieses Muster beschreibt, wie Sie eine Docker-Container-Anwendung privat auf Amazon Elastic Kubernetes Service (Amazon EKS) hinter einem Network Load Balancer hosten und mithilfe von AWS auf die Anwendung zugreifen. PrivateLink Sie können dann ein privates Netzwerk verwenden, um sicher auf Dienste in der Amazon Web Services (AWS) Cloud zuzugreifen. 

Der Amazon EKS-Cluster, auf dem die Docker-Anwendungen ausgeführt werden, mit einem Network Load Balancer am Frontend kann mit einem Virtual Private Cloud (VPC) -Endpunkt für den Zugriff über AWS verknüpft werden. PrivateLink Dieser VPC-Endpunktdienst kann dann mit anderen VPCs gemeinsam genutzt werden, indem deren VPC-Endpunkte verwendet werden.

Das in diesem Muster beschriebene Setup ist eine sichere Methode, um den Anwendungszugriff zwischen VPCs und AWS-Konten gemeinsam zu nutzen. Es sind keine speziellen Konnektivitäts- oder Routing-Konfigurationen erforderlich, da die Verbindung zwischen den Kunden- und Anbieterkonten auf dem globalen AWS-Backbone erfolgt und nicht das öffentliche Internet durchquert.

Voraussetzungen

  • Docker, installiert und konfiguriert unter Linux, MacOS oder Windows.

  • Eine Anwendung, die auf Docker läuft.

  • Ein aktives AWS-Konto.

  • AWS-Befehlszeilenschnittstelle (AWS CLI) Version 2, installiert und konfiguriert unter Linux, macOS oder Windows.

  • Ein vorhandener Amazon EKS-Cluster mit markierten privaten Subnetzen, der für das Hosten von Anwendungen konfiguriert ist. Weitere Informationen finden Sie unter Subnet-Tagging in der Amazon EKS-Dokumentation. 

  • Kubectl, installiert und konfiguriert für den Zugriff auf Ressourcen in Ihrem Amazon EKS-Cluster. Weitere Informationen finden Sie unter Installation von kubectl in der Amazon EKS-Dokumentation. 

Verwenden Sie PrivateLink und einen Network Load Balancer, um auf eine Anwendung in einem Amazon EKS-Container zuzugreifen.

Technologie-Stack

  • Amazon EKS

  • AWS PrivateLink

  • Network Load Balancer

Automatisierung und Skalierung

  • Kubernetes-Manifeste können in einem Git-basierten Repository (z. B. auf AWS CodeCommit) verfolgt und verwaltet und mithilfe von Continuous Integration and Continuous Delivery (CI/CD) in AWS bereitgestellt werden. CodePipeline 

  • Sie können AWS verwenden CloudFormation , um dieses Muster mithilfe von Infrastructure as Code (IaC) zu erstellen.

  • AWS CLI — AWS Command Line Interface (AWS CLI) ist ein Open-Source-Tool, mit dem Sie mithilfe von Befehlen in Ihrer Befehlszeilen-Shell mit AWS-Services interagieren können.

  • Elastic Load Balancing — Elastic Load Balancing verteilt eingehenden Anwendungs- oder Netzwerkverkehr auf mehrere Ziele, wie Amazon Elastic Compute Cloud (Amazon EC2) -Instances, Container und IP-Adressen, in einer oder mehreren Availability Zones.

  • Amazon EKS — Amazon Elastic Kubernetes Service (Amazon EKS) ist ein verwalteter Service, mit dem Sie Kubernetes auf AWS ausführen können, ohne Ihre eigene Kubernetes-Steuerebene oder Knoten installieren, betreiben und warten zu müssen.

  • Amazon VPC — Amazon Virtual Private Cloud (Amazon VPC) hilft Ihnen, AWS-Ressourcen in einem von Ihnen definierten virtuellen Netzwerk zu starten.

  • Kubectl — Kubectl ist ein Befehlszeilenprogramm zum Ausführen von Befehlen für Kubernetes-Cluster.

AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie die Manifestdatei für die Kubernetes-Bereitstellung.

Erstellen Sie eine Bereitstellungsmanifestdatei, indem Sie die folgende Beispieldatei Ihren Anforderungen entsprechend ändern.

apiVersion: apps/v1 kind: Deployment metadata: name: sample-app spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: public.ecr.aws/z9d2n7e1/nginx:1.19.5 ports: - name: http containerPort: 80

Hinweis: Dies ist eine NGINX-Beispielkonfigurationsdatei, die mithilfe des NGINX-Docker-Images bereitgestellt wird. Weitere Informationen finden Sie in der Docker-Dokumentation unter So verwenden Sie das offizielle NGINX-Docker-Image.

DevOps Ingenieur

Stellen Sie die Kubernetes-Bereitstellungsmanifestdatei bereit.

Führen Sie den folgenden Befehl aus, um die Bereitstellungsmanifestdatei auf Ihren Amazon EKS-Cluster anzuwenden:

kubectl apply –f <your_deployment_file_name> 

DevOps Ingenieur

Erstellen Sie die Manifestdatei des Kubernetes-Dienstes.

Erstellen Sie eine Dienstmanifestdatei, indem Sie die folgende Beispieldatei Ihren Anforderungen entsprechend ändern.

apiVersion: v1 kind: Service metadata: name: sample-service annotations: service.beta.kubernetes.io/aws-load-balancer-type: nlb service.beta.kubernetes.io/aws-load-balancer-internal: "true" spec: ports: - port: 80 targetPort: 80 protocol: TCP type: LoadBalancer selector: app: nginx

Wichtig: Stellen Sie sicher, dass Sie Folgendes angegeben habenannotations, um einen internen Network Load Balancer zu definieren:

service.beta.kubernetes.io/aws-load-balancer-type: nlb service.beta.kubernetes.io/aws-load-balancer-internal: "true"
DevOps Ingenieur

Stellen Sie die Manifestdatei des Kubernetes-Dienstes bereit.

Führen Sie den folgenden Befehl aus, um die Service-Manifest-Datei auf Ihren Amazon EKS-Cluster anzuwenden:

kubectl apply -f <your_service_file_name>

DevOps Ingenieur
AufgabeBeschreibungErforderliche Fähigkeiten

Notieren Sie sich den Namen des Network Load Balancers.

Führen Sie den folgenden Befehl aus, um den Namen des Network Load Balancer abzurufen:

kubectl get svc sample-service -o wide

Notieren Sie sich den Namen des Network Load Balancers, der für die Erstellung eines PrivateLink AWS-Endpunkts erforderlich ist.

DevOps Ingenieur

Erstellen Sie einen PrivateLink AWS-Endpunkt.

Melden Sie sich bei der AWS-Managementkonsole an, öffnen Sie die Amazon VPC-Konsole und erstellen Sie dann einen PrivateLink AWS-Endpunkt. Ordnen Sie diesen Endpunkt dem Network Load Balancer zu, damit die Anwendung privat für Kunden verfügbar ist. Weitere Informationen finden Sie unter VPC Endpoint Services (AWS PrivateLink) in der Amazon VPC-Dokumentation.

Wichtig: Wenn das Verbraucherkonto Zugriff auf die Anwendung benötigt, muss die AWS-Konto-ID des Verbraucherkontos zur Liste der zulässigen Prinzipale für die PrivateLink AWS-Endpunktkonfiguration hinzugefügt werden. Weitere Informationen finden Sie unter Hinzufügen und Entfernen von Berechtigungen für Ihren Endpunkt-Service in der Amazon VPC-Dokumentation.

Cloud-Administrator

Erstellen Sie einen VPC-Endpunkt.

Wählen Sie in der Amazon VPC-Konsole Endpoint Services und dann Create Endpoint Service aus. Erstellen Sie einen VPC-Endpunkt für den PrivateLink AWS-Endpunkt.

Der vollqualifizierte Domainname (FQDN) des VPC-Endpunkts verweist auf den FQDN für den AWS-Endpunkt. PrivateLink Dadurch wird eine elastic network interface zum VPC-Endpunktdienst erstellt, auf die die DNS-Endpunkte zugreifen können. 

Cloud-Administrator