Контроллер входа в Kubernetes без Nodeport - PullRequest
6 голосов
/ 25 февраля 2020

Мы работаем с сервером API на GKE (движок Google Kubernetes). Мы обрабатываем нашу авторизацию, используя Google Cloud Endpoints и ключи API. Мы помещаем в белый список определенные IP-адреса в каждом ключе API. Чтобы сделать это, нам пришлось переключиться с балансировщика нагрузки на входной контроллер для демонстрации нашего сервера API. Белый список IP-адресов не работает со службой loadbalancer. Теперь у нас есть входная настройка, подобная этой:

apiVersion: v1
kind: Service
metadata:
  name: echo-app-nodeport
spec:
  ports:
  - port: 80
    targetPort: 8080
    protocol: TCP
    name: http
  selector:
    app: esp-echo
  type: NodePort
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: echo-app-ingress
  annotations:
    kubernetes.io/ingress.global-static-ip-name: "RESERVED_IP"
    kubernetes.io/ingress.allow-http: "false"
spec:
  tls:
  - secretName: SECRET_NAME
  backend:
    serviceName: echo-app-nodeport
    servicePort: 80

Эта настройка работает нормально, и работает белый список IP-адресов. Теперь моя забота связана, прежде всего, с NodePort, который необходим для работы входного контроллера. Я прочитал несколько источников [1] [2] , которые настоятельно рекомендуют не использовать NodePorts для показа вашего приложения. Тем не менее, большинство примеров, которые я нахожу, используют эту комбинацию NodePort + Ingress. Можем ли мы безопасно использовать эту настройку или мы должны перейти на другой входной контроллер (NGINX, Traefik, ..)?

Ответы [ 2 ]

1 голос
/ 25 февраля 2020

Вы можете иметь только службу типа ClusterIP для всех ваших модулей рабочей нагрузки и иметь одну службу LoadBalancer для представления самого входного контроллера вне кластера. Таким образом, вы можете полностью избежать службы NodePort.

0 голосов
/ 25 февраля 2020

Я подозреваю, что вход GKE фактически находится за пределами вашего кластера GKE и перенаправляет трафик c в ваш кластер через Nodeport. Вероятно, поэтому настройка входа и служб GKE, предоставляемых через ClusterIP, не работает.

Если вы развернете NGINX Ingress Controller в кластере GKE, он создаст входной шлюз из вашего кластера (вместо пересылки в ваш кластер) и возможность обмениваться данными со службами, предоставляемыми через ClusterIP.

...