nginx IP-адрес прямого источника - PullRequest
1 голос
/ 01 апреля 2020

Я установил вход для приложения, но хочу добавить в белый список мой IP-адрес. Итак, я создал этот Ingress:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/whitelist-source-range: ${MY_IP}/32
  name: ${INGRESS_NAME}
spec:
  rules:
  - host: ${DNS_NAME}
    http:
      paths:
      - backend:
          serviceName: ${SVC_NAME}
          servicePort: ${SVC_PORT}
  tls:
  - hosts:
    - ${DNS_NAME}
    secretName: tls-secret

Но когда я пытаюсь получить к нему доступ, я получаю 403 запрещенных и в журнале nginx я вижу IP-адрес клиента, но это с одного из узлов кластера, а не мой домашний ip.

Я также создал карту конфигурации с этой конфигурацией:

data:
  use-forwarded-headers: "true"

В nginx .conf в контейнере я вижу, что он был правильно передан / настроен, но я все еще получаю 403 с запрещенным, но все еще только клиентский ip с узла кластера.

Я работаю в кластере AKS, а входной контроллер nginx находится за балансировщиком нагрузки Azure. Входной контроллер nginx sv c отображается как тип loadbalancer и фиксируется в порте узлов, открытом sv c.

Нужно ли что-то настраивать в Nginx?

Ответы [ 2 ]

0 голосов
/ 10 апреля 2020

Если вы установили nginx -вход с диаграммой Helm , вы можете просто настроить файл values.yaml на controller.service.externalTrafficPolicy: Local, который, я считаю, будет применяться ко всем вашим сервисам. В противном случае вы можете настроить указанные c Службы с помощью service.spec.externalTrafficPolicy: Local для достижения того же эффекта для этих указанных c Служб.

Вот несколько ресурсов, которые помогут вам лучше понять:

0 голосов
/ 01 апреля 2020

Похоже, у вас есть Nginx Ingress Controller за службой NodePort (или LoadBalancer) или, скорее, за kube-прокси. Как правило, чтобы ваш контроллер мог видеть необработанный соединительный IP-адрес, вам потребуется развернуть его с помощью порта hostNetwork, чтобы он напрямую прослушивал входящий трафик c.

...