Візуалізація вашої Mesh-мережі

Це завдання показує, як візуалізувати різні аспекти вашої мережі Istio.

У рамках цього завдання ви встановите надбудову Kiali та скористаєтеся графічним інтерфейсом, що працює в оглядачі, щоб переглядати схеми сервісів мережі та обʼєкти конфігурації Istio.

У цьому завданні використовується демонстраційний застосунок Bookinfo як приклад. Це завдання передбачає, що Bookinfo встановлено в просторі імен bookinfo.

Перед початком

Слідуйте документації встановлення Kiali, щоб розгорнути Kiali у вашому кластері.

Генерація схеми

  1. Щоб перевірити, чи працює сервіс у вашому кластері, виконайте наступну команду:

    $ kubectl -n istio-system get svc kiali
  2. Щоб визначити URL-адресу Bookinfo, дотримуйтесь інструкцій, щоб визначити Bookinfo ingress GATEWAY_URL.

  3. Щоб надсилати трафік у мережу, у вас є три варіанти

    • Відвідайте http://$GATEWAY_URL/productpage у вашому вебоглядачі

    • Використовуйте наступну команду кілька разів:

      $ curl http://$GATEWAY_URL/productpage
    • Якщо ви встановили команду watch у вашій системі, надсилайте запити безперервно за допомогою:

      $ watch -n 1 curl -o /dev/null -s -w %{http_code} $GATEWAY_URL/productpage
  4. Щоб відкрити інтерфейс Kiali, виконайте наступну команду у вашому середовищі Kubernetes:

    $ istioctl dashboard kiali
  5. Перегляньте огляд вашої мережі на сторінці Огляд, яка зʼявляється одразу після входу. Сторінка Огляд показує всі простори імен, що містять сервіси у вашій мережі. Ось скріншот подібної сторінки:

    Приклад огляду
    Приклад огляду
  6. Щоб переглянути графік простору імен, виберіть опцію Graph у меню з трьох крапок на картці огляду Bookinfo. Меню з трьох крапок знаходиться у верхньому правому куті картки та виглядає як 3 вертикальні крапки. Натисніть його, щоб побачити доступні опції. Сторінка виглядає приблизно так:

    Приклад графіка
    Приклад графіка
  7. Схема представляє трафік, що проходить через сервісну мережу протягом певного часу. Він генерується за допомогою телеметрії Istio.

  8. Щоб переглянути підсумок метрик, виберіть будь-який вузол або ребро на схемі, щоб переглянути його деталі метрик у панелі підсумкових деталей справа.

  9. Щоб переглянути вашу сервісну мережу, використовуючи різні типи схем, виберіть тип схеми у меню Тип схеми. Є кілька типів схем на вибір: App, Versioned App, Workload, Service.

    • Тип схеми App обʼєднує всі версії застосунку в один вузол схеми. Наступний приклад показує один вузол reviews, що представляє три версії застосунку reviews. Зверніть увагу, що опція показу Show Service Nodes вимкнена.

      Приклад схеми застосунку
      Приклад схеми застосунку
    • Тип схеми Versioned App показує вузол для кожної версії застосунку, але всі версії конкретного застосунку згруповані разом. Наступний приклад показує групу вузлів reviews, яка містить три вузли, що представляють три версії застосунку reviews.

      Приклад схеми версії застосунку
      Приклад схеми версії застосунку
    • Тип схеми Workload показує вузол для кожного навантаження у вашій сервісній мережі. Цей тип схеми не вимагає використання міток app і version, тому, якщо ви вирішите не використовувати ці мітки на ваших компонентах, це може бути вашим типом схеми.

      Приклад схеми навантаження
      Приклад схеми навантаження
    • Тип схеми Service показує узагальнення трафіку сервісів у вашій мережі.

      Приклад схеми сервісів
      Приклад схеми сервісів

Огляд конфігурації Istio

  1. Опції лівого меню ведуть до списків для Applications, Workloads, Services та Istio Config.Ось скріншот інформації про Services для простору імен Bookinfo:

    Приклад деталей
    Приклад деталей

Зміщення трафіку

Ви можете використовувати майстра зміщення трафіку Kiali для визначення конкретного відсотка запитів, які потрібно направити на два або більше навантажень.

  1. Перегляньте схему Versioned app graph bookinfo.

    • Переконайтеся, що ви ввімкнули опцію Traffic Distribution для показу Edge Label, щоб бачити відсоток трафіку, спрямованого на кожне навантаження.

    • Переконайтеся, що ви ввімкнули опцію показу Service Nodes, щоб переглядати вузли сервісів на схемі.

    Опції схеми Bookinfo
    Опції схеми Bookinfo
  2. Зосередьтеся на сервісі ratings у схемі bookinfo, натиснувши на вузол сервісу ratings (трикутник). Зверніть увагу, що трафік сервісу ratings рівномірно розподіляється між двома навантаженнями ratings v1 і v2 (50% запитів направляються на кожне навантаження).

    Схема, що показує відсоток трафіку
    Схема, що показує відсоток трафіку
  3. Натисніть на посилання ratings, яке знаходиться в боковій панелі, щоб перейти до перегляду деталей для сервісу ratings. Це також можна зробити, виконавши другий клік на вузол сервісу ratings і вибравши Details у контекстному меню.

  4. У меню Actions виберіть Traffic Shifting, щоб отримати доступ до майстра зміщення трафіку.

    Меню дій сервісу
    Меню дій сервісу
  5. Перетягуйте повзунки, щоб вказати відсоток трафіку, який потрібно направити на кожне навантаження. Для ratings-v1 встановіть 10%; для ratings-v2 — 90%.

    Майстер зваженої маршрутизації
    Майстер зваженої маршрутизації
  6. Натисніть кнопку Preview, щоб переглянути YAML, який буде згенерований майстром.

    Попередній перегляд майстра маршрутизації
    Попередній перегляд майстра маршрутизації
  7. Натисніть кнопку Create і підтвердіть, щоб застосувати нові налаштування трафіку.

  8. Натисніть Graph у лівій навігаційній панелі, щоб повернутися до схеми bookinfo. Зверніть увагу, що вузол сервісу ratings тепер має іконку virtual service.

  9. Надішліть запити до bookinfo. Наприклад, щоб надіслати один запит на секунду, ви можете виконати цю команду, якщо у вас встановлений watch:

    $ watch -n 1 curl -o /dev/null -s -w %{http_code} $GATEWAY_URL/productpage
  10. Через кілька хвилин ви помітите, що відсоток трафіку показує новий маршрут трафіку, підтверджуючи, що ваш новий маршрут трафіку успішно направляє 90% всіх запитів трафіку на ratings-v2.

    90% трафіку Ratings направлено на ratings-v2
    90% трафіку Ratings направлено на ratings-v2

Перевірка конфігурації Istio

Kiali може перевірити ваші ресурси Istio, щоб забезпечити їх відповідність належним умовам і семантиці. Будь-які проблеми, виявлені в конфігурації ваших ресурсів Istio, можуть бути позначені як помилки або попередження залежно від серйозності неправильного налаштування. Дивіться сторінку перевірок Kiali для отримання списку всіх перевірок, які виконує Kiali.

Примусово введіть неправильну конфігурацію імені порту сервісу, щоб побачити, як Kiali повідомляє про помилку перевірки.

  1. Змініть імʼя порту сервісу details з http на foo:

    $ kubectl patch service details -n bookinfo --type json -p '[{"op":"replace","path":"/spec/ports/0/name", "value":"foo"}]'
  2. Перейдіть до списку Services, натиснувши Services у лівій навігаційній панелі.

  3. Виберіть bookinfo з меню Namespace, якщо він ще не вибраний.

  4. Зверніть увагу на іконку помилки, що показується у стовпці Configuration рядка details.

    Список сервісів, що показує неправильну конфігурацію
    Список сервісів, що показує неправильну конфігурацію
  5. Натисніть на посилання details у стовпці Name, щоб перейти до перегляду деталей сервісу details.

  6. Наведіть курсор на іконку помилки, щоб показати підказку, що описує помилку.

    Деталі сервісу, що описують неправильну конфігурацію
    Деталі сервісу, що описують неправильну конфігурацію
  7. Змініть імʼя порту назад на http, щоб виправити конфігурацію і повернути bookinfo до нормального стану.

    $ kubectl patch service details -n bookinfo --type json -p '[{"op":"replace","path":"/spec/ports/0/name", "value":"http"}]'
    Деталі сервісу, що показують правильну конфігурацію
    Деталі сервісу, що показують правильну конфігурацію

Перегляд і редагування YAML конфігурації Istio

Kiali надає редактор YAML для перегляду та редагування ресурсів конфігурації Istio. Редактор YAML також надає повідомлення про перевірку, коли виявляє неправильні конфігурації.

  1. Введіть помилку в VirtualService bookinfo:

    $ kubectl patch vs bookinfo -n bookinfo --type json -p '[{"op":"replace","path":"/spec/gateways/0", "value":"bookinfo-gateway-invalid"}]'
  2. Натисніть Istio Config на лівій навігаційній панелі, щоб перейти до списку конфігурацій Istio.

  3. Виберіть bookinfo з меню Namespace, якщо він ще не вибраний.

  4. Зверніть увагу на іконку помилки, яка сповіщає вас про проблему з конфігурацією.

    Список конфігурацій Istio з некоректною конфігурацією
    Список конфігурацій Istio з некоректною конфігурацією
  5. Натисніть на іконку помилки у стовпці Configuration рядка bookinfo, щоб перейти до перегляду віртуального сервісу bookinfo.

  6. Вкладка YAML попередньо вибрана. Зверніть увагу на кольорові підсвічування та іконки на рядках, які мають повʼязані повідомлення про перевірку.

    Редактор YAML, що показує повідомлення про перевірку
    Редактор YAML, що показує повідомлення про перевірку
  7. Наведіть курсор на червону іконку, щоб переглянути підказку, яка інформує вас про перевірку, що викликала помилку. Для отримання додаткових відомостей про причину помилки та способи її виправлення, перегляньте повідомлення про помилку перевірки на сторінці перевірок Kiali.

    Редактор YAML, що показує підказку помилки
    Редактор YAML, що показує підказку помилки
  8. Відновіть віртуальний сервіс bookinfo до його первісного стану.

    $ kubectl patch vs bookinfo -n bookinfo --type json -p '[{"op":"replace","path":"/spec/gateways/0", "value":"bookinfo-gateway"}]'

Додаткові функції

Kiali має багато інших функцій, ніж ті, що були розглянуті в цьому завданні, таких як інтеграція з Jaeger tracing.

Для отримання більш детальної інформації про ці додаткові функції, дивіться документацію Kiali.

Для глибшого вивчення Kiali рекомендується пройти Tutorial Kiali.

Очищення

Якщо ви не плануєте подальші завдання, видаліть демонстраційний застосунок Bookinfo та Kiali з вашого кластера.

  1. Щоб видалити застосунок Bookinfo, дотримуйтесь інструкцій очищення Bookinfo.

  2. Щоб видалити Kiali з середовища Kubernetes:

    $ kubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.24/samples/addons/kiali.yaml
Чи була ця інформація корисною?
Чи є у вас пропозиції щодо покращення?

Дякуємо за ваш відгук!