Ich habe Probleme bei der Bereitstellung meiner Web-App in kubernetes.Konfigurieren eines Nginx vor meiner Vorder- und Rückseite auf Kubernetes
Ich wollte alte Bereitstellung mit Nginx als Reverse-Proxy vor meinem Back-und Front-End-Dienste imitieren.
Ich habe 3 Stück in meinem System, nginx, Vorder-und Rückseite. Ich baute 3 Bereitstellungen, 3 Dienste und legte nur meinen Nginx-Dienst unter Verwendung von nodePort: 30050
offen.
Ohne weitere Verzögerungen, dies ist mein nginx.conf:
upstream my-server {
server myserver:3000;
}
upstream my-front {
server myfront:4200;
}
server {
listen 80;
server_name my-server.com;
location /api/v1 {
proxy_pass http://my-server;
}
location/{
proxy_pass http://my-front;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
Ich habe versucht, Locke zu installieren und nslookup in einem der Schoten und versuchte manuelle Anforderung auf Cluster-interne Endpunkte zu tun ... Tränen kamen Meine Augen, alles funktioniert ... Ich bin fast ein Entwickler, der der Cloud würdig ist.
Alles funktioniert reibungslos ... alles außer nginx DNS-Auflösung.
Wenn ich kubectl exec -it my-nginx-pod -- /bin/bash
tun und versuchen, 1 der anderen 2 Dienste zu rollen: curl myfront:4200
funktioniert es richtig.
Wenn ich versuche, einen von ihnen zu suchen, funktioniert es auch.
Danach habe ich versucht, in der nginx.conf, die Service-Namen mit den Pods IPs zu ersetzen. Nach dem Neustart des nginx-Dienstes funktionierte alles.
Warum löst nginx die Upstream-Namen nicht korrekt auf? Ich bin verrückt darüber.
nur eine Nebenbemerkung: Vielleicht möchten Sie sich Ingresses und den Nginx Ingress Controller ansehen. Auf diese Weise müssen Sie die Nginx-Konfiguration nicht mehr manuell schreiben, siehe https://kubernetes.io/docs/concepts/services-networking/ingress/. –