0
votes

Kubettes: Comment exposer plusieurs microservices?

J'ai une poignée de microservices dockerisés, chacun écoute des demandes HTTP sur un certain port et j'ai ces déploiements formalisés comme des fichiers KubeNettes YAML

Cependant, je ne peux pas comprendre une stratégie de travail pour exposer mes déploiements sur les interwebs (en termes de services Kubettes)

Chaque déploiement a plusieurs réplosses, et donc je suppose que chaque déploiement doit avoir un service d'équilibreur de charge correspondant pour l'exposer à l'extérieur

Maintenant, je ne peux pas comprendre une stratégie pour exposer ces microservices à Internet ... Voici ce que je pense:

  1. Tout le cluster est exposé sur un nom de domaine et les services sont des sous-domaines

    • Dites que le cluster est disponible à k8s.mydomain.com
    • Chaque service de pilotage (qui expose un microservice correspondant) doit être accessible par un sous-domaine.
      • auth-server.k8s.mydomain.com
      • profil-server.k8s.mydomain.com
      • question-board.k8s.mydomaine.com
      • Les demandes de chaque sous-domaine seraient-elles équilibrées sur les répliques du déploiement correspondant
      • Alors, comment puis-je réellement atteindre cette configuration? Est-ce désirable?
        • Puis-je exposer chaque équilibreur de charge en tant que sous-domaine? Est-ce fait automatiquement?
        • ou dois-je avoir besoin d'un contrôleur d'entrée?
        • suis-je aboyer le mauvais arbre?
        • Je cherche des conseils généraux sur la manière d'exposer une seule application qui est une mosaïque de microservices
        • Chaque service est exposé sur la même adresse IP / domaine, mais chacun obtient son propre port

          • Peut-être que l'ensemble du cluster est accessible à k8s.mydomain.com à nouveau
          • Puis-je mapper chaque port sur un excellent équilibreur de charge?
            • k8s.mydomain.com:8000 mapper vers auth-serveur-workbalancer
            • k8s.mydomain.com:8001 Maps vers Profil-Server-Lockbalancer
            • Est-ce possible? Il semble moins robuste et moins souhaitable que la stratégie 1 ci-dessus
            • Chaque service est exposé sur sa propre adresse IP / domaine?

              • Peut-être que chaque service spécifie une adresse IP statique et mon domaine a un enregistrement pointant chaque sous-domaine de chacune de ces IP de manière manuelle?
              • Comment puis-je savoir quelle adresse IP statique à utiliser? en production? dans le dev?

                Peut-être que je conceptualise ce faux? Une carte de grappe entier peut-elle cluster une carte IP / domaine?

                Quel est le moyen le plus simple d'exposer un tas de microservies à Kubettes? D'autre part, quel est le moyen le plus robuste / idéal d'exposer des microservices en production? Ai-je besoin d'une stratégie différente pour le développement local à Minikube? (J'allais juste modifier / etc / hosts beaucoup)

                Merci pour tout conseil, acclamations


0 commentaires

3 Réponses :


1
votes

La première méthode est typiquement le format que tout le monde suit, c'est-à-dire que chaque microservice obtient son propre sous-domaine. Vous pouvez obtenir la même chose à l'aide d'une entrée Kubettes (par exemple Nginx Ingressing https://kubernet.github.io/ ingress-nginx / )

Ils n'ont pas besoin de ne pas être dans le même domaine également, c'est-à-dire que vous pouvez avoir les deux *. Exemple.com et *. Exemple2.com

La deuxième méthode ne permet pas d'accabler, car vous disposeriez d'un nombre limité de ports disponibles et d'exécuter sur des ports non standard fournit avec ses propres problèmes.


0 commentaires

1
votes

Utilisez une entrée:

https://kubernet.io/docs/ Concepts / services-Networking / Ingress / # Types d'Ingresses

Avec une entrée, vous pouvez affecter des sous-domaines à différents services, ou vous pouvez servir tous les services sous différentes racines de contexte avec une réécriture de l'URL.

Je ne suggère pas d'exposer des services en utilisant différents ports. Les ports non standard ont d'autres problèmes.


0 commentaires

1
votes

Je pense que la première option est de loin le meilleur.

Votre Inlauche pourrait ressembler à ceci: xxx

Vous pouvez lire plus À ce sujet sur KubeNettes Docs concernant INGRESS et Hébergement virtuel basé sur le nom .

Vous pouvez aussi Utilisez de nombreux contrôleurs d'entrée Selon l'endroit où vous finirez par définir votre cluster . Vous avez mentionné que vous allez tester cela sur Minikube, donc je pense INGRESS NGINX sera un bon choix ici.

Si vous envisagez de gérer votre trafic, vous pouvez envisager ISTIO .

Voici un bon guide HTTP (S) Equilibrage de la charge avec entrée et une autre une fois Configuration des noms de domaine avec adresses IP statiques .


1 commentaires

Merci beaucoup, à la suite de vos conseils, j'ai réussi à créer cette entrée à la fois localement à Minikube (a dû permettre à un addon d'entrée qui navère avec Minikube), puis sur Azure (a dû utiliser la barre pour installer Nginx-Ingress)) -- à votre santé!