Je développais localement dans docker-compose
et avait un conteneur Nginx faisant un simple proxy_pass
ainsi:
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;
}
Je veux maintenant passer à kubernetes
dans GKE, et la dernière ligne me donne des problèmes.
J'ai essayé de changer le résolveur en:
resolver kube-dns;
J'ai également essayé divers autres IP et noms, mais je continue à obtenir une erreur dans le sens de:
nginx: [emerg] Host not found in resolver "kube-dns"
Ma configuration de Kubettes est que j'ai une seule pod, avec 2 conteneurs: 'WebApp' et 'Nginx'. Je veux simplement avoir un _ service
pointant sur nginx qui peut proxy_pass
à webapp.
Des idées?
Vous devez spécifier le FQDN pour le Kube-DNS et les services.
[.____] pour GKE Kube-DNS Standard par exemple, ce serait: kube-dns.kube-system.svc.cluster.local
[.____] et si vous êtes sur l'espace de noms par défaut avec votre service webapp service, ce serait: webapp.default.svc.cluster.local
Je sais que la question initiale est vieille, mais peut-être que cela aide quelqu'un.
Si Nginx vit à l'intérieur de Kubettes, il n'est pas nécessaire de définir le résolveur puisqu'il résoudra au bon endroit. Si nginx
et webapp
vivez dans la même espace de noms que vous pouvez simplement
proxy_pass http://webapp
Tant que votre nom de service pour le WebApp s'appelle WebApp et à l'aide du port 80.
Si Nginx vit à l'extérieur, vous devez utiliser un contrôle d'entrée ou définir le service pour la webApp à un NODEPORT. Un NODEPORT ouvrira le même port sur tous les nœuds afin que vous puissiez charger l'équilibre entre eux sur le côté NGinx.