kubernetes NodePort против ClusterIP с Nginx -Ingress - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть свой собственный микросервис, и до сих пор я выставляю сервис с type: NodePort вместе с nginx-ingress рулевой диаграммой на свой собственный Publi c IP с https; Я заметил, что при запуске linter на моей диаграмме управления микросервисами это небезопасно (для использования NodePort), и я должен использовать ClusterIP - кто-нибудь может объяснить, почему?

Ответы [ 2 ]

2 голосов
/ 28 апреля 2020

Если ваш кластер настроен так, что рабочие узлы доступны напрямую из-за пределов кластера, тогда все, что вы указали в качестве службы типа NodePort, будет также доступно. В частности, это означает, что http://any-node.k8s.example.com:32345/ может достигнуть вашей серверной службы, минуя все элементы управления, которые вы установили на входном уровне. Как правило, вы этого не хотите.

Разумный подход (и, вероятно, то, что поощряет ваш линтер) состоит в том, чтобы использовать службы типа NodePort или LoadBalancer только для входной службы. Все остальное должно регистрироваться в этой входной службе (используя собственный объект входа Kubernetes, или Istio VirtualService, или ...), но иметь службы типа ClusterIP для внутрикластерного доступа.

     +------------+  NP  +---------+ CIP  +-------------+
---> | (any node) | ---> | ingress | ---> | application |
     +------------+      +---------+      +-------------+
                 |__________________________^
      a NodePort application service would allow this path
                   (bypassing the ingress)
1 голос
/ 28 апреля 2020

С точки зрения безопасности входной контроллер (например, nginx) должен быть открыт только за пределами кластера. Это можно сделать либо через NodePort или LoadBalancer, либо даже запустив входной контроллер в сети хоста некоторых выделенных узлов kubernetes с публичными IP-адресами c. Поэтому любой трафик с севера на юг c, поступающий в кластер извне кластера, должен будет проходить через входной контроллер. Любые фронтальные службы (например, приложение nodejs frontend) должны быть доступны вне кластера через вход ресурс только для того, чтобы убедиться, что любая политика WAF или TLS может быть реализована на входном контроллере. Для трафика восток-запад c между фронтальной службой и внутренними микросервисами в кластерном кластере рекомендуется использовать IP-сервис.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...