Доступ к Bookinfo

В этом руководстве описывается, как получить доступ к Bookinfo через Istio Ingress Gateway и проверить его работу. В данном руководстве Ingress Gateway использует классический API Istio VirtualService.

Перед началом убедитесь, что:

Для упрощения настройки в этом руководстве используется метод NodePort для доступа к Ingress Gateway, что исключает необходимость в LoadBalancer. Доступ к приложению Bookinfo будет осуществляться через IP-адрес узла и порт узла.

Содержание

Шаг 1: Развертывание Ingress Gateway

  1. Создание проектов и пространств имён
    Перейдите на страницу Управление проектами, нажмите Создать проект, задайте имя platform и выберите кластер, в котором развернуто приложение Bookinfo.
    В деталях проекта в левом навигационном меню выберите Namespaces и создайте пространство имён с именем platform-gateway.

  2. Развертывание Ingress Gateway
    Перейдите в Управление платформой, затем в Service Mesh > Gateways и нажмите Deploy Gateway. Заполните параметры шлюза:

    • Основная информация: имя public-ingressgw, тип шлюза Ingress Gateway, выбор типа шлюза — Shared, остальные параметры оставьте по умолчанию.

    • Конфигурация развертывания: выберите namespace platform-gateway, метку узла ingress:true, остальные параметры оставьте по умолчанию.

    • Сетевая конфигурация: выберите NodePort, установите HTTP порт хоста 30665, HTTPS порт хоста 30666.

    • Проверка доступности портов: выполните следующую команду, чтобы убедиться, что порты не заняты:

      kubectl get svc --all-namespaces -o custom-columns='NAMESPACE:.metadata.namespace,NAME:.metadata.name,TYPE:.spec.type,NODEPORT:.spec.ports[*].nodePort' | grep NodePort

Шаг 2: Создание конфигурации Gateway

  1. Перейдите на страницу деталей шлюза, переключитесь на вкладку Gateway configuration и нажмите Create Gateway Configuration.
  2. Задайте имя public-ingressgw-gateway, выберите порт HTTP 80, установите Host в * и нажмите создать.

Шаг 3: Создание Virtual Services

  1. Перейдите на вкладку Virtual Services, нажмите Create Routing configuration.
  2. Задайте имя public-ingressgw-vs, выберите namespace platform-gateway, в маршруте назначения выберите Namespace: demo-dev, Service: productpage, Port: 9080.

Тестирование входящего трафика

  1. Получите GATEWAY_IP_PORT:

    • Сначала найдите IP-адрес узла, на котором расположен Ingress Gateway, выполнив команду:

      kubectl get nodes -o wide
    • Используйте IP-адрес узла вместе с портом 30665, чтобы сформировать GATEWAY_IP_PORT, например, 192.168.130.0:30665.

  2. Выполните следующую команду, чтобы проверить корректность работы Ingress Gateway:

    export GATEWAY_IP_PORT=<node_IP>:30665
    curl -k -s http://$GATEWAY_IP_PORT/productpage | grep -o "<title>.*</title>"
  3. Ожидаемый вывод должен быть похож на:

    <title>Simple Bookstore App</title>