web-dev-qa-db-fra.com

Quelle est la différence entre exposer nginx en tant qu'équilibreur de charge et contrôleur Ingress?

J'ai compris qu'Ingress peut être utilisé lorsque nous voulons exposer plusieurs services/routes avec un seul équilibreur de charge/IP publique.

Maintenant, je veux exposer mon serveur Nginx au public. J'ai deux choix

  1. Ensemble service type as LoadBalancer voila j'ai obtenu l'IP publique
  2. Utilisez Nginx Ingress Controller

Maintenant, je peux faire mon travail avec l'option 1 quand ou pourquoi devrais-je choisir l'option 2 quel est l'avantage d'avoir nginx avec Ingress sans Ingress?

11
Siva

Il existe une différence entre règle d'entrée (entrée) et contrôleur d'entrée . Donc, techniquement, le contrôleur d'entrée nginx et le service de type LoadBalancer ne sont pas comparables. Vous pouvez comparer la ressource d'entrée et le service de type LoadBalancer, ci-dessous.

De manière générale:

Le service de type LoadBalancer est un équilibreur de charge L4 (TCP). Vous l'utiliseriez pour exposer une application ou un service unique au monde extérieur. Il équilibrerait la charge en fonction de l'adresse IP et du port de destination.

Ingress ressource de type créerait un équilibreur de charge L7 (HTTP/S). Vous l'utiliseriez pour exposer plusieurs services en même temps, car L7 LB est sensible aux applications, afin qu'il puisse déterminer où envoyer le trafic en fonction de l'état de l'application.

entrée et relation contrôleur d'entrée :

Ingress ou ingress rules sont les règles qui ingress controller suit pour répartir la charge. Le contrôleur d'entrée obtient le paquet, vérifie les règles d'entrée et détermine à quel service livrer le paquet.

Contrôleur d'entrée Nginx

Le contrôleur d'entrée Nginx utilise le service de type LoadBalancer comme point d'entrée du cluster. Ensuite, vérifie les règles d'entrée et répartit la charge. Cela peut être très déroutant. Vous créez une ressource d'entrée, elle crée l'équilibreur de charge HTTP/S. Il vous donne également une adresse IP externe (sur GKE, par exemple), mais lorsque vous essayez de frapper cette adresse IP, la connexion est refusée.

Conclusions:

Vous utiliseriez le service de type Loadbalancer si vous aviez une seule application, par exemple myapp.com que vous souhaitez associer à une adresse IP.

Vous utiliseriez une ressource d'entrée si vous aviez plusieurs applications, par exemple myapp1.com, myapp1.com/mypath, myapp2.com, .., myappn.com à mapper sur une seule adresse IP.

Comme l'entrée est L7, elle est capable de faire la distinction entre myapp1.com et myapp1.com/mypath, il peut acheminer le trafic vers le bon service.

19
suren

La réponse acceptée couvrait déjà beaucoup de choses. Toutes les raisons sont valables, sauf que la raison pour laquelle j'utilise le contrôleur d'entrée dans aws est de minimiser les coûts. J'ai plusieurs applications Web qui s'exécutent dans les AWS de cluster Kubernetes. Pour accéder à ces applications au lieu d'exposer une application individuelle en tant que LoadBalancer et de créer un ELB individuel (chaque ELB coûte de l'argent), j'expose le service de contrôleur d'entrée en tant que LoadBalancer et j'ai créé une règle d'entrée pour chacune.

Les étapes impliquent:

  • Le service d'entrée, présenté comme un équilibreur de charge qui a créé ELB dans aws, dit elb1.aws.com
  • Règle d'entrée pour chaque application Web, par exemple example.com, awesome.com, helloworld.com
  • Mappage de Route53 tous mappés sur le même ELB, par exemple: example.com -> elb1.aws.com awesome.com -> elb1.aws.com helloworld.com -> elb1.aws.com
3
Balkrishna