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
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
Ein aktives AWS-Konto.
Docker
, installiert und konfiguriert unter Linux, MacOS oder Windows. AWSCommand Line Interface (AWSCLI) Version 2, installiert und konfiguriert unter Linux, macOS oder Windows.
eksctl
, installiert und konfiguriert unter Linux, MacOS oder Windows. kubectl
, installiert und konfiguriert für den Zugriff auf Ressourcen in Ihrem EKS Amazon-Cluster. Weitere Informationen finden Sie in der EKS Amazon-Dokumentation unter Kubectl installieren oder aktualisieren.gRPCurl
, installiert und konfiguriert. Ein neuer oder vorhandener EKS Amazon-Cluster. Weitere Informationen finden Sie unter Erste Schritte mit AmazonEKS.
Ihr Computerterminal ist für den Zugriff auf den EKS Amazon-Cluster konfiguriert. Weitere Informationen finden Sie in der EKS Amazon-Dokumentation unter Konfiguration Ihres Computers für die Kommunikation mit Ihrem Cluster.
AWSLoad Balancer Controller, bereitgestellt im EKS Amazon-Cluster.
Ein vorhandener DNS Hostname mit einem gültigen SSL oder SSL TLS /-Zertifikat. Sie können ein Zertifikat für Ihre Domain erhalten, indem Sie den AWS Certificate Manager (ACM) verwenden oder ein vorhandenes Zertifikat auf ACM hochladen. Weitere Informationen zu diesen beiden Optionen finden Sie in der ACM Dokumentation unter Anfordern eines öffentlichen Zertifikats und Importieren von AWS Zertifikaten in den Certificate Manager.
Architektur
Das folgende Diagramm zeigt die durch dieses Muster implementierte Architektur.

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

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.
gRPCurl
ist 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
Epen
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie ein ECR Amazon-Repository. | Melden Sie sich bei der AWS Management Console an, öffnen Sie die ECRAmazon-Konsole Sie können auch ein ECR Amazon-Repository erstellen, AWS CLI indem Sie den folgenden Befehl ausführen:
| Cloud-Administrator |
Erstellen Sie das Docker-Image. |
| DevOps Ingenieur |
Pushen Sie das Docker-Image an AmazonECR. |
| DevOps Ingenieur |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Ändern Sie die Werte in der Kubernetes-Manifestdatei. |
| DevOps Ingenieur |
Stellen Sie die Kubernetes-Manifestdatei bereit. | Stellen Sie die
| DevOps Ingenieur |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Notieren Sie das FQDN für den Application Load Balancer. |
| DevOps Ingenieur |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Testen Sie den RPC G-Server. | Verwenden Sie gRPCurl , um den Endpunkt zu testen, indem Sie den folgenden Befehl ausführen:
AnmerkungErsetze es | DevOps Ingenieur |
Testen Sie den RPC G-Server mit einem RPC G-Client. | Ersetzen Sie im Das folgende Codebeispiel zeigt die Antwort des RPC G-Servers auf die Anfrage des Clients:
Dies zeigt, dass der Client mit dem Server kommunizieren kann und dass die Verbindung erfolgreich ist. | DevOps Ingenieur |
Aufgabe | Beschreibung | Erforderliche 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 | Cloud-Administrator |
Löschen Sie den EKS Amazon-Cluster. | Löschen Sie den EKS Amazon-Cluster mithilfe von
| 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