img

Что такое Istio: разбираемся с популярным фреймворком

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

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

Кроме того, Istio позволяет компаниям защищать, подключать и контролировать модульные программные компоненты, что дает возможность быстро и безопасно обновлять корпоративную сеть. Для управления многочисленными автономными дистрибутивами, составляющими облачные нативные приложения, все больше компаний прибегают к установке Istio на Kubernetes. Он облегчает и управляет межсервисными соединениями и обменом данными, из которых состоит модульное программное приложение.

Для чего используется Istio?

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

Безопасность. Обеспечивается сквозная безопасность за счет шифрования трафика между сервисами, применения политик проверки и утверждения, а также обеспечения безопасных каналов связи.

Наблюдаемость. Обеспечивает подробную телеметрию и метрики для наблюдения за производительностью и поведением, облегчая диагностику и устранение неполадок.

Соблюдение политики. Позволяет применять политики для нескольких сервисов, такие как ограничение скорости, право входа и администрирование квот, гарантируя, что автономно распределенные сервисы работают в рамках заданных параметров.

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

Принципы работы Istio 

Его структуру можно разделить на плоскость управления и плоскость данных. Плоскость данных - это, по сути, улучшенная версия Envoy, пограничного прокси-сервера с открытым исходным кодом, который помогает отделить проблемы сетки от базовых приложений. Он использует модульную систему сетевых фильтров, которые могут быть установлены для управления входящими соединениями. Кроме того, Envoy может использовать дополнительный фильтр уровня L7 для HTTP-трафика. Давайте разберемся в деталях этой части и плоскости управления в целом:

  1. Плоскость данных

Добавление в настройку микросервиса sidecar deputed обеспечивает дополнительную поддержку сервиса на плоскости данных. Вспомогательный прокси этого микросервиса направляет и принимает запросы от других прокси. Вместе эти прокси образуют ячеистую сеть, которая блокирует соединение между микросервисами.

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

Управление трафиком. Envoy позволяет контролировать трафик приложений с помощью рекомендаций по маршрутизации gRPC, HTTP, WebSocket и Transmission Control Protocol (TCP) как внутри одного кластера, так и между кластерами. Это влияет на производительность и позволяет программистам усовершенствовать тактику развертывания. API администрирования трафика Istio позволяет осуществлять гранулярное администрирование соединений сервисной сетки. Это расширяет типы трафика, которые может обрабатывать Istio.

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

Отказоустойчивость сети. В Istio встроена поддержка автоматических повторных попыток, инжекции ошибок и разрыва цепи.

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

Если взаимный TLS недоступен как часть полностекового решения, например, в среде, где развернут Istio, вместо него используется одноранговая проверка. Istio дополнительно поддерживает проверку JSON Web Tokens с помощью собственного провайдера аутентификации или провайдера OpenID Connect (OIDC).

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

  1. Плоскость управления

Плоскость управления будет достаточно гибкой, чтобы приспособить ее как к вашим предпочтениям, так и к собственному подходу к сервисам. Кроме того, код прокси-серверов будет динамически обновляться при изменении настроек или правил. Он контролирует и формирует прокси-серверы для помощи в маршрутизации трафика. Некоторые из наиболее важных аспектов поверхности управления:

  • Кодирование безопасности транспортного уровня, авторизация и надежная аутентификация на основе идентификационных данных для связи между сервисами на основе кластера.
  • Элегантное управление трафиком с помощью таких механизмов, как переключение, повторные попытки, сложные инструкции по маршрутизации и инжекция ошибок.
  • Протокол управления передачей (TCP), протокол передачи гипертекста (HTTP), WebSocket и трафик gRPC могут быть автоматически распределены.
  • Полностью автоматизированный сбор всех метрик, подсказок и трафика на уровне кластера.
  • Управление доступом, тарифами и квотами с помощью отказоустойчивого покрытия политик и API конфигурации.

Преимущества Istio

Istio и Kubernetes вместе обеспечивают бесперебойную работу контейнерной системы микросервисов. Istio работает в облаке, на локальной сети, в Kubernetes и Mesos. Инженеры DevOps понимают, что с помощью Istio можно отслеживать работу сервисов. Телеметрия обеспечивает распределенную трассировку, подробные метрики и полные журналы доступа. Все эти возможности вместе дают различные преимущества:

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

 

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

Эффективное управление потоком трафика. Благодаря надежному набору стратегий маршрутизации, отказоустойчивости, повторных попыток и устранения сбоев, Istio помогает эффективно управлять поведением трафика. Интегрируя Chaos Monkey с Istio во время постпроизводственного тестирования, инженеры по надежности сайта могут вводить задержки и ошибки, укрепляя систему в целом. Компонент управления трафиком решения помогает устранить связь между объемом трафика и пропускной способностью базовой инфраструктуры.

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

Высокая производительность разработчиков. Разработчики должны сосредоточиться на коде, чтобы эффективно создавать приложения. Они также создают многоязычные библиотеки для взаимодействия между сервисами. Шлюз Istio может помочь решить эти проблемы. Он позволяет создавать микросервисы, а программистам - сосредоточиться на логике приложений. Это позволяет инженерам сосредоточиться на основных направлениях разработки программного обеспечения.

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

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

Упрощенная политика и балансировка нагрузки. Istio Kubernetes имеет клиентскую маршрутизацию, сине-зеленое и канареечное развертывание, а также автоматическую балансировку нагрузки. Используя настраиваемый API и подключаемый слой политик, Istio устанавливает контроль доступа, ограничения скорости и квоты. Настраиваемые политики включают списки полномочий на вход, ведение журнала и наблюдение.

 

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

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

Недостатки Istio 

Сервисная сетка - это идеалистическое решение, призванное облегчить трудности, связанные с руководством структурой, состоящей из модульных программных компонентов. Однако оно не лишено недостатков и подвержено критике и трудностям. Было доказано, что Istio имеет ряд негативных последствий, в том числе следующие:

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

Требует большой опыт и объем знаний для работы. Чтобы добавить настраиваемый архитектурный слой к такому оркестратору, как Kubernetes, операционные менеджеры должны разбираться в обеих задействованных технологиях. Знания и опыт работы с большим количеством различных технологий являются обязательными для операционных менеджеров.

Ограниченная скорость. Сервисные сетки - это сложные технологии, которые инвазивны и сложны в использовании, и они могут значительно замедлить работу архитектуры. Использование такой сетки сервисов, как Istio, привело к появлению еще нескольких проблем. Это связано с тем, что при каждом вызове программы необходимо перемещаться по боковому коридору.

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

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

Ограниченное покрытие. Архитектура Istio отлично подходит для обеспечения устойчивости, безопасности и управления развертыванием, но у нее есть некоторые ограничения, когда речь идет о покрытии сервисов. Ее диагностика и телеметрия производительности ограничены взаимодействием между службами, для управления которыми она предназначена. Это требует целостного представления о каждом сервисе, с которым может взаимодействовать транзакция за пределами среды Kubernetes.

Опасность снижения видимости. Чтобы получить распределенные журналы трассировки из Istio или других сеток сервисов, необходимо явно модифицировать код каждого сервиса в полосе взаимодействия. Несмотря на ручное обновление кода, вы можете не полностью понять внутреннюю работу сервиса. В поле узлов Kubernetes корпорация может оказаться незащищенной, если не вложить много денег и времени в создание пользовательских возможностей протоколирования.

Как Istio используется в Kubernetes?

Он добавляет контейнеры в Kubernetes, делая их невидимыми для программистов и администраторов. Контейнеры «Sidecar» направляют трафик и следят за взаимодействием компонентов. Для конфигурирования, наблюдения и управления используются оба контейнера.

Конфигурация. Основная техника наброска Kubernetes - «kubectl -f <filename>» с использованием YAML-файла. Пользователи Istio могут выполнять новые и другие YAML-файлы с помощью kubectl или новой, дополнительной команды ioctl.

Мониторинг. С помощью Istio легко отслеживать состояние приложений Kubernetes. Управление состоянием приложений и визуализация Istio выходят за рамки мониторинга кластеров и узлов Kubernetes.

Управление. Интерфейс Istio похож на Kubernetes, что упрощает управление. Он позволяет пользователям разрабатывать политики, которые управляют всем кластером Kubernetes, что экономит время и устраняет необходимость в создании специального кода управления.

Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
Программирование
Скидка 25%
Python Advanced. Продвинутый курс
Освойте асинхронное и метапрограммирование, изучите аннотацию типов и напишите собственное приложение на FastAPI. Улучшите свои навыки Python, чтобы совершить быстрый рост вашего грейда до уровня middle.
Получи бесплатный
вводный урок!
Пожалуйста, укажите корректный e-mail
отправили вводный урок на твой e-mail!
Получи все материалы в telegram и ускорь обучение!
img
Еще по теме:
img
В этой статье обсудим один из важнейших аргументов функции, который ТЫ, мой друг, будешь использовать в каждом своем боте.  Ты с
img
Введение    Настало время глубже погрузиться во взаимодействие человека с ботом. Сегодня изучим декоратор message_handler(). Узн
img
Погружение в aiogram (#5 Отправка стикеров)   Введение   Продолжаем изучать функционал библиотеки aiogram для работы с Telegram
img
Гипервизор - это программное обеспечение для виртуализации, используемое для создания и запуска виртуальных машин (ВМ). Гипервиз
img
Виртуализация серверов позволяет запускать несколько виртуальных машин на одном физическом сервере. Запуск виртуальных машин (ВМ
img
Сегодня мы рассмотрим, как настроить и использовать PHP в проекте. Но прежде чем начать, нужно понять, что такое PHP. Что такое
ЗИМНИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59