Ich entwickelte mich lokal in docker-compose
und hatte einen Nginx-Container, der so etwas einfach machte proxy_pass
:
location /app/ {
proxy_pass http://webapp:3000/;
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;
resolver 127.0.0.11;
}
Ich möchte jetzt zu kubernetes
GKE wechseln , und die letzte Zeile bereitet mir Probleme.
Ich habe versucht, den Resolver auf Folgendes umzustellen:
resolver kube-dns;
Ich habe auch verschiedene andere IPs und Namen ausprobiert, aber es wird immer wieder ein Fehler angezeigt:
nginx: [emerg] host not found in resolver "kube-dns"
Mein Kubernetes-Setup besteht darin, dass ich einen einzelnen Pod mit zwei Containern habe: 'webapp' und 'nginx'. Ich möchte einfach einen externen service
Hinweis proxy_pass
auf Nginx haben , der auf Webapp kann.
Irgendwelche Ideen?
quelle
Wenn Nginx in Kubernetes lebt, muss der Resolver nicht eingestellt werden, da er an der richtigen Stelle aufgelöst wird. Wenn
nginx
undwebapp
leben im gleichen Namespace können Sie einfachSolange Ihr Dienstname für die Webanwendung als Webanwendung bezeichnet wird und Port 80 verwendet.
Wenn nginx außerhalb lebt, sollten Sie einen Ingress-Controller verwenden oder den Dienst für die Webanwendung auf einen Nodeport setzen. Ein Nodeport öffnet auf allen Knoten denselben Port, sodass Sie den Lastausgleich zwischen ihnen auf der Nginx-Seite durchführen können.
quelle