Примечания по управлению микросервисами Istio (1)

Istio
Примечания по управлению микросервисами Istio (1)

задний фон

1.1 Что такое микросервисы

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

1.2 Преимущества микросервисов

  • Модульная разработка, обновление и модернизация с использованием единого сервиса Brother в качестве компонента улучшают общую ненормальную стабильность системы.

  • Удобное модульное управление разработкой, отдельная команда разработки и обслуживания, четкие обязанности

  • Модуль взят, а модуль госуслуги могут использовать другие бизнес-модули

  • Архитектура системы стала более понятной.

  • Объединение CI/CD для реализации DevOPS

  • Эластичное масштабирование в сочетании с оркестровкой сервисов K8S dynamic HPA

  • Сервисный предохранитель/переход на более раннюю версию, избегайте лавинного эффекта ненормальных узлов и рассредоточивайте неисправные узлы

1.3 Проблемы, связанные с микросервисами

  • Все больше и больше услуг, управление конфигурацией и техническое обслуживание усложняются
  • Сложные межсервисные зависимости
  • Сложно отследить цепочку вызовов службы
  • Балансировка нагрузки между сервисами
  • Расширение услуг
  • Сервисный мониторинг/логирование
  • Служба взорвана / ухудшена
  • аутентификация службы
  • Сервис онлайн и офлайн
  • Сервисная документация
  • ...

1.4 Что такое управление микросервисами

Ввиду удобства и проблем, связанных с микросервисами, от «голого железа» до виртуализации, публичного облака, контейнеров и бессерверных технологий, технологии постоянно совершенствуются, чтобы решать проблемы, связанные с микросервисами, как регистрировать и находить сервисы, запрашивать отслеживание ссылок. , балансировка нагрузки, сервисный предохранитель/переход на более раннюю версию, ограничение тока сервиса, контроль доступа, журнал мониторинга, управление конфигурацией, канареечный выпуск, эта статья — мои собственные заметки по изучению Istio, istio решает некоторые проблемы и проблемы. Для этого необходимы другие инструменты и платформы. Эта статья будет постоянно обновляться, чтобы изучить Istio, артефакт управления службами в Kubernetes.

2 Введение в Istio

2.1 Что такое Истио

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

1.2 Что такое сервисная сетка

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

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

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

1.3 Зачем использовать istio

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

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

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

Три основные функции

3.1 Управление трафиком

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

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

  • балансировки нагрузки
  • динамическая маршрутизация
  • выпуск оттенков серого
  • инжекция неисправности

3.2 Безопасность

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

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

  • Сертификация
  • Аутентификация

3.3 Наблюдаемые линии

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

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

Все эти возможности позволяют более эффективно настраивать, отслеживать и применять SLO для ваших сервисов. Конечно, самое главное, вы можете быстро и эффективно обнаруживать и устранять проблемы.

  • цепочка вызовов
  • журнал доступа
  • монитор

3.4 Поддержка платформы

stio не зависит от платформы и предназначен для работы в различных средах, включая кросс-облачные, локальные, Kubernetes, Mesos и другие. Вы можете развернуть Istio на Kubernetes или Nomad с помощью Consul. В настоящее время Istio поддерживает:

  • Сервисы, развернутые в Kubernetes
  • Сервисы, зарегистрированные в Consul
  • Службы, развернутые на виртуальных машинах

3.5 Интеграция и настройка

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

Четыре Архитектуры

Сервисная сетка Istio логически разделена наплоскость данныхиплоскость управления.

  • плоскость данныхсостоит из набора интеллектуальных прокси-серверов, развернутых в качестве сайдкаров (Envoy)сочинение. Эти агенты могут регулировать и контролировать микросервисы иMixerВся сетевая связь между ними.
  • плоскость управленияОтвечает за управление и настройку прокси-серверов для маршрутизации трафика. Кроме того, плоскость управления настраивает Mixer для применения политик и сбора данных телеметрии.

4.1 Схема архитектуры

图片描述
图片描述

4.2 Компоненты

4.2.1 Envoy

Истио используетEnvoyРасширенная версия прокси-сервера, Envoy — это высокопроизводительный прокси-сервер, разработанный на C++, который передает весь входящий и исходящий трафик для всех служб в сетке служб. Многие из встроенных функций Envoy перенесены в Istio, например:

  • Динамическое обнаружение служб
  • балансировки нагрузки
  • Прекращение TLS
  • HTTP/2 и gRPC-прокси
  • предохранитель
  • Проверка работоспособности, выпуск оттенков серого на основе процентного разделения трафика
  • инжекция неисправности
  • Богатые показатели

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

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

4.2.2 Mixer

  • концепция

MixerНезависимый от платформы компонент, отвечающий за обеспечение контроля доступа и политик использования в сервисной сетке, а также за сбор данных телеметрии от прокси-серверов Envoy и других сервисов. Уровень запроса на получение проксиАтрибуты, отправлено в Mixer для оценки. Дополнительные сведения об извлечении атрибутов и оценке политик см.Конфигурация миксера.

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

  • Диаграмма архитектуры
    图片描述

4.2.3 Pilot

  • концепция

PilotПредоставляет возможности обнаружения сервисов для коляски Envoy, возможности управления трафиком для интеллектуальной маршрутизации (например, A/B-тестирование, канареечное развертывание и т. д.) и отказоустойчивость (тайм-ауты, повторные попытки, автоматические выключатели и т. д.). Он переводит высокоуровневые правила маршрутизации, которые контролируют поведение трафика, в конфигурацию, специфичную для Envoy, и распространяет их на sidecars во время выполнения.

Pilot абстрагирует и объединяет механизмы обнаружения служб для конкретных платформ вAPI плоскости данных EnvoyСтандартный формат, который можно использовать в любом дополнении . Эта слабая связь позволяет Istio работать в нескольких средах (например, Kubernetes, Consul, Nomad), сохраняя при этом один и тот же интерфейс для управления трафиком.

  • Диаграмма архитектуры

图片描述

4.2.4 Citadel

  • концепция

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

  • Диаграмма архитектуры

图片描述

4.2.5 Galley

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

4.3 Цели дизайна

  • максимальная прозрачность: Чтобы Istio был принят, операторы и разработчики должны получить от него выгоду при очень небольших затратах. Для этого Istio автоматически внедряется во все сетевые пути между сервисами. Istio использует прокси-серверы sidecar для захвата трафика и автоматического программирования сетевого уровня, где это возможно, для маршрутизации трафика через эти прокси, не требуя каких-либо изменений в коде развернутого приложения. В Kubernetes прокси внедряются в модули для захвата трафика путем написания правил iptables. После внедрения прокси-сервера в модуль и изменения правил маршрутизации Istio может передавать весь трафик. Этот принцип применим и к производительности. Применяя Istio к развертыванию, операторы могут обнаружить, что дополнительные ресурсы, необходимые для обеспечения этих возможностей, минимальны. Все компоненты и API должны быть разработаны с учетом производительности и масштабируемости.
  • Масштабируемость: Поскольку операторы и разработчики все больше и больше полагаются на функциональность, предоставляемую Istio, система должна расти вместе с их потребностями. Хотя мы планируем и дальше добавлять новые возможности самостоятельно, мы предполагаем, что самым большим спросом будет расширение системы политик, интеграция других источников политик и контроля, а также передача сигналов поведения сети другим системам для анализа. Среда выполнения политики поддерживает стандартные механизмы расширения для подключения к другим службам. Кроме того, это позволяет расширить словарный запас, чтобы обеспечить выполнение политик на основе новых сигналов, генерируемых сетью.
  • портативность: Экосистемы, использующие Istio, будут различаться по многим параметрам. Istio должен работать в любой облачной или локальной среде с минимальными затратами. Перенос службы на основе Istio в новую среду должен быть простым делом, и использование Istio для одновременного развертывания службы в нескольких средах также возможно (например, с резервированием в нескольких облаках).
  • Согласованность политики: При вызовах API между службами применение политик обеспечивает полный контроль над поведением между сетками, но не менее важно применять политики к ресурсам для ресурсов, которые не нужно выражать на уровне API. Например, применение квоты к объему ЦП, потребляемому задачей обучения ML, более полезно, чем применение квоты к вызову, который инициирует задание. Таким образом, система политик поддерживается как отдельная служба с собственным API, а не помещается в прокси/побочную машину, что позволяет службам напрямую интегрироваться с ней по мере необходимости.

Ссылка на ссылку