Это 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 значков красных звездочек для отображения рейтинговой информации.
На приведенной ниже диаграмме показана сквозная архитектура этого приложения.
Рисунок 5.3.1: Схема развертывания Bookinfo
1. Служба развертывания
-
Перейдите в каталог установки Istio.
-
Истио по умолчаниюКоляска с автоматическим впрыском. Пожалуйста, для
defaultтегирование пространства именistio-injection=enabled:$ kubectl label namespace default istio-injection=enabled namespace/default labeled -
использовать
kubectl apply -fКоманда для развертывания приложения:kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml -
Убедитесь, что все службы и модули правильно определены и запущены:
kubectl get service kubectl get pod -
подтвердить
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для достижения этой цели.
-
Определить для приложения
Ingressшлюзkubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml -
Подтвердите, что шлюз создан
$ kubectl get gateway NAME AGE bookinfo-gateway 32s -
подтверждать
IngressIP и портВыполните следующую команду, чтобы убедиться, что ваша кластерная среда Kubernetes поддерживает внешнюю балансировку нагрузки:
kubectl get svc istio-ingressgateway -n istio-systemесли
EXTERNAL-IPЕсли значение существует, среда использует внешнюю балансировку нагрузки, которую можно использовать для обслуживания входного шлюза. еслиEXTERNAL-IPзначение<none>(или продолжайте показывать<pending>), среда не обеспечивает внешнюю балансировку нагрузки и не может использовать входной шлюз. может быть установленEXTERNAL-IPзначение, доступное извне. -
настраивать
EXTERNAL-IPВыполните следующую команду, чтобы добавить
EXTERNAL-IPЗначение, то есть: установить внешний доступ, обычно устанавливается на IP-адрес мастера.kubectl edit service istio-ingressgateway -n istio-systemРисунок 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 для маршрутизации с контролем версий.
Рисунок 5.3.3: Страница приложения BookInfo
При следующем обучении Istio вы можете использовать этот пример для проверки маршрутизации трафика Istio, внедрения ошибок и других функций.
4. Удалите образец приложения.
когда сделаноBookinfoПоэкспериментировав с примером, при необходимости удалите и очистите его, следуя приведенным ниже инструкциям:
-
Удалите правила маршрутизации и завершите работу контейнера приложения.
samples/bookinfo/platform/kube/cleanup.sh -
Подтвердить удаление
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
\