как обеспечить входящий доступ из publi c inte rnet к приложению, размещенному в частном кластере Kubernetes Azure - PullRequest
1 голос
/ 28 мая 2020

Я развернул приложение в кластере Azure K8S, используя NGINX в качестве шлюза, с IP-адресом publi c stati c на основе AKS & PUBLI C -IP и на AKS & NGINX.

Теперь мне нужно развернуть приложение в частном кластере Azure, ie, работающем в частном vnet (см. СОЗДАТЬ ЧАСТНЫЙ АКС ); попытка назначить publi c stati c IP для NGINX не работает, чего можно ожидать, поскольку балансировщик нагрузки ожидает частный IP, а не publi c IP.

Как Могу ли я предоставить входящий доступ к моему приложению, размещенному в частном кластере, используя NGINX и publi c stati c IP?

Ответы [ 3 ]

0 голосов
/ 29 мая 2020

На основании вашего описания я понимаю, что вы хотите иметь входящий трафик c через свой NGINX контроллер входящего трафика, который имеет службу балансировки нагрузки со статическим c IP. Если ваше развертывание настроено правильно, служба Loadbalancer должна быть назначена вашему контроллеру входа NGINX с IP-адресом publi c. Так как я не знаю ваших пространств имен, именование развертываний и т.д. Теперь, поскольку NGINX является вашим контроллером входа, это означает, что у вас есть балансировщик нагрузки уровня 7 в качестве входа, поэтому вам нужно создать входной маршрут к вашему приложению, работающему в AKS. Это задокументировано здесь из Azure NGINX ingress , но также здесь Ingress K8s

0 голосов
/ 02 июня 2020

Привет, у вас есть два способа достичь этого двумя способами ... В зависимости от ваших потребностей (и Azure затрат ...):

1-Используйте Azure Шлюз приложений . Для себя использую Terraform . И здесь вы можете увидеть официальную документацию относительно внутреннего IP-адреса .

Теперь вы можете использовать его в качестве нового Ingress (и избавиться от NGINX), например:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: guestbook
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
spec:
  rules:
  - http:
      paths:
      - backend:
          serviceName: frontend
          servicePort: 80

Или вы можете использовать NGINX внутри в качестве входа, как описано в варианте 2.

2- Сначала у вас должен быть IP Publi c с привязанным к нему балансировщиком нагрузки. из этого LB должен соответствовать вашим потребностям.

Но вот трюк ... Не создавайте NGINX с этим publi c IP, но с внутренним IP и внутренним балансировщиком нагрузки, вы можете посмотрите, как это сделать, по следующему URL-адресу:

https://docs.microsoft.com/en-us/azure/aks/ingress-internal-ip

И важная вещь, которую вы должны сделать, это nginx ovveride в параметрах руля:

controller:
  service:
    loadBalancerIP: 10.240.0.42
    annotations:
      service.beta.kubernetes.io/azure-load-balancer-internal: "true"

Конечно, внутренний VNET должен быть создан, а IP-адрес балансировщика нагрузки должен быть правильным.

И последний трюк, теперь у вас есть NGINX прослушивание за частным IP для проверки вашего трафика c с Publi c IP перенаправлен cted на этот внутренний VNET ... Конечно, это зависит от того, как у вас настроена инфраструктура за этим LB, который содержит publi c IP.

0 голосов
/ 29 мая 2020

Как указано в комментарии выше, вы можете сделать то же самое через шлюз приложений в Azure. Но если вы собираетесь использовать только AKS, вы можете просто использовать шлюз приложений в качестве входного контроллера, который уже создан с частным кластером.

Следуйте этим инструкциям, чтобы получить то же самое https://microsoft.github.io/AzureTipsAndTricks/blog/tip256.html

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