単一のロードバランサー/パブリックIPで複数のサービス/ルートを公開したい場合にIngressを使用できることを理解しました。
次に、Nginxサーバーを公開します。 2つの選択肢があります
service type as LoadBalancer
出来上がりパブリックIPを取得しましたこれで、オプション1を使用して仕事を終わらせることができます。オプション2を選択するのはいつですか。なぜ、Ingressを使用せずにInginでnginxを使用することのメリットは何ですか。
ingress rule(ingress)とingress controllerには違いがあります。したがって、技術的には、nginxイングレスコントローラーとLoadBalancerタイプのサービスは比較できません。下記の入力リソースとLoadBalancerタイプのサービスを比較できます。
一般的に言えば:
LoadBalancer
タイプのサービスは、L4(TCP)ロードバランサーです。これを使用して、単一のアプリまたはサービスを外部に公開します。宛先IPアドレスとポートに基づいて負荷を分散します。
Ingress
タイプのリソースは、L7(HTTP/S)ロードバランサーを作成します。 L7 LBはアプリケーションに対応しているため、これを使用して複数のサービスを同時に公開し、アプリケーションの状態に応じてトラフィックの送信先を決定できます。
ingressおよびingress controllerrelation:
Ingress
、またはingress rules
は、ingress controller
が負荷を分散するために従うルールです。入力コントローラはパケットを取得し、入力ルールをチェックして、パケットを配信するサービスを決定します。
Nginx入力コントローラー
Nginxイングレスコントローラーは、実際にはクラスターへのエントリポイントとしてLoadBalancerタイプのサービスを使用します。次に、上りルールをチェックして負荷を分散します。これは非常に混乱する可能性があります。 Ingressリソースを作成すると、HTTP/Sロードバランサーが作成されます。また、外部IPアドレス(GKEなど)も提供しますが、そのIPアドレスにアクセスしようとすると、接続が拒否されます。
結論:
IPアドレスにマップする単一のアプリ、たとえばmyapp.com
がある場合は、ロードバランサータイプサービスを使用します。
複数のアプリがある場合は、イングレスリソースを使用します。たとえば、myapp1.com
、myapp1.com/mypath
、myapp2.com
、..、myappn.com
を1つのIPアドレスにマッピングします。
入力はL7であるため、myapp1.com
とmyapp1.com/mypath
を区別でき、トラフィックを適切なサービスにルーティングできます。
受け入れられた答えはすでに多くのものをカバーしました。 AWSでIngress Controllerを使用している理由を除いて、すべての理由は有効ですが、コストを最小限に抑えるためです。 Kubernetesクラスターawsで実行されている複数のWebアプリケーションがあります。個々のアプリケーションをLoadBalancerとして公開して個々のELBを作成する(各ELBは費用がかかる)代わりにこれらのアプリケーションにアクセスするには、上りコントローラーサービスをLoadBalancerとして公開し、それぞれに上りルールを作成します。
手順は次のとおりです。