Wählen Sie Ihre Cookie-Einstellungen aus

Wir verwenden essentielle Cookies und ähnliche Tools, die für die Bereitstellung unserer Website und Services erforderlich sind. Wir verwenden Performance-Cookies, um anonyme Statistiken zu sammeln, damit wir verstehen können, wie Kunden unsere Website nutzen, und Verbesserungen vornehmen können. Essentielle Cookies können nicht deaktiviert werden, aber Sie können auf „Anpassen“ oder „Ablehnen“ klicken, um Performance-Cookies abzulehnen.

Wenn Sie damit einverstanden sind, verwenden AWS und zugelassene Drittanbieter auch Cookies, um nützliche Features der Website bereitzustellen, Ihre Präferenzen zu speichern und relevante Inhalte, einschließlich relevanter Werbung, anzuzeigen. Um alle nicht notwendigen Cookies zu akzeptieren oder abzulehnen, klicken Sie auf „Akzeptieren“ oder „Ablehnen“. Um detailliertere Entscheidungen zu treffen, klicken Sie auf „Anpassen“.

Stellen Sie eine RPC G-basierte Anwendung auf einem EKS Amazon-Cluster bereit und greifen Sie mit einem Application Load Balancer darauf 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.

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.

Stellen Sie eine RPC G-basierte Anwendung auf einem EKS Amazon-Cluster bereit und greifen Sie mit einem Application Load Balancer darauf zu

Erstellt von Kirankumar Chandrashekar () und Huy Nguyen () AWS AWS

Übersicht

Dieses Muster beschreibt, wie Sie eine RPC G-basierte Anwendung auf einem Amazon Elastic Kubernetes Service (AmazonEKS) -Cluster hosten und über einen Application Load Balancer sicher darauf zugreifen.

g RPC ist ein Open-Source-Framework für Remote Procedure Call (RPC), das in jeder Umgebung ausgeführt werden kann. Sie können es für Microservice-Integrationen und Client-Server-Kommunikation verwenden. Weitere Informationen zu g RPC finden Sie im AWS Blogbeitrag Application Load Balancer Balancer-Unterstützung für end-to-end HTTP /2 und g. RPC

Dieses Muster zeigt Ihnen, wie Sie eine RPC G-basierte Anwendung hosten, die auf Kubernetes-Pods auf Amazon läuft. EKS Der RPC G-Client stellt über das HTTP /2-Protokoll eine Verbindung zu einem Application Load Balancer mit einer SSL TLS /-verschlüsselten Verbindung her. Der Application Load Balancer leitet den Datenverkehr an die RPC g-Anwendung weiter, die auf EKS Amazon-Pods ausgeführt wird. Die Anzahl der RPC G-Pods kann mithilfe des Kubernetes Horizontal Pod Autoscaler automatisch auf der Grundlage des Datenverkehrs skaliert werden. Die Zielgruppe des Application Load Balancers führt Integritätsprüfungen an den EKS Amazon-Knoten durch, bewertet, ob das Ziel fehlerfrei ist, und leitet den Datenverkehr nur an fehlerfreie Knoten weiter.

Voraussetzungen und Einschränkungen

Voraussetzungen

Architektur

Das folgende Diagramm zeigt die durch dieses Muster implementierte Architektur.

Architektur für RPC G-basierte Anwendungen auf Amazon EKS

Das folgende Diagramm zeigt einen Workflow, bei dem SSL TLS /-Traffic von einem RPC G-Client empfangen wird, der auf einen Application Load Balancer auslagert. Der Datenverkehr wird im Klartext an den RPC G-Server weitergeleitet, da er aus einer virtuellen privaten Cloud () stammt. VPC

Arbeitsablauf für das Senden von SSL TLS /-Traffic an einen G-Server RPC

Tools

AWS-Services

  • AWSCommand Line Interface (AWSCLI) ist ein Open-Source-Tool, mit dem Sie über Befehle in Ihrer Befehlszeilen-Shell mit AWS Diensten interagieren können.

  • Elastic Load Balancing verteilt den eingehenden Anwendungs- oder Netzwerkverkehr auf mehrere Ziele. Sie können beispielsweise den Traffic auf Amazon Elastic Compute Cloud (AmazonEC2) -Instances, Container und IP-Adressen in einer oder mehreren Availability Zones verteilen.

  • Amazon Elastic Container Registry (AmazonECR) ist ein verwalteter Container-Image-Registry-Service, der sicher, skalierbar und zuverlässig ist. 

  • Mit Amazon Elastic Kubernetes Service (AmazonEKS) können Sie Kubernetes ausführen, AWS ohne dass Sie Ihre eigene Kubernetes-Steuerebene oder Knoten installieren oder verwalten müssen.  

Tools

  • eksctl ist ein einfaches CLI Tool zum Erstellen von Clustern auf Amazon. EKS

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

  • AWSLoad Balancer Controller unterstützt Sie bei der Verwaltung von AWS Elastic Load Balancers für einen Kubernetes-Cluster.

  • gRPCurlist ein Befehlszeilentool, das Ihnen bei der Interaktion mit G-Diensten hilft. RPC

Code-Repository

Der Code für dieses Muster ist im GitHub grpc-traffic-on-alb-to-eks-Repository verfügbar.

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie ein ECR Amazon-Repository.

Melden Sie sich bei der AWS Management Console an, öffnen Sie die ECRAmazon-Konsole und erstellen Sie dann ein ECR Amazon-Repository. Weitere Informationen finden Sie in der ECR Amazon-Dokumentation unter Erstellen eines Repositorys. Stellen Sie sicher, dass Sie die des ECR Amazon-Repositorys aufzeichnenURL.

Sie können auch ein ECR Amazon-Repository erstellen, AWS CLI indem Sie den folgenden Befehl ausführen:

aws ecr create-repository --repository-name helloworld-grpc
Cloud-Administrator

Erstellen Sie das Docker-Image.

  1. Klonen Sie das GitHub grpc-traffic-on-alb-to-eks-Repository.

    git clone https://github.com/aws-samples/grpc-traffic-on-alb-to-eks.git
  2. Stellen Sie im Stammverzeichnis des Repositorys sicher, dass das Dockerfile vorhanden ist, und führen Sie dann den folgenden Befehl aus, um das Docker-Image zu erstellen: 

    docker build -t <amazon_ecr_repository_url>:<Tag> .
    Wichtig

    Stellen Sie sicher, dass Sie es <amazon_ecr_repository_url> durch das URL ECR Amazon-Repository ersetzen, das Sie zuvor erstellt haben.

DevOps Ingenieur

Pushen Sie das Docker-Image an AmazonECR.

  1. Führen Sie den folgenden Befehl aus, um sich beim ECR Amazon-Repository anzumelden:

    aws ecr get-login-password --region us-east-1 --no-cli-auto-prompt | docker login --username AWS --password-stdin <your_aws_account_id>.dkr.ecr.us-east-1.amazonaws.com
  2. Pushen Sie das Docker-Image in das ECR Amazon-Repository, indem Sie den folgenden Befehl ausführen:

    docker push <your_aws_account_id>.dkr.ecr.us-east-1.amazonaws.com/helloworld-grpc:1.0
    Wichtig

    Stellen Sie sicher, dass Sie es durch Ihre AWS Konto-ID <your_aws_account_id> ersetzen.

DevOps Ingenieur

Erstellen Sie das Docker-Image des RPC G-Servers und übertragen Sie es an Amazon ECR

AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie ein ECR Amazon-Repository.

Melden Sie sich bei der AWS Management Console an, öffnen Sie die ECRAmazon-Konsole und erstellen Sie dann ein ECR Amazon-Repository. Weitere Informationen finden Sie in der ECR Amazon-Dokumentation unter Erstellen eines Repositorys. Stellen Sie sicher, dass Sie die des ECR Amazon-Repositorys aufzeichnenURL.

Sie können auch ein ECR Amazon-Repository erstellen, AWS CLI indem Sie den folgenden Befehl ausführen:

aws ecr create-repository --repository-name helloworld-grpc
Cloud-Administrator

Erstellen Sie das Docker-Image.

  1. Klonen Sie das GitHub grpc-traffic-on-alb-to-eks-Repository.

    git clone https://github.com/aws-samples/grpc-traffic-on-alb-to-eks.git
  2. Stellen Sie im Stammverzeichnis des Repositorys sicher, dass das Dockerfile vorhanden ist, und führen Sie dann den folgenden Befehl aus, um das Docker-Image zu erstellen: 

    docker build -t <amazon_ecr_repository_url>:<Tag> .
    Wichtig

    Stellen Sie sicher, dass Sie es <amazon_ecr_repository_url> durch das URL ECR Amazon-Repository ersetzen, das Sie zuvor erstellt haben.

DevOps Ingenieur

Pushen Sie das Docker-Image an AmazonECR.

  1. Führen Sie den folgenden Befehl aus, um sich beim ECR Amazon-Repository anzumelden:

    aws ecr get-login-password --region us-east-1 --no-cli-auto-prompt | docker login --username AWS --password-stdin <your_aws_account_id>.dkr.ecr.us-east-1.amazonaws.com
  2. Pushen Sie das Docker-Image in das ECR Amazon-Repository, indem Sie den folgenden Befehl ausführen:

    docker push <your_aws_account_id>.dkr.ecr.us-east-1.amazonaws.com/helloworld-grpc:1.0
    Wichtig

    Stellen Sie sicher, dass Sie es durch Ihre AWS Konto-ID <your_aws_account_id> ersetzen.

DevOps Ingenieur
AufgabeBeschreibungErforderliche Fähigkeiten

Ändern Sie die Werte in der Kubernetes-Manifestdatei.

  1. Ändern Sie die grpc-sample.yaml Kubernetes-Manifestdatei im Kubernetes-Ordner des Repositorys gemäß Ihren Anforderungen. Sie müssen die Anmerkungen und den Hostnamen in der Eingangsressource ändern. Ein Beispiel für eine Ingress-Ressource finden Sie im Abschnitt Zusätzliche Informationen. Weitere Informationen zu Eingangsanmerkungen finden Sie unter Eingangsanmerkungen in der Kubernetes-Dokumentation.

  2. Ändern Sie in der Kubernetes-Bereitstellungsressource die Bereitstellungsressourcen in die Uniform Resource Identifier (URI) für das ECR Amazon-Repository, in das Sie das Docker-Image übertragen haben. image Ein Beispiel für eine Bereitstellungsressource finden Sie im Abschnitt Zusätzliche Informationen.

DevOps Ingenieur

Stellen Sie die Kubernetes-Manifestdatei bereit.

Stellen Sie die grpc-sample.yaml Datei im EKS Amazon-Cluster bereit, indem Sie den folgenden kubectl Befehl ausführen: 

kubectl apply -f ./kubernetes/grpc-sample.yaml
DevOps Ingenieur

Stellen Sie die Kubernetes-Manifeste im Amazon-Cluster bereit EKS

AufgabeBeschreibungErforderliche Fähigkeiten

Ändern Sie die Werte in der Kubernetes-Manifestdatei.

  1. Ändern Sie die grpc-sample.yaml Kubernetes-Manifestdatei im Kubernetes-Ordner des Repositorys gemäß Ihren Anforderungen. Sie müssen die Anmerkungen und den Hostnamen in der Eingangsressource ändern. Ein Beispiel für eine Ingress-Ressource finden Sie im Abschnitt Zusätzliche Informationen. Weitere Informationen zu Eingangsanmerkungen finden Sie unter Eingangsanmerkungen in der Kubernetes-Dokumentation.

  2. Ändern Sie in der Kubernetes-Bereitstellungsressource die Bereitstellungsressourcen in die Uniform Resource Identifier (URI) für das ECR Amazon-Repository, in das Sie das Docker-Image übertragen haben. image Ein Beispiel für eine Bereitstellungsressource finden Sie im Abschnitt Zusätzliche Informationen.

DevOps Ingenieur

Stellen Sie die Kubernetes-Manifestdatei bereit.

Stellen Sie die grpc-sample.yaml Datei im EKS Amazon-Cluster bereit, indem Sie den folgenden kubectl Befehl ausführen: 

kubectl apply -f ./kubernetes/grpc-sample.yaml
DevOps Ingenieur
AufgabeBeschreibungErforderliche Fähigkeiten

Notieren Sie das FQDN für den Application Load Balancer.

  1. Führen Sie den folgenden kubectl Befehl aus, um die Kubernetes-Eingangsressource zu beschreiben, die den Application Load Balancer verwaltet:

    kubectl get ingress -n grpcserver

    Eine Beispielausgabe finden Sie im Abschnitt Zusätzliche Informationen. In der Ausgabe zeigt das HOSTS Feld den DNS Hostnamen an, für den die SSL Zertifikate erstellt wurden.

  2. Notieren Sie den vollqualifizierten Domainnamen (FQDN) des Application Load Balancers aus dem Address Feld der Ausgabe. 

  3. Erstellen Sie einen DNS Datensatz, der auf den des Application Load Balancers verweist. FQDN Wenn Ihr DNS Anbieter Amazon Route 53 ist, können Sie einen Aliaseintrag erstellen, der auf den des Application Load Balancers verweist. FQDN Weitere Informationen zu dieser Option finden Sie unter Auswahl zwischen Alias- und Nicht-Aliasdatensätzen in der Route 53 53-Dokumentation.

DevOps Ingenieur

Erstellen Sie den DNS Datensatz für den Application Load Balancer FQDN

AufgabeBeschreibungErforderliche Fähigkeiten

Notieren Sie das FQDN für den Application Load Balancer.

  1. Führen Sie den folgenden kubectl Befehl aus, um die Kubernetes-Eingangsressource zu beschreiben, die den Application Load Balancer verwaltet:

    kubectl get ingress -n grpcserver

    Eine Beispielausgabe finden Sie im Abschnitt Zusätzliche Informationen. In der Ausgabe zeigt das HOSTS Feld den DNS Hostnamen an, für den die SSL Zertifikate erstellt wurden.

  2. Notieren Sie den vollqualifizierten Domainnamen (FQDN) des Application Load Balancers aus dem Address Feld der Ausgabe. 

  3. Erstellen Sie einen DNS Datensatz, der auf den des Application Load Balancers verweist. FQDN Wenn Ihr DNS Anbieter Amazon Route 53 ist, können Sie einen Aliaseintrag erstellen, der auf den des Application Load Balancers verweist. FQDN Weitere Informationen zu dieser Option finden Sie unter Auswahl zwischen Alias- und Nicht-Aliasdatensätzen in der Route 53 53-Dokumentation.

DevOps Ingenieur
AufgabeBeschreibungErforderliche Fähigkeiten

Testen Sie den RPC G-Server.

Verwenden Sie gRPCurl , um den Endpunkt zu testen, indem Sie den folgenden Befehl ausführen:

grpcurl grpc.example.com:443 list grpc.reflection.v1alpha.ServerReflection helloworld.helloworld
Anmerkung

Ersetze es grpc.example.com durch deinen DNS Namen.

DevOps Ingenieur

Testen Sie den RPC G-Server mit einem RPC G-Client.

Ersetzen Sie im helloworld_client_ssl.py RPC G-Client-Beispiel den Hostnamen von grpc.example.com durch den Hostnamen, der für den RPC G-Server verwendet wurde.  

Das folgende Codebeispiel zeigt die Antwort des RPC G-Servers auf die Anfrage des Clients:

python ./app/helloworld_client_ssl.py message: "Hello to gRPC server from Client" message: "Thanks for talking to gRPC server!! Welcome to hello world. Received message is \"Hello to gRPC server from Client\"" received: true

Dies zeigt, dass der Client mit dem Server kommunizieren kann und dass die Verbindung erfolgreich ist.

DevOps Ingenieur

Testen der Lösung

AufgabeBeschreibungErforderliche Fähigkeiten

Testen Sie den RPC G-Server.

Verwenden Sie gRPCurl , um den Endpunkt zu testen, indem Sie den folgenden Befehl ausführen:

grpcurl grpc.example.com:443 list grpc.reflection.v1alpha.ServerReflection helloworld.helloworld
Anmerkung

Ersetze es grpc.example.com durch deinen DNS Namen.

DevOps Ingenieur

Testen Sie den RPC G-Server mit einem RPC G-Client.

Ersetzen Sie im helloworld_client_ssl.py RPC G-Client-Beispiel den Hostnamen von grpc.example.com durch den Hostnamen, der für den RPC G-Server verwendet wurde.  

Das folgende Codebeispiel zeigt die Antwort des RPC G-Servers auf die Anfrage des Clients:

python ./app/helloworld_client_ssl.py message: "Hello to gRPC server from Client" message: "Thanks for talking to gRPC server!! Welcome to hello world. Received message is \"Hello to gRPC server from Client\"" received: true

Dies zeigt, dass der Client mit dem Server kommunizieren kann und dass die Verbindung erfolgreich ist.

DevOps Ingenieur
AufgabeBeschreibungErforderliche Fähigkeiten

Entferne den DNS Datensatz.

Entfernen Sie den DNS Datensatz, der auf die zuvor erstellten Application Load FQDN Balancer-Dateien verweist.

Cloud-Administrator

Entfernen Sie den Load Balancer.

Wählen Sie auf der EC2Amazon-Konsole Load Balancers und entfernen Sie dann den Load Balancer, den der Kubernetes-Controller für Ihre Eingangsressource erstellt hat.

Cloud-Administrator

Löschen Sie den EKS Amazon-Cluster.

Löschen Sie den EKS Amazon-Cluster mithilfe voneksctl:

eksctl delete cluster -f ./eks.yaml
AWS DevOps

Bereinigen

AufgabeBeschreibungErforderliche Fähigkeiten

Entferne den DNS Datensatz.

Entfernen Sie den DNS Datensatz, der auf die zuvor erstellten Application Load FQDN Balancer-Dateien verweist.

Cloud-Administrator

Entfernen Sie den Load Balancer.

Wählen Sie auf der EC2Amazon-Konsole Load Balancers und entfernen Sie dann den Load Balancer, den der Kubernetes-Controller für Ihre Eingangsressource erstellt hat.

Cloud-Administrator

Löschen Sie den EKS Amazon-Cluster.

Löschen Sie den EKS Amazon-Cluster mithilfe voneksctl:

eksctl delete cluster -f ./eks.yaml
AWS DevOps

Zugehörige Ressourcen

Zusätzliche Informationen

Beispiel für eine Ingress-Ressource:

--- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: alb.ingress.kubernetes.io/healthcheck-protocol: HTTP alb.ingress.kubernetes.io/ssl-redirect: "443" alb.ingress.kubernetes.io/backend-protocol-version: "GRPC" alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]' alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/target-type: ip alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:<AWS-Region>:<AccountId>:certificate/<certificate_ID> labels: app: grpcserver environment: dev name: grpcserver namespace: grpcserver spec: ingressClassName: alb rules: - host: grpc.example.com # <----- replace this as per your host name for which the SSL certtficate is available in ACM http: paths: - backend: service: name: grpcserver port: number: 9000 path: / pathType: Prefix

Beispiel für eine Bereitstellungsressource:

apiVersion: apps/v1 kind: Deployment metadata: name: grpcserver namespace: grpcserver spec: selector: matchLabels: app: grpcserver replicas: 1 template: metadata: labels: app: grpcserver spec: containers: - name: grpc-demo image: <your_aws_account_id>.dkr.ecr.us-east-1.amazonaws.com/helloworld-grpc:1.0 #<------- Change to the URI that the Docker image is pushed to imagePullPolicy: Always ports: - name: grpc-api containerPort: 9000 env: - name: POD_IP valueFrom: fieldRef: fieldPath: status.podIP restartPolicy: Always

Beispielausgabe:

NAME CLASS HOSTS Address PORTS AGE grpcserver <none> <DNS-HostName> <ELB-address> 80 27d
DatenschutzNutzungsbedingungen für die WebsiteCookie-Einstellungen
© 2025, Amazon Web Services, Inc. oder Tochtergesellschaften. Alle Rechte vorbehalten.