Надстройка сетки служб на основе Istio для службы Azure Kubernetes

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

Что такое сетка служб?

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

Так как развертывание распределенных служб, таких как в системе на основе Kubernetes, увеличивается размер и сложность, это может стать труднее понять и управлять ими. Может потребоваться реализовать такие возможности, как обнаружение, балансировка нагрузки, восстановление сбоев, метрики и мониторинг. Сетка служб также может решать более сложные операционные требования, такие как A/B-тестирование, канаровые развертывания, ограничение скорости, управление доступом, шифрование и сквозная проверка подлинности.

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

Что такое Istio?

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

  • Безопасное взаимодействие между службами в кластере с шифрованием TLS (transport Layer Security), строгой проверкой подлинности на основе удостоверений и авторизацией.
  • Автоматическая балансировка нагрузки для HTTP, gRPC, WebSocket и TCP-трафика.
  • Точное управление поведением трафика с расширенными правилами маршрутизации, повторными попытками, отработкой отказа и внедрением ошибок.
  • Подключаемый уровень политики и API конфигурации, поддерживающий элементы управления доступом, ограничения скорости и квоты.
  • Автоматические метрики, журналы и трассировки для всего трафика в кластере, включая входящий трафик кластера и исходящий трафик.

Как надстройка отличается от Istio с открытым исходным кодом?

Эта надстройка сетки служб использует и строится на основе Istio с открытым кодом. При настройке надстройки предоставляются следующие дополнительные преимущества:

  • Версии Istio проверяются и проверяются на совместимость с поддерживаемыми версиями Служба Azure Kubernetes.
  • Корпорация Майкрософт обрабатывает масштабирование и настройку плоскости управления Istio
  • Корпорация Майкрософт настраивает масштабирование компонентов AKS, например coredns при включении Istio.
  • Корпорация Майкрософт предоставляет управляемый жизненный цикл (обновления) для компонентов Istio при активации пользователем.
  • Проверенная настройка внешнего и внутреннего входящего трафика.
  • Проверено, чтобы работать с управляемой службой Azure Monitor для Prometheus и Azure Managed Grafana.
  • Официальный поддержка Azure, предоставленный для надстройки.

Ограничения

Надстройка сетки служб на основе Istio для AKS имеет следующие ограничения:

  • Надстройка не работает в кластерах AKS, использующих надстройку Open Service Mesh для AKS.

  • Надстройка не работает в кластерах AKS с самоуправляемыми установками Istio.

  • Надстройка не поддерживает добавление модулей pod, связанных с виртуальными узлами, которые будут добавлены в сетку.

  • Надстройка пока не поддерживает шлюзы исходящего трафика для управления исходящим трафиком.

  • Надстройка пока не поддерживает режим внешнего окружения без боковой кареты. Корпорация Майкрософт в настоящее время вносит свой вклад в работу в Istio открытый код. Интеграция продуктов для режима "Окружающая среда" находится на схеме развития и постоянно оценивается по мере развития потока окружающей среды.

  • Надстройка пока не поддерживает развертывания с несколькими кластерами.

  • Надстройка пока не поддерживает контейнеры Windows Server. Контейнеры Windows Server пока не поддерживаются в открытый код Istio прямо сейчас. Здесь можно найти запрос на отслеживание проблем с этой функцией.

  • Настройка сетки с помощью следующих пользовательских ресурсов в настоящее время заблокирована ProxyConfig, WorkloadEntry, WorkloadGroup, IstioOperator, WasmPlugin.

  • Надстройка позволяет использовать следующие EnvoyFilter типы фильтров с другими типами фильтров, заблокированными:

    • Луа (type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua).
    • Турбокомпрессор (type.googleapis.com/envoy.extensions.filters.http.compressor.v3.Compressor)
    • Ограничение локальной скорости (type.googleapis.com/envoy.extensions.filters.http.local_ratelimit.v3.LocalRateLimit)

    Примечание.

    Хотя они EnvoyFilterразрешены, любые проблемы, возникающие из них (например, из lua scipt или из библиотеки сжатия) находятся вне области поддержки надстройки Istio. Дополнительные сведения о категориях поддержки для функций и параметров конфигурации надстройки Istio см. в документе политики поддержки.

  • API шлюза для шлюза Istio ingress или управления трафиком сетки (ГАММА) пока не поддерживается в надстройке Istio. Однако API шлюза для управления трафиком Istio Ingress в настоящее время находится в активной разработке для надстройки. Хотя надстройка поддерживает настройку заметок для шлюзов входящего трафика Istio для IP-адресов и тегов служб, портов или протоколов в настоящее время не поддерживается.

Отзывы и вопросы о функциях

Отзывы и функции, запрашивающие надстройку Istio, можно предоставить, создавая проблемы с меткой "service-mesh" в репозитории AKS GitHub.

Следующие шаги