kubernetesに私のWebアプリケーションをデプロイしようとして問題が発生しました。Kubernetesのフロントエンドとバックエンドの前にNginxを設定する
私は私の背中とフロントエンドサービスの前にリバースプロキシとして働いてnginxの古いデプロイを模倣したかったです。
私のシステムでは、nginx、前後に3枚あります。私は3つのデプロイメント、3つのサービスを構築し、nodePort: 30050
を使用して自分のnginxサービスのみを公開しました。さらに遅延することなく、これは私の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;
}
}
私はカールインストールしようとnslookupをポッドの1の内側に、クラスタ内のエンドポイントに手動要求を実行しようとしました...涙がするようになりました私の目は、すべてが働いている...私はほぼ開発者の雲の価値がある。
すべてがスムーズに動作しています... nginxのDNS解像度以外はすべてです。
私はkubectl exec -it my-nginx-pod -- /bin/bash
を行うと、他の2つのサービスの1をカールしようとした場合:curl myfront:4200
それが正常に動作します。
もし私がそれらのうちの1つをnslookupしようとするとうまくいきます。この後
私は、nginx.confで、ポッドのIPを持つサービス名を交換しようとしました。 nginxサービスを再起動した後、すべてが機能していました。
nginxがアップストリーム名を正しく解決しないのはなぜですか? 私はこれ以上ナッツをしています。
ちょうどsidenote:おそらくあなたはIngressesとNginx Ingressコントローラを見たいと思うかもしれません。この方法で、Nginxの設定を手動で書き込む必要はありません。https://kubernetes.io/docs/concepts/services-networking/ingress/を参照してください。 –