Поиск по сайту:

Управление трафиком в Istio — подробное руководство


Здравствуйте, читатели! В этой статье рассказывается об управлении трафиком в Istio с подробным объяснением его ресурсов.

Итак, начнем!!

Также читайте: Установка Istio в кластере Kubernetes

Что такое управление трафиком?

Управление трафиком относится к управлению трафиком, генерируемым как часть передачи данных/просмотра или вызовов API.

Когда у нас есть приложение, настроенное на локальном сервере или в облаке, трафик генерируется, когда это приложение пытается выполнить определенные вызовы API или вызовы служб других сторонних организаций или передачу данных через Интернет.

Данные — это важнейший и уязвимый аспект любого приложения, а инфраструктура — это корень установки. Необходимо контролировать трафик через Интернет через защищенную инфраструктуру. Это приводит к лучшей безопасности и управлению услугами на той же платформе/инфраструктуре.

В следующем разделе мы рассмотрим Istio как инструмент для управления трафиком.

Istio как инструмент управления трафиком

Istio знакомит нас с управлением трафиком через предлагаемые им правила маршрутизации трафика. Приложение становится более устойчивым к сбоям. Потому что весь мониторинг трафика, который идет и приходит к приложению через интернет.

Istio настраивает прокси-сервер Envoy в качестве дополнения к контейнеру приложения. Он отслеживает весь трафик, который направляется в модуль приложения и из него для вызовов API/задействования службы и т. д.

Таким образом, базовая служба приложения остается неизменной, а весь мониторинг трафика передается через вспомогательную машину Envoy для устойчивости и управления трафиком.

  1. Istio необходимо понимать конечные точки приложения, чтобы отслеживать трафик. Таким образом, он внутренне подключается к системе обнаружения служб для распознавания служб, а также конечных точек приложения.
  2. Таким образом, когда сетевой вызов попадает в приложение, он направляется через прокси-сервер Envoy, а затем, наконец, в конечную службу приложения. Таким образом, сайдкар полностью отрисовывает и отслеживает трафик приложения.
  3. Istio использует циклическую модель для передачи трафика или распределения трафика между балансировщиками нагрузки, настроенными в инфраструктуре.

Ресурсы управления трафиком Istio

Разобравшись с работой Istio как инструмента управления трафиком, дайте нам знать, чтобы изучить ресурсы, установленные Istio.

1. Виртуальный сервис

С помощью виртуальной службы мы можем определить правила маршрутизации трафика, которые могут помочь при попадании приложения в балансировщик нагрузки. Мы определяем правила и эквивалентные протоколы сопоставления для конечного сервиса. Если правило соответствует критериям, трафик перенаправляется на конечный сервис.

Виртуальный сервис позволяет нам легко управлять нагрузкой трафика, разделяя запросы на услуги с помощью правил маршрутизации трафика. Мы можем указать и поддерживать поведение трафика для нескольких имен хостов в одной и той же конфигурации виртуальной службы.

Давайте теперь разберемся в приведенном ниже примере конфигурации виртуальной службы.

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: demo-vs
spec:
  hosts:
  - demo.vs.com
  http:
  - match:
    - headers:
        end-user:
          exact: /api
    route:
    - destination:
        host: /

Объяснение-

  • Запись hosts включает домен или CNAME приложения.
  • Затем мы каскадно переходим по http-маршрутизации и настраиваем соответствующую серверную службу для определенного хоста/назначения.
  • В разделе соответствия находится конфигурация серверной службы, которая будет вызываться, как только запись хоста совпадет.
  • Раздел http включает правила маршрутизации, которые перенаправляются к месту назначения.
  • Как только веб-трафик/запрос достигает шлюза Istio, он ищет запись своего CNAME/FQDN. После успешного сопоставления он затем перемещает трафик в виртуальную службу, которая направляет его в конкретную целевую службу k8.

2. Шлюз

Шлюз обеспечивает гибкость контроля и мониторинга как входящего, так и исходящего трафика на глобальном (посланном) уровне. Мы можем указать тип трафика (протокол/правила), который мы хотим пропускать в сервисную сетку Istio для дальнейшей маршрутизации к месту назначения.

Таким образом, как только URL-адрес приложения попадает в балансировщик нагрузки, он ищет эквивалентный шлюз. Как только он находит запись, он позволяет хосту приложения войти в сетку.

Давайте попробуем понять работу шлюза на примере ниже:

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: demo-gtwy
spec:
  selector:
    app: demo
  servers:
  - port:
      number: 443
      name: https
      protocol: HTTPS
    hosts:
    - demo.vs.com
    tls:
      mode: SIMPLE
      credentialName: demo-tls-cert

Объяснение:

  • Как только веб-трафик достигает балансировщика нагрузки, он направляется на шлюз Istio. Шлюз позволяет трафику входить в сервисную сетку через упомянутый порт (в данном случае 443).
  • Но на этом этапе трафик к серверной службе не направляется.
  • Шлюз проверяет достоверность записи CNAME с помощью секрета TLS (учетных данных).
  • После того как шлюз подтвердит и разрешит трафик от хоста, виртуальная служба берет на себя инициативу и выполняет маршрутизацию к службе назначения.

3. Коляски

С помощью Sidecars мы можем ограничивать и управлять трафиком, поступающим на прокси-серверы Envoy. В общем случае Istio настраивает прокси-сервер Envoy, который принимает трафик через порты, связанные с рабочей нагрузкой приложения. Размещение коляски имеет следующие преимущества:

  • Мы можем фильтровать и управлять протоколами и портами, которые должен принимать Envoy.
  • Мы также можем фильтровать и запрещать прокси-серверу Envoy достигать или перенаправлять трафик на определенный набор сервисов.
  • Он может разрешать/ограничивать трафик к службам в разных пространствах имен.

Давайте теперь попробуем понять концепцию Sidecars, используя приведенный ниже пример:

apiVersion: networking.istio.io/v1alpha3
kind: Sidecar
metadata:
  name: default
  namespace: default
spec:
  egress:
  - hosts:
    - "./*"
    - "bookinfo/*"

Объяснение:

  • С приведенной выше конфигурацией применяется дополнительная конфигурация к пространству имен по умолчанию.
  • Эта конфигурация позволяет внешнему/исходящему трафику достигать только серверных служб пространств имен default и bookinfo.
  • При этом он ограничивает маршрутизацию/доступность трафика для других пространств имен.

Заключение

На этом мы подошли к концу этой темы. Не стесняйтесь комментировать ниже, если у вас возникнут какие-либо вопросы.

Чтобы узнать больше о таких сообщениях, связанных с Kubernetes, оставайтесь с нами.

А пока удачного обучения! :)