Как вы упомянули, istio документация говорит, что
Если значение EXTERNAL-IP равно (или постоянно), ваша среда не предоставляет внешний балансировщик нагрузки для входящего шлюз. В этом случае вы можете получить доступ к шлюзу, используя порт узла службы.
Если мы посмотрим на kubernetes документацию о NodePort
Если вы установите поле типа в NodePort, плоскость управления Kubernetes выделяет порт из диапазона, указанного - -service-node-port-range флаг (по умолчанию: 30000-32767). Каждый узел передает этот порт (один и тот же номер порта на каждом узле) в вашу службу. Ваша служба сообщает о выделенном порте в своем поле .spe c .ports [*]. NodePort.
Итак, если ваш входной шлюз - NodePort, тогда вам нужно использовать http://portal.website.com : 31380 .
Если вы хотите использовать http://portal.website.com, нужно будет изменить его на LoadBalancer .
As @sachin упомянуто, если вы используете облако, например aws, вы можете настроить Istio с AWS Load Balancer с соответствующими аннотациями.
Для облачных провайдеров, которые поддерживают внешние балансировщики нагрузки, установка поля типа на LoadBalancer обеспечивает балансировщик нагрузки для вашего Сервиса. Фактическое создание балансировщика нагрузки происходит асинхронно, и информация о подготовленном балансировщике публикуется в .status.loadBalancer Службы
Я вижу, вы используете aws, поэтому вы можете узнать больше об этом в ниже ссылки:
Если это локально, то вы можете взглянуть на metalLB
MetalLB - это реализация балансировщика нагрузки для кластеров Kubernetes без операционной системы, использующая стандартные протоколы маршрутизации.
Kubernetes не предлагает реализацию балансировщиков сетевой нагрузки (службы типа LoadBalancer) для кластеров на «голом железе». Реализации Network LB, которые поставляет Kubernetes, представляют собой связующий код, который обращается к различным платформам IaaS (GCP, AWS, Azure…). Если вы не работаете на поддерживаемой платформе IaaS (GCP, AWS, Azure…), LoadBalancers останутся в состоянии ожидания на неопределенный срок при создании.
Кластер на чистом металле операторы остаются с двумя меньшими инструментами для переноса пользовательского трафика c в свои кластеры: сервисы «NodePort» и «externalIPs». Оба эти варианта имеют существенные недостатки для производственного использования, что делает кластеры без операционной системы второстепенными в экосистеме Kubernetes.
MetalLB стремится исправить этот дисбаланс, предлагая реализацию Network LB, которая объединяет со стандартным сетевым оборудованием, так что внешние сервисы на голых металлических кластерах также «просто работают» в максимально возможной степени.
Подробнее об этом можно прочитать по ссылке ниже: