Blank white background with no objects or features visible.

Hallo EMEA! TrueFoundry baut seine Präsenz in Europa, dem Nahen Osten und Afrika weiter aus. Mehr erfahren. →

Authentifizierter gRPC-Dienst auf Kubernetes

von Abhishek Choudhary

Aktualisiert: November 3, 2026

Published: April 20, 2026

In unserer Blogserie zu Kubernetes haben wir über Gebäude gesprochen skalierbare MLOps auf Kubernetes, Architektur für MLOps, und Lösung der Anwendungsentwicklung. In diesem Blog werden wir über das Hosten eines GRPC-Dienstes auf einem AWS EKS-Cluster sprechen. Der Vorgang wird für jeden Kubernetes-Cluster ungefähr der gleiche sein. Wir mussten jedoch einige spezifische Einstellungen am AWS Load Balancer vornehmen, damit dies funktioniert.

Was ist gRPC und unser Anwendungsfall

gRPC ist ein Open-Source-RPC-Framework, das in jeder Umgebung ausgeführt werden kann. Es ist in der Lage, Dienste innerhalb und zwischen Rechenzentren effizient zu verbinden und bietet zusätzlich Unterstützung für Lastenausgleich, Tracing, Integritätsprüfung und Authentifizierung.

Unser Anwendungsfall: Hosten von Tensorflow-Modellen als APIs, die eine Nutzlast von etwa 100 MB akzeptierten. GRPC schneidet bei größeren Nutzlasten viel besser ab. Deshalb haben wir den GRPC-Port auf Port 5000 verfügbar gemacht.

Hosten des Dienstes

Wir haben den Dienst auf Kubernetes mit dem folgenden Deployment YAML gehostet:

apiVersion: apps/v1
kind: Deployment
metadata:
 name: ml-api
 namespace: ml-services
spec:
 replicas: 1
 selector:
   matchLabels:
     truefoundry.com/component: ml-api
 template:
   metadata:
     labels:
       truefoundry.com/application: ml-api
   spec:
     containers:
       - name: ml-api
         image: >-
           XXXX.dkr.ecr.us-east-1.amazonaws.com/ml-services-ml-api:latest
         ports:
           - name: port-8500
             containerPort: 8500
             protocol: TCP
         resources:
           limits:
             cpu: '4'
             ephemeral-storage: 2G
             memory: 4G
           requests:
             cpu: '1'
             ephemeral-storage: 1G
             memory: 500M
         imagePullPolicy: IfNotPresent
     restartPolicy: Always
     terminationGracePeriodSeconds: 30
     dnsPolicy: ClusterFirst
     securityContext: {}
     imagePullSecrets:
       - name: ml-api-image-pull-secret
     schedulerName: default-scheduler
 strategy:
   type: RollingUpdate
   rollingUpdate:
     maxUnavailable: 25%
     maxSurge: 0

Dadurch wird die Kapsel hochgefahren. Wir müssen das Service-Objekt mit der folgenden YAML erstellen:

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
 labels:
   argocd.argoproj.io/instance: tfy-istio-ingress
 name: tfy-wildcard
 namespace: istio-system
spec:
 selector:
   istio: tfy-istio-ingress
 servers:
   - hosts:
       - 'ml.example.com'
     port:
       name: http-tfy-wildcard
       number: 80
       protocol: HTTP
     tls:
       httpsRedirect: true
   - hosts:
       - 'ml.example.com'
     port:
       name: https-tfy-wildcard
       number: 443
       protocol: HTTP

Den Dienst verfügbar machen

Wir verwenden Istio als Ingress-Layer in Kubernetes. Istio stellt einen Load Balancer bereit, wenn der Istio-Ingress installiert ist. Die Load Balancer-Konfiguration kann mithilfe von Anmerkungen auf dem Istio-Gateway angepasst werden. Die Spezifikation für die Erstellung des Istio Gateways lautet wie folgt:

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
 labels:
   argocd.argoproj.io/instance: tfy-istio-ingress
 name: tfy-wildcard
 namespace: istio-system
spec:
 selector:
   istio: tfy-istio-ingress
 servers:
   - hosts:
       - 'ml.example.com'
     port:
       name: http-tfy-wildcard
       number: 80
       protocol: HTTP
     tls:
       httpsRedirect: true
   - hosts:
       - 'ml.example.com'
     port:
       name: https-tfy-wildcard
       number: 443
       protocol: HTTP

Wir führen die SSL-Terminierung auf dem AWS Load Balancer durch. Dazu müssen wir das Zertifikat an den Load Balancer anhängen. Dies kann mithilfe der Anmerkungen unten zum Istio-Gateway-Diagramm (https://istio-release.storage.googleapis.com/charts) erreicht werden.

"service.beta.kubernetes.io/aws-load-balancer-type": "nlb"
"service.beta.kubernetes.io/aws-load-balancer-backend-protocol": "tcp"
"service.beta.kubernetes.io/aws-load-balancer-ssl-cert": "<certificate-arn>"
"service.beta.kubernetes.io/aws-load-balancer-ssl-ports": "https"
"service.beta.kubernetes.io/aws-load-balancer-alpn-policy": "HTTP2Preferred"

Es ist wichtig, die alpn-Policy anzugeben, um GRPC-Verkehr zuzulassen. Unser Dienst ml-api kann verfügbar gemacht werden, indem ein VirtualService erstellt wird, der auf den Kubernetes-Dienst verweist. Die YAML für den virtuellen Dienst lautet wie folgt:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
 labels:
   argocd.argoproj.io/instance: ml-services_ml-api
 name: ml-apiport-8500-vs
 namespace: ml-services
spec:
 gateways:
   - istio-system/tfy-wildcard
 hosts:
   - ml.example.com
 http:
   - route:
       - destination:
           host: ml-api
           port:
             number: 8500

Sobald der virtuelle Dienst verfügbar ist, können wir Anfragen an unseren Dienst unter ml.example.com stellen. Dann wollten wir der API eine Authentifizierung hinzufügen, damit nicht jeder die API aufrufen kann. Wir hätten die Authentifizierung im Code hinzufügen können, aber wir haben beschlossen, sie auf der Istio-Ebene hinzuzufügen, damit sie eine einheitliche Ebene für alle Dienste darstellt.

Um die Authentifizierung auf der Istio-Ingress-Ebene hinzuzufügen, haben wir uns für eine entschieden IstioWASM-Plugin. Das Yaml für das Plugin sieht ungefähr so aus:

apiVersion: extensions.istio.io/v1alpha1
kind: WasmPlugin
metadata:
 name: ml-services-ml-api-0
 namespace: istio-system
spec:
 phase: AUTHN
 pluginConfig:
   basic_auth_rules:
     - credentials:
         - username:password
       hosts:
         - ml.example.com
       prefix: /
       request_methods:
         - GET
         - PUT
         - POST
         - PATCH
         - DELETE
 selector:
   matchLabels:
     istio: tfy-istio-ingress
 url: oci://ghcr.io/istio-ecosystem/wasm-extensions/basic_auth:1.12.0

Sobald Sie die obige Spezifikation auf den Cluster angewendet haben, fragt die App nach dem Benutzernamen und dem Passwort, sobald Sie sie im Browser öffnen.

Wir haben es auf TrueFoundry super einfach gemacht

Um den oben genannten Prozess erheblich zu vereinfachen, beschließen wir, es auf der Echte Gießerei plattform.

GRPC service on Kubernetes

Try now.

One gateway for all your models, MCP servers, and agents. No credit card needed.

Melde dich an
Inhaltsverzeichniss

Steuern, implementieren und verfolgen Sie KI in Ihrer eigenen Infrastruktur

Buchen Sie eine 30-minütige Fahrt mit unserem KI-Experte

Eine Demo buchen

Der schnellste Weg, deine KI zu entwickeln, zu steuern und zu skalieren

Demo buchen
Summarize with
ChatGPT logo by OpenAI
Perplexity AI logo
Blurry red snowflake on white background, symmetrical frosty design with soft edges and abstract shape.

Entdecke mehr

October 5, 2023
|
Lesedauer: 5 Minuten

<Webinar>GenAi Showcase for Companies

Best Fine Tuning Tools for Model Training
May 3, 2024
|
Lesedauer: 5 Minuten

Die 6 besten Fine-Tuning-Tools für das Modelltraining im Jahr 2026

May 25, 2023
|
Lesedauer: 5 Minuten

Open-Source-LLMs: Nutzen oder untergehen

August 27, 2025
|
Lesedauer: 5 Minuten

Kartierung des On-Prem-AI-Marktes: Von Chips bis zu Control Planes

November 14, 2026
|
Lesedauer: 5 Minuten

Claude Managed Agents vs LangChain Deep Agents: Which Agent Harness Should You Choose?

Keine Artikel gefunden.
November 13, 2026
|
Lesedauer: 5 Minuten

Claude Managed Agents vs TrueForge: Which Agent Harness Should Enterprise Teams Run in 2026

Keine Artikel gefunden.
 What is an LLM Gateway
November 13, 2026
|
Lesedauer: 5 Minuten

Was ist ein LLM Gateway? Ein kompletter Leitfaden

Technik und Produkt
November 13, 2026
|
Lesedauer: 5 Minuten

Helm Charts auf ArtifactHub über Hosting auf GitHub Pages

Technik und Produkt
Keine Artikel gefunden.

Aktuelle Blogs

Black left pointing arrow symbol on white background, directional indicator.
Black left pointing arrow symbol on white background, directional indicator.
Machen Sie eine kurze Produkttour
Produkttour starten
Produkttour