Развертывание приложения Bookinfo
Содержание
Обзор приложения Bookinfo
Для установки примерного приложения bookinfo требуется выполнить два основных шага: сначала развернуть само приложение, а затем настроить gateway, чтобы сделать его доступным извне кластера.
Приложение bookinfo служит инструментом для изучения возможностей service mesh. Оно позволяет легко проверить, что запросы из веб-браузера корректно маршрутизируются через mesh к приложению.
Приложение bookinfo отображает информацию о книге, подобно одной записи в каталоге интернет-магазина книг. Оно показывает страницу с описанием книги, её деталями (например, ISBN и количеством страниц) и отзывами клиентов.
При экспонировании через mesh поведение микросервисов приложения bookinfo регулируется конфигурацией mesh. Данные отзывов поступают из одного из трёх сервисов: reviews-v1, reviews-v2 или reviews-v3. Если вы развернете bookinfo без определения виртуального сервиса reviews, mesh по умолчанию будет использовать политику round-robin для маршрутизации запросов к этим сервисам.
Создавая виртуальный сервис reviews, вы можете задать собственные правила маршрутизации. Например, можно настроить mesh так, чтобы запросы от вошедших в систему пользователей направлялись к сервису reviews-v2, который отображает отзывы с чёрными звёздами. Для пользователей, не вошедших в систему, mesh может направлять запросы к reviews-v3, показывая отзывы с красными звёздами.
Дополнительную информацию можно найти в исходной документации Istio по приложению Bookinfo.
Развертывание приложения Bookinfo
Предварительные требования
- Установлен Alauda Service Mesh v2 Operator.
- Развернут Istio CNI.
- Развернута управляющая плоскость Istio.
Процедура
-
Создайте новое пространство имён с именем
bookinfoкомандой: -
Включите sidecar injection для пространства имён
bookinfo. Если в вашей конфигурации используется стратегия обновленияInPlace, выполните команду:NOTEЕсли вы используете стратегию обновления
RevisionBased, выполните следующие команды:-
Чтобы узнать ваш
<revision-name>, выполните:Пример вывода:
-
Пометьте пространство имён с помощью имени ревизии для включения sidecar injection:
-
-
Опционально: Если вы уже настроили
discoverySelectors, примените Istiodiscovery selectorк пространству имёнbookinfoкомандой:Пример метки
discovery selector:istio-discovery=enabled -
Разверните приложение
bookinfo, применив его YAML-файл командой:
Проверка
-
Чтобы убедиться, что сервис
bookinfoдоступен, выполните:Пример вывода
-
Чтобы проверить доступность подов
bookinfo, выполните:Пример вывода
Успешная инъекция proxy sidecar подтверждается значением
2/2в столбцеReady. Убедитесь, что в столбцеStatusдля каждого пода отображаетсяRunning. -
Подтвердите, что приложение
bookinfoработает, отправив запрос к егоproduct page. Выполните команду:Пример вывода
Доступ к приложению Bookinfo через Gateway
Gateway не развертываются оператором Alauda Service Mesh v2, так как они не считаются частью управляющей плоскости. В целях безопасности рекомендуется развертывать Ingress и Egress gateway в отдельном пространстве имён от управляющей плоскости.
Существует два способа развертывания gateway: с использованием Gateway API или с помощью техники инъекции gateway.
Доступ к приложению Bookinfo с помощью инъекции Istio Gateway
Техника инъекции gateway использует тот же механизм, что и инъекция sidecar Istio. Она создаёт gateway из ресурса Deployment, связанного с ресурсом Service. Этот Service затем можно экспонировать за пределы кластера Alauda Container Platform.
Предварительные требования
- Установлен Alauda Service Mesh v2 Operator.
- Развернута управляющая плоскость Istio.
Процедура
-
Выполните команду для создания деплоймента и сервиса
istio-ingressgateway: -
Настройте приложение
bookinfoдля использования созданного gateway, выполнив:NOTEВ этом примере используется файл конфигурации gateway для настройки инъекции gateway для приложения
bookinfo. Файл должен быть применён в том же пространстве имён, где установлено приложение. -
Опционально: Измените YAML-файл для автоматического масштабирования подов на основе входящего трафика.
Пример конфигурации
- В этом примере максимальное количество реплик установлено в
5, минимальное — в2. Новая реплика создаётся при достижении загрузки CPU 80%.
- В этом примере максимальное количество реплик установлено в
-
Опционально: Определите минимальное количество подов, которые должны работать на узле.
Пример конфигурации
- Эта конфигурация гарантирует, что как минимум одна реплика будет работать, если под перезапускается на другом узле.
Проверка
Вы подключитесь к сервису Bookinfo productpage через только что созданный gateway. Для доступа к gateway используйте команду kubectl port-forward:
- Если вы запускаете команду локально на своей рабочей станции, откройте в браузере
http://localhost:9080/productpage. - Если команда была выполнена на удалённом хосте с параметром
--address 0.0.0.0, заменитеlocalhostна IP-адрес или имя удалённого хоста (например,http://<REMOTE_HOST_IP>:9080/productpage).
При обновлении страницы несколько раз вы увидите разные версии отзывов на productpage, отображаемые поочерёдно (красные звёзды, чёрные звёзды, без звёзд), так как мы ещё не использовали Istio для управления маршрутизацией версий.
Доступ к приложению Bookinfo с помощью Gateway API
С помощью Kubernetes Gateway API gateway разворачивается через создание ресурса Gateway.
Предварительные требования
- Установлен Alauda Service Mesh v2 Operator.
- Развернута управляющая плоскость Istio.
- Ваш Kubernetes кластер поддерживает внешние балансировщики нагрузки (то есть сервисы типа
LoadBalancer).
Процедура
-
Создайте и настройте gateway с помощью ресурсов
GatewayиHTTPRoute, выполнив команду:NOTEВ этом примере используется файл конфигурации gateway для настройки gateway приложения
bookinfoчерез Gateway API. Файл должен быть применён в пространстве имён приложения. -
Убедитесь, что сервис Gateway API готов и имеет адрес, выполнив:
-
Получите хост с помощью команды:
-
Получите порт с помощью команды:
-
Получите URL gateway с помощью команды:
-
Получите полный URL для страницы продукта командой:
Проверка
-
Убедитесь, что productpage доступна с помощью команды
curl:Пример вывода
-
Убедитесь, что productpage доступна в веб-браузере.
Откройте в браузере
http://${GATEWAY_URL}/productpage, чтобы просмотреть веб-страницу Bookinfo.При обновлении страницы несколько раз вы увидите разные версии отзывов на
productpage, отображаемые поочерёдно (красные звёзды, чёрные звёзды, без звёзд), так как мы ещё не использовали Istio для управления маршрутизацией версий.