Привет, я пытаюсь получить реальный IP-адрес клиента, чтобы ограничить доступ к модулю в среде Kubernetes

Привет, я пытаюсь получить реальный IP-адрес клиента, чтобы ограничить доступ к модулю. Но, к сожалению, я всегда получаю 10.244.1.1 на каждом модуле. Я пробовал с https://kubernetes.io/docs/tutorials/services/source-ip/, но, к сожалению, не повезло. Пожалуйста помоги.

Я использую версию kubernetes 1.8.2 на голых металлических серверах Cent OS 7 для кластера Kubernetes. У меня нет выбора, но использовать голый металл. В качестве контроллера входящего трафика я использую kong. Мой входящий контроллер kong всегда получает 10.244.1.1. В конге есть функция под названием ограничение IP. Я пытаюсь этим воспользоваться.

Другие предложили использовать другой конг-хоп в качестве балансировщика нагрузки, что не является хорошим решением для моей ситуации.

2 ответа

Вам необходимо указать политику трафика на сервисе kong-proxy

spec:
...
  selector:
    app: ingress-kong
  type: LoadBalancer
  externalTrafficPolicy: Local

И вам может потребоваться добавить одну или обе следующие переменные среды в контейнер kong

- name: KONG_TRUSTED_IPS
  value: 0.0.0.0/0,::/0
- name: KONG_REAL_IP_RECURSIVE
  value: "on"

У меня это работает с экземпляром k3s.

Подробная информация о проблемах с исходным IP-адресом содержится в разделе "Рекомендации по использованию голого железа для k8s" в документации по k8s и "Сохранение IP-адресов клиентов" в документации kong. Они содержат слишком много деталей, чтобы их можно было кратко описать.

Проверьте свойства для определения "реального IP" ( https://docs.konghq.com/2.1.x/configuration/):

  • доверенные_ипсы
  • real_ip_header
  • real_ip_recursive

Это также может быть интересно: https://github.com/Kong/kong/pull/5861

Другие вопросы по тегам