Развертывание приложения Bookinfo
Содержание
Обзор приложения BookinfoРазвертывание приложения BookinfoПредварительные требованияПроцедураПроверкаДоступ к приложению Bookinfo через шлюзДоступ к приложению Bookinfo с помощью инъекции Istio GatewayПредварительные требованияПроцедураПроверкаДоступ к приложению Bookinfo с помощью Gateway APIПредварительные требованияПроцедураПроверкаОбзор приложения Bookinfo
Для установки примерного приложения bookinfo требуется выполнить два основных шага: сначала развернуть само приложение, а затем настроить шлюз, чтобы сделать его доступным извне кластера.
Приложение bookinfo служит инструментом для изучения возможностей сервисной сетки. Оно позволяет легко проверить, что запросы из веб-браузера корректно маршрутизируются через 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 для пространства имён
bookinfo. Если в вашей конфигурации используется стратегия обновленияInPlace, выполните команду:NOTEЕсли вы используете стратегию обновления
RevisionBased, выполните следующие команды:-
Чтобы узнать ваше
<revision-name>, выполните:Пример вывода:
-
Пометьте пространство имён с помощью имени ревизии для включения инъекции sidecar:
-
-
Опционально: Если вы уже настроили
discoverySelectors, примените селектор обнаружения Istio к пространству имёнbookinfoс помощью следующей команды:Пример метки селектора обнаружения:
istio-discovery=enabled -
Разверните приложение
bookinfo, применив его YAML-файл следующей командой:
Проверка
-
Чтобы убедиться, что сервис
bookinfoдоступен, выполните команду:Пример вывода
-
Чтобы проверить, что поды
bookinfoзапущены, выполните команду:Пример вывода
Успешная инъекция прокси sidecar подтверждается, когда в столбце
Readyотображается2/2. Убедитесь, что в столбцеStatusдля каждого пода указаноRunning. -
Подтвердите, что приложение
bookinfoработает, отправив запрос к егоproduct page. Выполните команду:Пример вывода
Доступ к приложению Bookinfo через шлюз
Шлюзы не развертываются оператором Alauda Service Mesh v2, так как они не считаются частью управляющей плоскости. В целях безопасности рекомендуется развертывать Ingress и Egress шлюзы в отдельном пространстве имён, отличном от управляющей плоскости.
Существует два способа развертывания шлюзов: с использованием Gateway API или методом инъекции шлюза.
Доступ к приложению Bookinfo с помощью инъекции Istio Gateway
Метод инъекции шлюза использует тот же механизм, что и инъекция sidecar Istio. Он создаёт шлюз из ресурса Deployment, связанного с ресурсом Service. Этот Service затем можно экспонировать за пределы кластера Alauda Container Platform.
Предварительные требования
- Установлен Alauda Service Mesh v2 Operator.
- Развернута управляющая плоскость Istio.
Процедура
-
Выполните команду для создания деплоймента и сервиса
istio-ingressgateway: -
Настройте приложение
bookinfoдля использования созданного шлюза, выполнив команду:NOTEВ этом примере используется файл конфигурации шлюза для настройки инъекции шлюза для приложения
bookinfo. Файл должен быть применён в том же пространстве имён, где установлено приложение. -
Опционально: Измените YAML-файл для автоматического масштабирования подов на основе входящего трафика.
Пример конфигурации
- В этом примере максимальное количество реплик установлено в
5, минимальное — в2. Новая реплика создаётся при достижении загрузки CPU в 80%.
- В этом примере максимальное количество реплик установлено в
-
Опционально: Определите минимальное количество подов, которые должны работать на узле.
Пример конфигурации
- Эта конфигурация гарантирует, что как минимум одна реплика будет работать, если под перезапускается на другом узле.
Проверка
Вы подключитесь к сервису Bookinfo productpage через только что созданный шлюз. Для доступа к шлюзу используйте команду kubectl port-forward:
- Если вы запускаете команду локально на своей рабочей станции, откройте в браузере
http://localhost:9080/productpage. - Если команда была выполнена на удалённом IPv4 хосте с параметром
--address "0.0.0.0", заменитеlocalhostна IP-адрес или имя хоста удалённого сервера (например,http://<REMOTE_HOST_IP>:9080/productpage). - Если команда была выполнена на удалённом IPv6 хосте с параметром
--address "::", заменитеlocalhostна IP-адрес или имя хоста удалённого сервера (например,http://[<REMOTE_HOST_IP>]:9080/productpage).
При обновлении страницы несколько раз вы должны увидеть разные версии отзывов на странице productpage, отображаемые по круговой схеме (красные звёзды, чёрные звёзды, без звёзд), так как мы ещё не использовали Istio для управления маршрутизацией версий.
Доступ к приложению Bookinfo с помощью Gateway API
С помощью Kubernetes Gateway API шлюз разворачивается через создание ресурса Gateway.
Предварительные требования
- Установлен Alauda Service Mesh v2 Operator.
- Развернута управляющая плоскость Istio.
- Ваш Kubernetes-кластер поддерживает внешние балансировщики нагрузки (то есть сервисы типа
LoadBalancer).
Процедура
-
Создайте и настройте шлюз с помощью ресурсов
GatewayиHTTPRoute, выполнив команду:NOTEВ этом примере используется файл конфигурации шлюза для настройки шлюза для приложения
bookinfoчерез Gateway API. Файл должен быть применён в пространстве имён приложения. -
Убедитесь, что сервис Gateway API готов и имеет адрес, выполнив команду:
-
Получите хост с помощью команды:
-
Получите порт с помощью команды:
-
Получите URL шлюза с помощью команды:
INFOЕсли
$INGRESS_HOST— это IPv6-адрес, заключите его в квадратные скобки при формировании URL. Например: -
Получите полный URL для страницы продукта, выполнив команду:
Проверка
-
Убедитесь, что productpage доступна с помощью команды
curl:Пример вывода
-
Убедитесь, что productpage доступна в веб-браузере.
Откройте в браузере
http://${GATEWAY_URL}/productpage, чтобы просмотреть веб-страницу Bookinfo.При обновлении страницы несколько раз вы должны увидеть разные версии отзывов на странице
productpage, отображаемые по круговой схеме (красные звёзды, чёрные звёзды, без звёзд), так как мы ещё не использовали Istio для управления маршрутизацией версий.