2016-06-15 1 views
0

Nous sommes en cours d'exécution beaucoup d'applications dans Kubernetes et gérer la terminaison TLS dans un pod avec HAProxy et un certificat généré avec LetsEncrypt.Resolve nom de domaine au service Kubernetes interne

Cela fonctionne vraiment bien pour le trafic en provenance de l'extérieur du cluster Kubernetes parce que les requêtes utilisent le nom de domaine tel que spécifié dans le certificat.

Toutefois, pour la communication interne utilisant le nom de service - avec une URL comme https: /// - la partie hôte de l'URL ne correspond plus à ce qui est défini dans le certificat, ce qui entraîne une défaillance.

Est-il possible de laisser le système dns Kubernetes résoudre le nom de domaine complet à un service spécifique, de sorte qu'il ne soit pas acheminé en dehors du cluster?

Répondre

0

je peux penser à deux options que vous pourriez poursuivre:

  1. Vous pourriez avoir les demandes qui transitent simplement le cluster Écrasé http au lieu de https si vous faites confiance à la sécurité de votre réseau de cluster.

  2. Vous pouvez demander à votre instance HAProxy de délivrer un certificat différent aux demandes internes en utilisant SNI. Vous auriez besoin d'un moyen de générer et de distribuer les certificats internes, mais cela vous permettrait de présenter au client un certificat correspondant au nom du service Kubernetes.

  3. Continuer à résoudre le FQDN sans se soucier de demandes de routage et ensuite dans le cluster. Ceci n'est en fait pas si différent de la fonctionnalité de découverte/fédération de service inter-cluster à venir dans la fédération de cluster Kubernetes.

Il n'existe pas vraiment de moyen d'injecter/de remplacer la résolution de nom de domaine complet externe pour renvoyer l'adresse IP de service interne.