Сетевая политика Kubernetes для службы внешних имен

Мы изучаем настройку сетевых политик для нашего кластера Kubernetes. Однако по крайней мере в одном из наших пространств имен у нас есть служба ExternalName (справочник kubernetes - типы услуг) для использования AWS RDS. Мы хотели бы ограничить трафик к этой службе ExternalName, чтобы он поступал из определенного набора модулей или, если это невозможно, из определенного пространства имен. Ни политика изоляции пространства имен, ни Ресурс NetworkPolicy, похоже, применяется к службам ExternalName. После поиска в документации по Weave и Project Calico, похоже, нет упоминание о такой функциональности.

Можно ли ограничить сетевой трафик для службы ExternalName из определенного набора модулей или из определенного пространства имен?


person iBlocksShaun    schedule 17.02.2017    source источник


Ответы (1)


Вы действительно не можете этого сделать. Службы ExternalName - это конструкция DNS. Клиент выполняет поиск службы DNS, и kube-dns возвращает запись CNAME для, в вашем случае, экземпляра RDS. Затем клиент подключается к RDS напрямую.

Есть два возможных способа решить эту проблему:

  1. Заблокируйте только DNS-запросы (модули могут подключаться к БД, если они знают IP или полное имя хоста RDS):

    • change namespace isolation to support ExternalName services
    • заставить kube-dns определить клиентский модуль за каждым полученным запросом
    • сделать kube-dns осведомленным о настройках изоляции пространства имен и применить их, чтобы он возвращал записи CNAME только авторизованным модулям
  2. Вернуть запросы DNS, но заблокировать соединения RDS:

    • extend NetworkPolicy somehow to also control egress traffic
    • черный список / белый список IP-адресов RDS оптом (проще сказать, чем сделать, поскольку они динамические) или заставить сетевые контроллеры отслеживать результаты поиска DNS и соответственно блокировать / разрешать соединения.

В любом случае вам придется подать ряд запросов на функции в Kubernetes и нижестоящих.

Источник: я написал код поддержки EN.

person Rudi C    schedule 19.02.2017
comment
Спасибо за ответ. Я также разместил этот вопрос в канале sig-network в сообществе K8S Slack. Ответили сотрудник Calico и сотрудник Weave. Project Calico поддерживает политики выхода, а Weave имеет проблема для поддержки Предложение K8S для выходных политик. Похоже, что дискуссия по поводу выхода немного застопорилась. - person iBlocksShaun; 21.02.2017