Общие вопросы
Вопрос. Что такое AWS App Mesh?
Ответ. AWS App Mesh – это новая технология, которая упрощает мониторинг, контроль и отладку взаимодействия между сервисами. App Mesh использует Envoy, прокси‑сервер с открытым исходным кодом для сети сервисов, развертывая его рядом с контейнерами микросервисов. Сервис App Mesh интегрирован с сервисами AWS для мониторинга и отслеживания, а также совместим со множеством распространенных инструментов сторонних разработчиков. App Mesh можно использовать с контейнерами микросервисов под управлением Amazon ECS, Amazon EKS, AWS Fargate, Kubernetes на AWS и сервисами, работающими в Amazon EC2.
Вопрос. Какие задачи позволяет решить App Mesh?
Ответ. App Mesh позволяет просто получить наглядное представление процессов взаимодействия между сервисами, а также обеспечивать их безопасность и управлять ими без разработки нового кода или запуска дополнительной инфраструктуры AWS. С помощью App Mesh можно стандартизировать процесс взаимодействия сервисов, внедрить правила для такого взаимодействия, собирать метрики, журналы и записи отслеживания непосредственно в сервисы AWS или выбранные инструменты сторонних разработчиков.
Вопрос: Как работает App Mesh?
Ответ. App Mesh формирует сеть используемых сервисов и осуществляет управление ею. С этой целью рядом с каждым сервисом запускается прокси‑сервер Envoy с открытым исходным кодом, после чего App Mesh настраивает этот прокси‑сервер для обработки всех входящих и исходящих процессов взаимодействия для каждого из контейнеров. App Mesh осуществляет сбор метрик, таких как коэффициенты ошибок и количество соединений в секунду, которые потом можно экспортировать в Amazon CloudWatch с помощью средства сбора данных statsd. С помощью API App Mesh можно осуществлять маршрутизацию трафика в определенные версии сервисов на основании путей или веса.
Вопрос: Что такое сеть сервисов?
Ответ. Сеть сервисов – это новый программный уровень, осуществляющий обработку всех процессов взаимодействия между сервисами. Сеть сервисов обеспечивает новые возможности подключения между сервисами и управления этими связями, которые не зависят от программного кода отдельных сервисов. Это позволяет работать без учета сетевых границ с использованием различных систем управления сервисами.
Возможности интеграции
Вопрос: Как App Mesh взаимодействует с Amazon Elastic Container Services (ECS) и AWS Fargate?
Ответ: Для приложений, управляемых с помощью Amazon ECS и AWS Fargate, App Mesh обеспечивает новые возможности взаимодействия, а также наблюдения за их работой и управления такими приложениями. Образ прокси‑сервера Envoy требуется добавить к определению задачи. App Mesh управляет конфигурацией Envoy, обеспечивая функциональные возможности сети сервиса. App Mesh экспортирует метрики, журналы и маршруты к адресам, указанным в предоставленной конфигурации загрузочного сценария Envoy. App Mesh предоставляет API для настройки маршрутов трафика и других элементов управления взаимодействием между микросервисами, которые обеспечивает сеть.
Вопрос: Как App Mesh взаимодействует с Amazon Elastic Container Service for Kubernetes (EKS)?
Ответ: Используйте контроллер AWS App Mesh с открытым исходным кодом и модифицирующий контроллер доступа на основе webhook. Эти контроллеры подключают к App Mesh сервисы Kubernetes и следят за тем, чтобы в поды были добавлены прокси‑серверы Envoy. App Mesh экспортирует метрики, журналы и маршруты к адресам, указанным в предоставленной конфигурации загрузочного сценария Envoy. App Mesh предоставляет API для настройки маршрутов трафика и других элементов управления взаимодействием между микросервисами, которые обеспечивает сеть.
Вопрос. Как App Mesh взаимодействует с сервисами, работающими в Amazon EC2?
Ответ. Запустите прокси‑сервер Envoy в качестве контейнера или процесса на используемом инстансе EC2. Чтобы направить сетевой трафик на инстанс через прокси‑сервер, используйте контейнер инициализации прокси‑сервера, предоставленный AWS, или запустите собственный скрипт. App Mesh управляет конфигурацией Envoy, обеспечивая функциональные возможности сети сервиса. App Mesh экспортирует метрики, журналы и маршруты к адресам, указанным в предоставленной конфигурации загрузочного сценария Envoy. App Mesh предоставляет API для настройки маршрутов трафика и других элементов управления взаимодействием между микросервисами, которые обеспечивает сеть.
Вопрос: В каких случаях стоит использовать App Mesh вместо балансировщиков AWS Elastic Load Balancer?
Ответ: Мы рекомендуем использовать AWS Elastic Load Balancing для обработки интернет‑трафика и трафика от клиентов, находящихся за рамками доверенных ресурсов. Для внутренних сервисов, подключающихся к другим сервисам в рамках одного региона AWS, App Mesh обеспечивает гибкость, согласованность, а также большую степень контроля и расширенный мониторинг взаимодействия между сервисами.
Мониторинг, ведение журнала и отслеживание
Вопрос: Какие возможности мониторинга предлагает App Mesh?
Ответ: App Mesh предлагает единообразные метрики и журналы на каждом сегменте сети между сервисами. В эти журналы и метрики входят различные метаданные, например наименования сервисов и идентификаторы запросов. С их помощью можно агрегировать и фильтровать данные, а также просматривать графические панели взаимодействия между сервисами с помощью таких инструментов, как Amazon CloudWatch. В состав типовых панелей управления могут входить коэффициенты и коды ошибок, возникших между конкретным сервисом и его зависимостями. App Mesh автоматически собирает результаты отслеживания для каждого сервиса и позволяет просто визуализировать карту сервисов с подробной информацией обо всех вызовах сервисных API. Благодаря этим возможностям можно упростить отладку и поиск причин возникновения проблем при взаимодействии между микросервисами.
Вопрос. Можно ли использовать сторонние инструменты для мониторинга, ведения журналов и отслеживания с помощью App Mesh? Да.
Ответ: Да. App Mesh поддерживает сторонние инструменты, предназначенные для работы с Envoy. В их число входят Splunk, Prometheus, Jaeger, Flagger и Grafana, а также решения для открытого отслеживания: Zipkin и LightStep.
Управление трафиком
Вопрос: Какой тип инструментов управления трафиком предоставляет App Mesh?
Ответ: App Mesh предоставляет клиентский набор инструментов управления для маршрутизации трафика. App Mesh также предоставляет API для маршрутизации трафика между приложениями на основании наименования и версии сервиса. Эти возможности позволяют проще развертывать новые версии микросервисов.
Аутентификация между сервисами
Вопрос. Как App Mesh поддерживает идентификацию приложения?
Протокол Mutual TLS обеспечивает принудительную установку идентификации приложения на транспортном уровне, а также возможность управления правами клиентского подключения на основе предоставляемого сертификата. AWS App Mesh поддерживает принудительную идентификацию клиентских приложений с помощью сертификатов X.509, так называемой защиты взаимного транспортного уровня или Mutual TLS. Чтобы настроить Mutual TLS, необходимо запросить у клиента предоставление сертификата серверной службе во время инициирования запроса в рамках согласования сеанса TLS. Такой сертификат используется сервером для идентификации и аутентификации клиента, проверки действительности сертификата и его выдачи доверенным центром сертификации, а также для определения того, кем является клиент, с помощью альтернативного имени субъекта, указанного в сертификате.
Вопрос. Для чего необходимо использовать Mutual TLS с AWS App Mesh?
Микросервисы также предусматривают особые требования к безопасности, включая сквозное шифрование трафика и гибкий контроль доступа к сервисам, которые можно удовлетворить с помощью сервисной сети. После развертывания Mutual TLS AWS App Mesh клиентские приложения могут осуществлять проверку серверов. Кроме того, появляется возможность шифрования трафика, а Mutual TLS представляет одноранговую аутентификацию, которая используется для аутентификации между сервисами. TLS гарантирует дополнительный уровень безопасности для проверки сервисами клиента, устанавливающего соединение. Разделение монолитного приложения на микросервисы и запуск их в сервисной сети обладает различными преимуществами, включая усовершенствованную наглядность и интеллектуальную маршрутизацию трафика.