Разверните пример bookinfo

задняя часть

Это 12-й день моего участия в ноябрьском испытании обновлений. Узнайте подробности события:Вызов последнего обновления 2021 г.

Началось впрактическое руководство по istio

Развернуть официальныйОбразец приложения Bookinfo.

В этом примере развертывается приложение, демонстрирующее различные функции Istio, состоящее из четырех отдельных микросервисов. Это приложение имитирует категорию в книжном интернет-магазине и отображает информацию о книге. На странице отображается описание книги, сведения о книге (ISBN, количество страниц и т. д.) и некоторые комментарии к книге.

BookinfoПриложение разделено на четыре отдельных микросервиса:

  • productpage: этот микросервис будет вызыватьdetails и reviewsДва микросервиса для генерации страниц.
  • details: этот микросервис содержит информацию о книгах.
  • reviews: этот микросервис содержит обзоры, связанные с книгами. Он также позвонитratingsМикросервисы.
  • ratings: этот микросервис содержит рейтинговую информацию, состоящую из обзоров книг.

reviewsСуществует 3 версии микросервисов:

  • версия v1 не будет звонитьratings Служить.
  • версия v2 вызоветratingsслужбу и используйте от 1 до 5 значков черных звездочек для отображения рейтинговой информации.
  • версия v3 вызоветratingsслужбу и используйте от 1 до 5 значков красных звездочек для отображения рейтинговой информации.

На приведенной ниже диаграмме показана сквозная архитектура этого приложения.

Bookinfo部署图

Рисунок 5.3.1: Схема развертывания Bookinfo

1. Служба развертывания

  1. Перейдите в каталог установки Istio.

  2. Истио по умолчаниюКоляска с автоматическим впрыском. Пожалуйста, дляdefaultтегирование пространства именistio-injection=enabled:

    $ kubectl label namespace default istio-injection=enabled
    namespace/default labeled
    
  3. использовать kubectl apply -fКоманда для развертывания приложения:

    kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
    
  4. Убедитесь, что все службы и модули правильно определены и запущены:

    kubectl get service
    
    kubectl get pod
    
  5. подтвердитьBookinfoНезависимо от того, запущено ли приложение, используйте его в Pod.curlКоманда отправляет запрос в приложение, например.ratings:

    kubectl exec -it $(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}') -c ratings -- curl productpage:9080/productpage | grep -o "<title>.*</title>"
    

2. Определяем IP и порт Ingress

Сейчас BookinfoКогда все службы запущены и работают, вам необходимо сделать приложение доступным извне, например, с помощью браузера. Можно использовать Istio Gatewayдля достижения этой цели.

  1. Определить для приложенияIngressшлюз

    kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
    
  2. Подтвердите, что шлюз создан

    $ kubectl get gateway
    NAME               AGE
    bookinfo-gateway   32s
    
  3. подтверждать IngressIP и порт

    Выполните следующую команду, чтобы убедиться, что ваша кластерная среда Kubernetes поддерживает внешнюю балансировку нагрузки:

    kubectl get svc istio-ingressgateway -n istio-system
    

    если EXTERNAL-IPЕсли значение существует, среда использует внешнюю балансировку нагрузки, которую можно использовать для обслуживания входного шлюза. если EXTERNAL-IPзначение<none>(или продолжайте показывать<pending>), среда не обеспечивает внешнюю балансировку нагрузки и не может использовать входной шлюз. может быть установленEXTERNAL-IPзначение, доступное извне.

  4. настраивать EXTERNAL-IP

    Выполните следующую команду, чтобы добавитьEXTERNAL-IPЗначение, то есть: установить внешний доступ, обычно устанавливается на IP-адрес мастера.

    kubectl edit  service istio-ingressgateway -n istio-system
    

    EXTERNAL-IP设置

    Рисунок 5.3.2: Настройки ВНЕШНЕГО IP

    подтверждать istio-ingressgateway из EXTERNAL-IPУспешно ли установлено значение:

    kubectl get  service istio-ingressgateway -n istio-system
    

3. Подтвердите, что к приложению можно получить доступ из-за пределов кластера.

Откройте URL-адрес в браузереhttp://<EXTERNAL-IP>/productpage, чтобы просмотреть веб-страницу приложения. Если вы обновите страницу приложения несколько раз, вы увидитеproductpageСтраница будет отображаться случайным образомreviewsЭффект разных версий сервиса (красная, черная звезда или не показано).reviewsЭто происходит со службой, потому что мы не использовали Istio для маршрутизации с контролем версий.

BookInfo应用页面

Рисунок 5.3.3: Страница приложения BookInfo

При следующем обучении Istio вы можете использовать этот пример для проверки маршрутизации трафика Istio, внедрения ошибок и других функций.

4. Удалите образец приложения.

когда сделаноBookinfoПоэкспериментировав с примером, при необходимости удалите и очистите его, следуя приведенным ниже инструкциям:

  1. Удалите правила маршрутизации и завершите работу контейнера приложения.

    samples/bookinfo/platform/kube/cleanup.sh
    
  2. Подтвердить удаление

    kubectl get virtualservices   #-- there should be no virtual services
    kubectl get destinationrules  #-- there should be no destination rules
    kubectl get gateway           #-- there should be no gateway
    kubectl get pods              #-- the Bookinfo pods should be deleted
    

\

Категории