Für die lokale Entwicklung habe ich einen funktionierenden Minikubus. Dort haben wir verschiedene Dienste im Einsatz. Jetzt möchte ich das Frontend mit dem Backend verbinden.Kubernetes Kommunikation zwischen Frontend und Backend
Das Frontend ist eine Winkelanwendung und lebt in einem eigenen Dienst. Das Backend ist eine node.js-Anwendung, die ebenfalls einen separaten Dienst verwendet und DNS verwendet, um eine Verbindung zu anderen internen Diensten wie mongodb herzustellen.
Jetzt möchte ich vom Frontend mit dem Backend kommunizieren. DNS funktioniert nicht, da das Frontend nicht weiß, wie die angegebene Route zu lösen ist. Das Problem besteht darin, dem Frontend mitzuteilen, an welche Back-End-URL und an welchen Port es Anfragen senden soll.
Der einzige funktionierende Zustand wurde angegangen, als ich den Backend-Dienst mit dem Typ NodePort zum ersten Mal gestartet und die URL und den Port auf die Frontends-Ziel-URL kopiert habe. Ich denke, das ist sehr unrein für mich. Gibt es einen anderen Ansatz, um die URL für Backend-Anfragen in das Frontend zu bekommen?
Ich weiß, wenn wir einen Dienst auf einem Produktionssystem mit Type = "LoadBalancer" bereitstellen, dass der Dienst durch eine externe IP verfügbar gemacht wird und ich von dort auf den Dienst zugreifen kann. Und dass die externe IP bei Pod-Aktualisierungen und so weiter permanent ist. Das Problem, das ich auch sehe, ist, dass die Backend-IP durch einen zusätzlichen Commit in den Andock-Container eingefügt werden muss.
Edit (1): Der Backend-Service
apiVersion: v1
kind: Service
metadata:
name: backend
labels:
app: some-app
tier: backend
spec:
type: NodePort
ports:
- port: 3000
selector:
app: some-app
tier: backend
Edit (2): Ich bekomme auch diese Antwort, wenn ich vom Client mit einem fqn anfordern:
OPTIONS http://backend.default.svc.cluster.local:3000/signup/ net::ERR_NAME_NOT_RESOLVED
haben Sie setzen Sie mit einem Service-Backend? Wenn ja, sollten Sie die Ports in der Service-Definition definiert haben und Sie sollten DNS-Auflösung für sagen http: // Backend: 80/ –
@SebastienGoasguen Ich habe die Backend-Service-Definition hinzugefügt. Also habe ich Port 3000 für das Backend definiert und es ist auch nicht erreichbar. Ich denke, die eckige Anwendung weiß nicht, wie man den DNS-Namen "Backend" auflöst. – Lunero
können Sie versuchen, mit FQN wie folgt 'backend.default.svc.cluster.local'. Möglicherweise müssen Sie den Standardwert durch Ihren Namensbereich ersetzen. – sfgroups