У меня есть кластер GKE, работающий с nginx-ingress
контроллер из сообщества Kubernetes (через Helm). Я установил его с региональным IP-адресом, который я зарезервировал заранее, вот так:
helm install stable/nginx-ingress \
--set controller.service.loadBalancerIP=my.reserved.regional.ip
Затем я добавил пару ресурсов Ingress с kubernetes.io/ingress.class: "nginx"
аннотации и ничего больше, и указал им на безголовый сервис в кластере ( type: ClusterIP
).
Это работает нормально, и я могу получить доступ к входам на основе виртуальных хостов через IP-адрес балансировщика нагрузки.
Однако мне интересно, почему ресурсам Ingress также назначается внешний IP:
==> v1beta1/Ingress
NAME HOSTS ADDRESS PORTS AGE
ingress-admin admin.my-domain.com 35.195.255.71 80 24m
ingress-api api.my-domain.com 35.195.255.71 80 24m
Это нормально? IP-адрес отвечает на пинг, но не обслуживает HTTP (как это делает моя служба). Что мне нужно делать с ресурсами Ingress, чтобы этого избежать?
Добро пожаловать @Achton на StackExchange.
Чтобы сохранить тот же зарезервированный статический внешний IP-адрес в ресурсах Ingress, который назначен сервису LB контроллера Ingress, вы должны установить еще один параметр конфигурации при установке контроллера nginx-ingress с диаграммой управления, это:
--set controller.publishService.enabled=true
как описано в документации NGINX Ingress Controller Вот