Развертывание приложения Bookinfo
Содержание
Обзор приложения BookinfoРазвертывание приложения BookinfoПредварительные требованияПроцедураПроверкаДоступ к приложению Bookinfo через gatewayДоступ к приложению Bookinfo с помощью Istio Gateway InjectionПредварительные требованияПроцедураПроверкаДоступ к приложению Bookinfo с помощью Gateway APIПредварительные требованияПроцедураПроверкаОбзор приложения Bookinfo
Для установки примерного приложения bookinfo требуется два основных шага: сначала развернуть само приложение, а затем настроить gateway, чтобы сделать его доступным извне кластера.
Приложение bookinfo служит инструментом для изучения возможностей service mesh. Оно позволяет легко проверить, что запросы из web browser корректно маршрутизируются через mesh к приложению.
Приложение bookinfo представляет информацию о книге, подобно одной записи в каталоге онлайн-книжного магазина. Оно отображает страницу с описанием книги, ее сведениями (такими как ISBN и количество страниц) и отзывами пользователей.
При публикации через mesh поведение микросервисов приложения bookinfo определяется конфигурацией mesh. Данные отзывов берутся из одного из трех сервисов: reviews-v1, reviews-v2 или reviews-v3. Если вы развернете bookinfo без определенного виртуального сервиса reviews, mesh по умолчанию будет использовать политику round robin для маршрутизации запросов к этим сервисам.
Создав виртуальный сервис reviews, вы можете определить собственные правила маршрутизации. Например, можно настроить mesh так, чтобы он направлял запросы к сервису reviews-v2, когда пользователь вошел в систему; в этом случае отзывы будут отображаться с черными звездами. И наоборот, для пользователей, которые не вошли в систему, mesh может направлять запросы к reviews-v3, отображая отзывы с красными звездами.
Дополнительные сведения можно найти в upstream-документации Istio по приложению Bookinfo.
Развертывание приложения Bookinfo
Предварительные требования
- Установлен Alauda Service Mesh v2 Operator.
- Развернут Istio CNI.
- Развернута control plane Istio.
Процедура
-
Используйте следующую команду, чтобы создать новый namespace с именем
bookinfo: -
Включите внедрение sidecar для namespace
bookinfo. Если в вашей конфигурации используется стратегия обновленияInPlace, выполните эту команду:NOTEЕсли вы используете стратегию обновления
RevisionBased, выполните следующие команды:-
Чтобы определить
<revision-name>, выполните следующую команду:Пример вывода:
-
Пометьте namespace с использованием имени revision, чтобы включить внедрение sidecar:
-
-
Необязательно: если вы уже настроили
discoverySelectors, используйте следующую команду, чтобы применитьdiscovery selectorIstio к namespacebookinfo:Пример метки
discovery selector:istio-discovery=enabled -
Разверните приложение
bookinfo, применив его YAML-файл с помощью следующей команды:
Проверка
-
Чтобы подтвердить, что сервис
bookinfoдоступен, выполните следующую команду:Пример вывода
-
Чтобы проверить, что pod
bookinfoдоступны, выполните следующую команду:Пример вывода
Успешное внедрение proxy sidecar определяется по столбцу
Ready, в котором должно отображаться значение2/2. Убедитесь, что в столбцеStatusдля каждого pod указаноRunning. -
Убедитесь, что приложение
bookinfoзапущено, отправив запрос к егоproduct page. Выполните эту команду:Пример вывода
Доступ к приложению Bookinfo через gateway
Gateway не развертываются Alauda Service Mesh v2 Operator, поскольку они не считаются частью control plane. Из соображений безопасности рекомендуется развертывать gateways Ingress и Egress в отдельном namespace, отличном от control plane.
Существует два способа развертывания gateways: с помощью Gateway API или с использованием техники внедрения gateway.
Доступ к приложению Bookinfo с помощью Istio Gateway Injection
Техника внедрения gateway использует тот же механизм, что и внедрение sidecar в Istio. Она создает gateway на основе ресурса Deployment, связанного с ресурсом Service. Затем этот Service можно опубликовать вне кластера Alauda Container Platform.
Предварительные требования
- Установлен Alauda Service Mesh v2 Operator.
- Развернута control plane Istio.
Процедура
-
Выполните следующую команду, чтобы создать
istio-ingressgatewaydeployment и service: -
Настройте приложение
bookinfoна использование вновь созданного gateway, выполнив эту команду:NOTEВ этом примере используется пример файла конфигурации gateway для настройки внедрения gateway для приложения
bookinfo. Этот файл необходимо применить в том же namespace, где установлено приложение. -
Необязательно: измените YAML-файл для автоматического масштабирования pod на основе ingress-трафика.
Пример конфигурации
- В этом примере максимальное количество реплик установлено в
5, а минимальное — в2. Новая реплика создается, когда загрузка CPU достигает 80%.
- В этом примере максимальное количество реплик установлено в
-
Необязательно: задайте минимальное количество pod, которые должны быть запущены на узле.
Пример конфигурации
- Эта примерная конфигурация гарантирует, что будет запущена как минимум одна реплика, если pod будет перезапущен на другом узле.
Проверка
Вы подключитесь к сервису Bookinfo productpage через только что предоставленный gateway. Чтобы получить доступ к gateway, необходимо использовать команду 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 в стиле round robin (красные звезды, черные звезды, без звезд), поскольку мы еще не использовали Istio для управления маршрутизацией версий.
Доступ к приложению Bookinfo с помощью Gateway API
С помощью Kubernetes Gateway API gateway развертывается путем создания ресурса Gateway.
Предварительные требования
- Установлен Alauda Service Mesh v2 Operator.
- Развернута control plane Istio.
- Ваш кластер Kubernetes поддерживает внешние load balancer’ы (то есть
ServicesтипаLoadBalancer)
Процедура
-
Создайте и настройте gateway с помощью ресурсов
GatewayиHTTPRoute, выполнив команду ниже:NOTEВ этом примере используется пример файла конфигурации gateway для настройки gateway для приложения
bookinfoчерез Gateway API. Этот файл необходимо применить в namespace приложения. -
Убедитесь, что service Gateway API готов и имеет адрес, выполнив следующую команду:
-
Получите host с помощью этой команды:
-
Получите port с помощью этой команды:
-
Получите URL gateway с помощью этой команды:
INFOЕсли
$INGRESS_HOSTявляется IPv6-адресом, заключите его в квадратные скобки при формировании URL. Например: -
Получите полный URL для страницы продукта, выполнив следующую команду:
Проверка
-
Убедитесь, что productpage доступна с помощью команды
curl:Пример вывода
-
Убедитесь, что productpage доступна в web browser.
Откройте в браузере
http://${GATEWAY_URL}/productpage, чтобы просмотреть веб-страницу Bookinfo.При нескольких обновлениях страницы вы должны увидеть разные версии отзывов, отображаемые в
productpageв стиле round robin (красные звезды, черные звезды, без звезд), поскольку мы еще не использовали Istio для управления маршрутизацией версий.