web-dev-qa-db-fra.com

Exposer un service dans Kubernetes à l'aide du proxy inverse nginx

Je suis nouveau sur Kubernetes et je voulais comprendre comment je peux exposer un service fonctionnant dans Kubernetes au monde extérieur. Je l'ai exposé en utilisant un NodePort sur le cluster. Ainsi, par exemple: un service expose le port 31234 sur l'hôte et je peux accéder au service à partir d'un autre serveur via https: // kubeserverIP: 31234 .

Ce que je veux réaliser, c'est servir ce service via nginx (sur un serveur différent, hors du contrôle Kube) via une URL, disons http://service.example.com . J'ai essayé de déployer nginx avec un pointage en amont vers le service, mais cela ne fonctionne pas et j'obtiens une erreur de passerelle incorrecte.

Y a-t-il quelque chose qui me manque ici? Ou existe-t-il un moyen plus efficace d'y parvenir?.

J'ai une installation baremetal du cluster Kubernetes et je n'ai pas accès à l'équilibreur de charge gce ou à d'autres LB de fournisseurs.

Merci

8
vin84

Merci d'avoir pointé dans la bonne direction.

Les étapes essentielles étaient globalement:

  1. Créez une application et sa définition de service.

  2. Créez un espace de noms pour l'entrée.

  3. Créez un déploiement et un service backend par défaut pour rediriger toutes les demandes non définies dans les règles Ingress. Créez-les dans l'espace d'entrée
  4. Créez le déploiement du contrôleur d'entrée nginx.
  5. Créez des règles RBAC.
  6. Enfin, créez la règle d'entrée pour les applications avec les chemins et les ports.

Trouvé un guide très utile qui expliquait les choses en détail: https://akomljen.com/kubernetes-nginx-ingress-controller/

5
vin84

Tu y es presque! Votre prochaine étape sera de configurer un contrôleur d'entrée . Il existe un plugin de contrôleur NGINX Ingress que vous pouvez vérifier ici .

Modifier: voici un exemple de configuration: https://github.com/nginxinc/kubernetes-ingress/tree/master/examples/complete-example

5
jonfriesen