Для установки примерного приложения 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
командой:
Включите sidecar injection для пространства имён bookinfo
. Если в вашей конфигурации используется стратегия обновления InPlace
, выполните команду:
Если вы используете стратегию обновления RevisionBased
, выполните следующие команды:
Чтобы узнать ваш <revision-name>
, выполните:
Пример вывода:
Пометьте пространство имён с помощью имени ревизии для включения sidecar injection:
Опционально: Если вы уже настроили discoverySelectors
, примените Istio discovery selector
к пространству имён bookinfo
командой:
Пример метки discovery selector
: istio-discovery=enabled
Разверните приложение bookinfo
, применив его YAML-файл командой:
Чтобы убедиться, что сервис bookinfo
доступен, выполните:
Пример вывода
Чтобы проверить доступность подов bookinfo
, выполните:
Пример вывода
Успешная инъекция proxy sidecar подтверждается значением 2/2
в столбце Ready
. Убедитесь, что в столбце Status
для каждого пода отображается Running
.
Подтвердите, что приложение bookinfo
работает, отправив запрос к его product page
. Выполните команду:
Пример вывода
Gateway не развертываются оператором Alauda Service Mesh v2, так как они не считаются частью управляющей плоскости. В целях безопасности рекомендуется развертывать Ingress и Egress gateway в отдельном пространстве имён от управляющей плоскости.
Существует два способа развертывания gateway: с использованием Gateway API или с помощью техники инъекции gateway.
Техника инъекции gateway использует тот же механизм, что и инъекция sidecar Istio. Она создаёт gateway из ресурса Deployment
, связанного с ресурсом Service
. Этот Service
затем можно экспонировать за пределы кластера Alauda Container Platform.
Выполните команду для создания деплоймента и сервиса istio-ingressgateway
:
Настройте приложение bookinfo
для использования созданного gateway, выполнив:
В этом примере используется файл конфигурации 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 для управления маршрутизацией версий.
С помощью Kubernetes Gateway API gateway разворачивается через создание ресурса Gateway
.
LoadBalancer
).Создайте и настройте gateway с помощью ресурсов Gateway
и HTTPRoute
, выполнив команду:
В этом примере используется файл конфигурации gateway для настройки gateway приложения bookinfo
через Gateway API. Файл должен быть применён в пространстве имён приложения.
Убедитесь, что сервис Gateway API готов и имеет адрес, выполнив:
Получите хост с помощью команды:
Получите порт с помощью команды:
Получите URL gateway с помощью команды:
Получите полный URL для страницы продукта командой:
Убедитесь, что productpage доступна с помощью команды curl
:
Пример вывода
Убедитесь, что productpage доступна в веб-браузере.
Откройте в браузере http://${GATEWAY_URL}/productpage
, чтобы просмотреть веб-страницу Bookinfo.
При обновлении страницы несколько раз вы увидите разные версии отзывов на productpage
, отображаемые поочерёдно (красные звёзды, чёрные звёзды, без звёзд), так как мы ещё не использовали Istio для управления маршрутизацией версий.