MP: וואָס? .. עס איז נאָר CRUD!
R: טאן CRUD איז דער גרינג טייל, אָבער מיר נאָך דאַרפֿן צו אָטענטאַקייט און אָטערייז יוזערז און באַדינונגס. זינט די נעץ איז אַנרילייאַבאַל, איר וועט דאַרפֿן צו ינסטרומענט ריפּיטיד ריקוועס, ווי געזונט ווי קרייַז צוימען מוסטער אין קלייאַנץ. אויך, צו מאַכן זיכער אַז די גאנצע סיסטעם טוט נישט קראַך, איר דאַרפֿן טיימאַוץ און באַלקכעדז(פֿאַר מער דעטאַילס וועגן ביידע דערמאנט פּאַטערנז, זען שפּעטער אין דעם אַרטיקל - בעערעך טראַנסל.), און אין סדר צו דעטעקט פּראָבלעמס, מאָניטאָרינג, טרייסינג, […]
MP: אָה, לאָזן אונדז נאָר אַרייַנלייגן דעם שטריך אין די פּראָדוקט דינסט.
איך טראַכטן דער געדאַנק איז קלאָר: די סומע פון סטעפּס און מי פארלאנגט צו לייגן איין דינסט איז ריזיק. אין דעם אַרטיקל, מיר וועלן קוקן אין ווי Istio רימוווז אַלע די קאַמפּלעקסיטי דערמאנט אויבן (וואָס איז נישט בדעה צו זיין געשעפט לאָגיק) פון סערוויסעס.
טאָן: דער אַרטיקל אַסומז אַז איר האָבן ארבעטן וויסן פון Kubernetes. אַנדערש, איך רעקאָמענדירן לייענען מיין הקדמה צו Kubernetes און בלויז נאָך וואָס פאָרזעצן לייענען דעם מאַטעריאַל.
אידעע
אין א וועלט אן איסטיאו מאכט איין סערוויס דירעקטע פארלאנגען צו אן אנדערן, און אין פאל פון א דורכפאל דארף די סערוויס עס אליינס באהאנדלען: מאכן א נייע פרואוו, צושטעלן א צייט-אויס, עפענען א קרייז צוימען אאז"ו ו.
דאָס מיינט אַז איר טאָן ניט האָבן צו נוצן אן אנדער ריטריי ביבליאָטעק, איר טאָן ניט האָבן צו מאַכן דיין אייגענע ימפּלאַמענטיישאַן פון קרייַז ברעאַקינג און סערוויס ופדעקונג אין פּראָגראַממינג שפּראַך X, Y אָדער Z. אַלע דעם און פיל מער איז בנימצא אויס פון די קעסטל אין יסטיאָ און טוט נישט דאַרפן קיין ענדערונגען אין די קאָד.
אזוי, איר קענען נעמען אַ ארבעטן קנויל און נאָך דיפּלויינג די Istio קאַמפּאָונאַנץ, די סערוויסעס ליגן אין עס וועט פאָרזעצן צו אַרבעטן, און נאָך רימוווינג די קאַמפּאָונאַנץ, אַלץ וועט זיין גוט ווידער. עס איז קלאָר אַז אין דעם פאַל איר וועט פאַרלירן די קייפּאַבילאַטיז צוגעשטעלט דורך Istio.
גענוג טעאָריע - לאָמיר שטעלן דעם וויסן אין פיר!
יסטיאָ אין פיר
Istio ריקווייערז אַ קובערנעטעס קנויל מיט לפּחות 4 ווקפּוס און 8 גיגאבייט פון באַראַן בנימצא. צו געשווינד שטעלן אַ קנויל און נאָכגיין די אינסטרוקציעס פון דעם אַרטיקל, איך רעקאָמענדירן ניצן Google Cloud Platform, וואָס אָפפערס נייַע ניצערס פריי $300.
נאָך קריייטינג אַ קנויל און קאַנפיגיער אַקסעס צו Kubernetes דורך די קאַנסאָול נוצן, איר קענען ינסטאַלירן Istio דורך די העלם פּעקל פאַרוואַלטער.
העלם ינסטאַלירונג
ינסטאַלירן די העלם קליענט אויף דיין קאָמפּיוטער, ווי דיסקרייבד אין באַאַמטער דאַקיומענטיישאַן. מיר וועלן נוצן דעם צו דזשענערייט טעמפּלאַטעס פֿאַר ינסטאָלינג Istio אין דער ווייַטער אָפּטיילונג.
ינסטאַלירן Istio
אראפקאפיע Istio רעסורסן פֿון לעצט מעלדונג(דער אָריגינעל מחבר ס לינק צו ווערסיע 1.0.5 איז פארענדערט צו די איצטיקע, ד"ה 1.0.6 - בעערעך איבערזעצונג), עקסטראַקט די אינהאַלט אין איין וועגווייַזער, וואָס איך וועל איצט רופן [istio-resources].
צו לייכט ידענטיפיצירן יסטיאָ רעסורסן, שאַפֿן אַ נאַמעספּאַסע אין די K8s קנויל istio-system:
$ kubectl create namespace istio-system
פאַרענדיקן די ינסטאַלירונג דורך גיין צו די וועגווייַזער [istio-resources] און לויפן די באַפֿעל:
דער באַפֿעל וועט אַרויספירן די שליסל קאַמפּאָונאַנץ פון Istio צו אַ טעקע istio.yaml. מיר מאָדיפיצירן די נאָרמאַל מוסטער צו פּאַסן זיך, ספּעציפיצירן די פאלגענדע פּאַראַמעטערס:
kiali.enabled ינסטאָלז Kiali אין אַ קנויל צו וויזשוואַלייז באַדינונגס און פאַרקער;
grafana.enabled ינסטאָלז Grafana צו וויזשוואַלייז געזאמלט מעטריקס.
לאָמיר נוצן די דזשענערייטאַד רעסורסן מיט די באַפֿעל:
$ kubectl apply -f istio.yaml
די ינסטאַלירונג פון Istio אויף דעם קנויל איז גאַנץ! וואַרטן ביז אַלע פּאָדס זענען אין די נאָמען פּלאַץ istio-system וועט קענען Running אָדער Completedדורך לויפן די באַפֿעל אונטן:
$ kubectl get pods -n istio-system
איצט מיר זענען גרייט צו פאָרזעצן אין דער ווייַטער אָפּטיילונג, ווו מיר וועלן באַקומען די אַפּלאַקיישאַן אַרויף און פליסנדיק.
אַרקאַטעקטשער פון די סענטימענט אַנאַליסיס אַפּלאַקיישאַן
לאָמיר נוצן דעם ביישפּיל פון די סענטימענט אַנאַליסיס מיקראָסערוויס אַפּלאַקיישאַן געניצט אין די שוין דערמאנט הקדמה אַרטיקל צו Kubernetes. עס איז קאָמפּליצירט גענוג צו ווייַזן די קייפּאַבילאַטיז פון Istio אין פיר.
די אַפּלאַקיישאַן באשטייט פון פיר מיקראָ באַדינונגס:
דינסט סאַ-פראָנטענד, וואָס סערוועס די פראָנטענד פון אַ Reactjs אַפּלאַקיישאַן;
דינסט SA-פיעדבאַקק, וואָס נעמט באַמערקונגען פון ניצערס וועגן די אַקיעראַסי פון די אַנאַליסיס.
אין דעם דיאַגראַמע, אין אַדישאַן צו באַדינונגס, מיר אויך זען די ינגרעסס קאָנטראָללער, וואָס אין Kubernetes רוץ ינקאַמינג ריקוועס צו די צונעמען באַדינונגס. Istio ניצט אַ ענלעך באַגריף אין זיין Ingress Gateway, מער דעטאַילס פון וואָס וועט נאָכפאָלגן.
איצט יעדער פּאָד וואָס וועט זיין דיפּלויד אין די פעליקייַט נאַמעספּאַסע (default) וועט באַקומען זיין סיידקאַר קאַנטיינער. צו באַשטעטיקן דעם, לאָזן אונדז צעוויקלען די פּראָבע אַפּלאַקיישאַן דורך גיין צו די וואָרצל וועגווייַזער פון די ריפּאַזאַטאָרי [istio-mastery] און לויפן די פאלגענדע באַפֿעל:
$ kubectl apply -f resource-manifests/kube
persistentvolumeclaim/sqlite-pvc created
deployment.extensions/sa-feedback created
service/sa-feedback created
deployment.extensions/sa-frontend created
service/sa-frontend created
deployment.extensions/sa-logic created
service/sa-logic created
deployment.extensions/sa-web-app created
service/sa-web-app created
נאָך דיפּלויד די סערוויסעס, לאָמיר קאָנטראָלירן אַז די פּאָדס האָבן צוויי קאַנטיינערז (מיט די סערוויס זיך און זיין סיידקאַר) דורך לויפן די באַפֿעל kubectl get pods און מאַכן זיכער אַז אונטער די זייַל READY ווערט ספּעסיפיעד 2/2, סימבאַלייזינג אַז ביידע קאַנטיינערז לויפן:
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
sa-feedback-55f5dc4d9c-c9wfv 2/2 Running 0 12m
sa-frontend-558f8986-hhkj9 2/2 Running 0 12m
sa-logic-568498cb4d-2sjwj 2/2 Running 0 12m
sa-logic-568498cb4d-p4f8c 2/2 Running 0 12m
sa-web-app-599cf47c7c-s7cvd 2/2 Running 0 12m
וויסואַללי עס קוקט ווי דאָס:
אַנוווי פּראַקסי אין איינער פון די פּאָדס
איצט אַז די אַפּלאַקיישאַן איז אַרויף און פליסנדיק, מיר דאַרפֿן צו לאָזן ינקאַמינג פאַרקער צו קומען אין די אַפּלאַקיישאַן.
Ingress Gateway
דער בעסטער פיר צו דערגרייכן דעם (לאָזן פאַרקער אין דעם קנויל) איז דורך Ingress Gateway אין Istio, וואָס איז ליגן בייַ די "ברעג" פון דעם קנויל און אַלאַוז איר צו געבן Istio פֿעיִקייטן אַזאַ ווי רוטינג, מאַסע באַלאַנסינג, זיכערהייט און מאָניטאָרינג פֿאַר ינקאַמינג פאַרקער.
די Ingress Gateway קאָמפּאָנענט און די סערוויס וואָס פאָרווערדז עס ויסווייניק זענען אינסטאַלירן אין דעם קנויל בעשאַס די Istio ינסטאַלירונג. צו געפֿינען די פונדרויסנדיק IP אַדרעס פון די סערוויס, לויפן:
$ kubectl get svc -n istio-system -l istio=ingressgateway
NAME TYPE CLUSTER-IP EXTERNAL-IP
istio-ingressgateway LoadBalancer 10.0.132.127 13.93.30.120
מיר וועלן פאָרזעצן צו אַקסעס די אַפּלאַקיישאַן ניצן דעם IP (איך וועל אָפּשיקן צו עס ווי EXTERNAL-IP), אַזוי פֿאַר קאַנוויניאַנס מיר וועלן שרייַבן די ווערט אין אַ בייַטעוודיק:
$ EXTERNAL_IP=$(kubectl get svc -n istio-system
-l app=istio-ingressgateway
-o jsonpath='{.items[0].status.loadBalancer.ingress[0].ip}')
Этот VirtualService относится к запросам, приходящим через http-gateway;
В destination определяется сервис, куда отправляются запросы.
Примечание: Конфигурация выше хранится в файле sa-virtualservice-external.yaml, который также содержит настройки для маршрутизации в SA-WebApp и SA-Feedback, но был сокращён здесь в статье для лаконичности.
Применим VirtualService вызовом:
$ kubectl apply -f resource-manifests/istio/sa-virtualservice-external.yaml
virtualservice.networking.istio.io/sa-external-services created
Примечание: Когда мы применяем ресурсы Istio, Kubernetes API Server создаёт событие, которое получает Istio Control Plane, и уже после этого новая конфигурация применяется к прокси-серверам Envoy каждого pod'а. А контроллер Ingress Gateway представляется очередным Envoy, сконфигурированным в Control Plane. Всё это на схеме выглядит так:
Конфигурация Istio-IngressGateway для маршрутизации запросов
Приложение Sentiment Analysis стало доступным по http://{EXTERNAL-IP}/. Не переживайте, если вы получаете статус Not Found: иногда требуется чуть больше времени для того, чтобы конфигурация вступила в силу и кэши Envoy обновились.
Перед тем, как продолжить, поработайте немного с приложением, чтобы сгенерировать трафик (его наличие необходимо для наглядности в последующих действиях — прим. перев.).
Kiali : наблюдаемость
Чтобы попасть в административный интерфейс Kiali, выполните следующую команду:
$ kubectl port-forward
$(kubectl get pod -n istio-system -l app=kiali
-o jsonpath='{.items[0].metadata.name}')
-n istio-system 20001
… и откройте http://localhost:20001/, залогинившись под admin/admin. Здесь вы найдете множество полезных возможностей, например, для проверки конфигурации компонентов Istio, визуализации сервисов по информации, собранной при перехвате сетевых запросов, получения ответов на вопросы «Кто к кому обращается?», «У какой версии сервиса возникают сбои?» и т.п. В общем, изучите возможности Kiali перед тем, как двигаться дальше — к визуализации метрик с Grafana.
Grafana: визуализация метрик
Собранные в Istio метрики попадают в Prometheus и визуализируются с Grafana. Чтобы попасть в административный интерфейс Grafana, выполните команду ниже, после чего откройте http://localhost:3000/:
$ kubectl -n istio-system port-forward
$(kubectl -n istio-system get pod -l app=grafana
-o jsonpath={.items[0].metadata.name}) 3000
Кликнув на меню Home слева сверху и выбрав Istio Service Dashboard в левом верхнем углу, начните с сервиса sa-web-app, чтобы посмотреть на собранные метрики:
Здесь нас ждёт пустое и совершенно скучное представление — руководство никогда такое не одобрит. Давайте же создадим небольшую нагрузку следующей командой:
$ while true; do
curl -i http://$EXTERNAL_IP/sentiment
-H "Content-type: application/json"
-d '{"sentence": "I love yogobella"}';
sleep .8; done
Вот теперь у нас гораздо более симпатичные графики, а в дополнение к ним — замечательные инструменты Prometheus для мониторинга и Grafana для визуализации метрик, что позволят нам узнать о производительности, состоянии здоровья, улучшениях/деградации в работе сервисов на протяжении времени.
Наконец, посмотрим на трассировку запросов в сервисах.
Jaeger : трассировка
Трассировка нам потребуется, потому что чем больше у нас сервисов, тем сложнее добраться до причины сбоя. Посмотрим на простой случай из картинки ниже:
Типовой пример случайного неудачного запроса
Запрос приходит, падает — в чём же причина? Первый сервис? Или второй? Исключения есть в обоих — давайте посмотрим на логи каждого. Как часто вы ловили себя за таким занятием? Наша работа больше похожа на детективов программного обеспечения, а не разработчиков…
Это широко распространённая проблема в микросервисах и решается она распределёнными системами трассировки, в которых сервисы передают друг другу уникальный заголовок, после чего эта информация перенаправляется в систему трассировки, где она сопоставляется с данными запроса. Вот иллюстрация:
Для идентификации запроса используется TraceId
В Istio используется Jaeger Tracer, который реализует независимый от вендоров фреймворк OpenTracing API. Получить доступ к пользовательского интерфейсу Jaeger можно следующей командой:
$ kubectl port-forward -n istio-system
$(kubectl get pod -n istio-system -l app=jaeger
-o jsonpath='{.items[0].metadata.name}') 16686
Теперь зайдите на http://localhost:16686/ и выберите сервис sa-web-app. Если сервис не показан в выпадающем меню — проявите/сгенерируйте активность на странице и обновите интерфейс. После этого нажмите на кнопку Find Traces, которая покажет самые последние трейсы — выберите любой — покажется детализированная информация по всем трейсам:
Этот трейс показывает:
Запрос приходит в istio-ingressgateway (это первое взаимодействие с одним из сервисов, и для запроса генерируется Trace ID), после чего шлюз направляет запрос в сервис sa-web-app.
В сервисе sa-web-app запрос подхватывается Envoy sidecar'ом, создаётся «ребёнок» в span'е (поэтому мы видим его в трейсах) и перенаправляется в контейнер sa-web-app. (Span — логическая единица работы в Jaeger, имеющая название, время начало операции и её продолжительность. Span'ы могут быть вложенными и упорядоченными. Ориентированный ациклический граф из span'ов образует trace. — прим. перев.)
Здесь запрос обрабатывается методом sentimentAnalysis. Эти трейсы уже сгенерированы приложением, т.е. для них потребовались изменения в коде.
С этого момента инициируется POST-запрос в sa-logic. Trace ID должен быть проброшен из sa-web-app.
…
Примечание: На 4 шаге приложение должно увидеть заголовки, сгенерированные Istio, и передать их в последующие запросы, как показано на изображении ниже:
(A) За проброс заголовков отвечает Istio; (B) За заголовки отвечают сервисы
Istio делает основную работу, т.к. генерирует заголовки для входящих запросов, создаёт новые span'ы в каждом sidecare'е и пробрасывает их. Однако без работы с заголовками внутри сервисов полный путь трассировки запроса будет утерян.
Необходимо учитывать (пробрасывать) следующие заголовки:
Это несложная задача, однако для упрощения её реализации уже существует множество библиотек — например, в сервисе sa-web-app клиент RestTemplate пробрасывает эти заголовки, если просто добавить библиотеки Jaeger и OpenTracing в его зависимости.
Заметьте, что приложение Sentiment Analysis демонстрирует реализации на Flask, Spring и ASP.NET Core.
Теперь, когда стало ясно, что мы получаем из коробки (или почти «из коробки»), рассмотрим вопросы тонко настраиваемой маршрутизации, управления сетевым трафиком, безопасности и т.п.!
Прим. перев.: об этом читайте в следующей части материалов по Istio от Rinor Maloku, переводы которых последуют в нашем блоге в ближайшее время. UPDATE (14 марта): Вторая часть уже опубликована.
דעם VirtualService רעפערס צו ריקוועס וואָס קומען דורך http-gateway;
В destination די דינסט צו וואָס ריקוועס זענען געשיקט איז באשלאסן.
טאָן: די קאַנפיגיעריישאַן אויבן איז סטאָרד אין אַ טעקע sa-virtualservice-external.yaml, וואָס אויך כּולל סעטטינגס פֿאַר רוטינג אין SA-WebApp און SA-Feedback, אָבער איז פאַרקירצט דאָ אין דעם אַרטיקל פֿאַר קורץ.
לאָמיר צולייגן VirtualService דורך רופן:
טאָן: ווען מיר פאַרנוצן Istio רעסורסן, די Kubernetes API סערווירער קריייץ אַ געשעעניש וואָס איז באקומען דורך די Istio קאָנטראָל פּלאַנע, און נאָך דעם, די נייַע קאַנפיגיעריישאַן איז געווענדט צו די ענוווי פּראַקסיז פון יעדער פּאָד. און די ינגרעסס גאַטעווייַ קאָנטראָללער איז אן אנדער ענוווי קאַנפיגיערד אין די קאָנטראָל פלאַך. אַלע דעם קוקט ווי דאָס אין די דיאַגראַמע:
סענטימענט אַנאַליסיס אַפּלאַקיישאַן איז איצט בנימצא אויף http://{EXTERNAL-IP}/. צי ניט זאָרג אויב איר באַקומען ניט געפֿונען סטאַטוס: מאל עס נעמט אַ ביסל מער פֿאַר די קאַנפיגיעריישאַן צו נעמען ווירקונג און ענוווי קאַטשעס צו דערהייַנטיקן.
איידער פּראַסידינג, שפּיל מיט די אַפּ אַ ביסל צו דזשענערייט פאַרקער. (זייַן בייַזייַן איז נייטיק פֿאַר קלעריטי אין סאַבסאַקוואַנט אַקשאַנז - בעערעך איבערזעצונג.).
קיאַלי: אָבסערוואַביליטי
צו באַקומען צו די Kiali אַדמיניסטראַטיווע צובינד, לויפן די פאלגענדע באַפֿעל:
... און עפענען http://localhost:20001/, לאָגינג אין ווי אַדמין / אַדמין. דאָ איר וועט געפֿינען פילע נוציק פֿעיִקייטן, למשל, צו קאָנטראָלירן די קאַנפיגיעריישאַן פון Istio קאַמפּאָונאַנץ, וויזשוואַלייז באַדינונגס ניצן אינפֿאָרמאַציע געזאמלט פֿון ינטערסעפּטינג נעץ ריקוועס, באַקומען ענטפֿערס צו די פֿראגן "ווער איז קאָנטאַקט מיט וועמען?", "וואָס ווערסיע פון די סערוויס איז יקספּיריאַנסט. דורכפאַל?” און אזוי ווייטער. אין אַלגעמיין, ויספאָרשן די קייפּאַבילאַטיז פון Kiali איידער איר מאַך אויף צו וויזשוואַלייזינג מעטריקס מיט Grafana.
גראַפאַנאַ: מעטריק וויזשוואַלאַזיישאַן
מעטריקס געזאמלט אין Istio גיין אין פּראָמעטהעוס און זענען וויזשוואַלייזד מיט Grafana. צו באַקומען צו די Grafana אַדמיניסטראַטיווע צובינד, לויפן די באַפֿעל אונטן און עפענען http://localhost:3000/:
קליקינג אויף די מעניו היים שפּיץ לינקס און סאַלעקטינג Istio סערוויס דאַשבאָרד אין די שפּיץ לינקס ווינקל, אָנהייב מיט דינסט סאַ-וועב-אַפּצו קוקן אין די געזאמלט מעטריקס:
וואָס אַווייץ אונדז דאָ איז אַ ליידיק און גאָר נודנע פאָרשטעלונג - די פאַרוואַלטונג וועט קיינמאָל אַפּרווו פון דעם. לאָמיר מאַכן אַ קליין מאַסע מיט די פאלגענדע באַפֿעל:
איצט מיר האָבן פיל בעסער גראַפס, און אין אַדישאַן צו זיי, ווונדערלעך פּראָמעטהעוס מכשירים פֿאַר מאָניטאָרינג און גראַפאַנאַ פֿאַר וויזשוואַלייזינג מעטריקס וואָס לאָזן אונדז צו לערנען וועגן פאָרשטעלונג, געזונט, ימפּרווומאַנץ / דערנידעריקונג אין באַדינונגס איבער צייט.
צום סוף, לאָמיר קוקן אין טרייסינג ריקוועס אין סערוויסעס.
Jaeger: טרייסינג
מיר וועלן דאַרפֿן טרייסינג ווייַל די מער באַדינונגס מיר האָבן, די מער שווער עס איז צו באַקומען צו די גרונט פון די דורכפאַל. זאל ס קוק אין אַ פּשוט פאַל פון די בילד אונטן:
טיפּיש בייַשפּיל פון אַ טראַפ - דורכפאַל בעטן
די בקשה קומט, פאלט - וואס איז די סיבה? ערשטער דינסט? אדער די צווייטע? עס זענען אויסנעמען אין ביידע - לאָמיר קוקן אין די לאָגס פון יעדער. ווי אָפט האָבן איר געכאפט זיך טאן דעם? אונדזער אַרבעט איז מער ווי ווייכווארג דיטעקטיווז ווי דעוועלאָפּערס ...
דאָס איז אַ פּראָסט פּראָבלעם אין מיקראָסערוויסעס און איז סאַלווד דורך פונאנדערגעטיילט טרייסינג סיסטעמען, אין וואָס סערוויסעס פאָרן אַ יינציק כעדער צו יעדער אנדערער, נאָך וואָס די אינפֿאָרמאַציע איז פאָרווערדיד צו די טרייסינג סיסטעם, ווו עס איז קאַמפּערד מיט די בעטן דאַטן. דאָ ס אַ אילוסטראַציע:
TraceId איז געניצט צו ידענטיפיצירן די בקשה
Istio ניצט Jaeger Tracer, וואָס ימפּלאַמאַנץ די פאַרקויפער-פרייַ אָפּענטראַסינג אַפּי פריימווערק. איר קענט אַקסעס די Jaeger באַניצער צובינד מיט די פאלגענדע באַפֿעל:
איצט גיין צו http://localhost:16686/ און אויסקלייַבן אַ דינסט סאַ-וועב-אַפּ. אויב די סערוויס איז נישט געוויזן אין די פאַל-אַראָפּ מעניו, ווייַזן / דזשענערייט טעטיקייט אויף דעם בלאַט און דערהייַנטיקן די צובינד. נאָך דעם, דריקט אויף די קנעפּל געפֿינען טראַסעס, וואָס וועט ווייַזן די לעצטע טראַסעס - סעלעקטירן קיין - דיטיילד אינפֿאָרמאַציע אויף אַלע טראַסעס וועט דערשייַנען:
דעם שפּור ווייזט:
די בקשה קומט אריין istio-ingressgateway (דאָס איז דער ערשטער ינטעראַקשאַן מיט איינער פון די סערוויסעס, און אַ Trace ID איז דזשענערייטאַד פֿאַר די בעטן), נאָך וואָס די גייטוויי סענדז די בקשה צו די סערוויס סאַ-וועב-אַפּ.
אין דינסט סאַ-וועב-אַפּ די בקשה איז פּיקט אַרויף דורך די ענוווי סיידקאַר, אַ "קינד" איז באשאפן אין די שפּאַן (אַז ס וואָס מיר זען עס אין די טראַסעס) און רידערעקטיד צו דעם קאַנטיינער סאַ-וועב-אַפּ. (שפּאַן - אַ לאַדזשיקאַל אַפּאַראַט פון אַרבעט אין Jaeger, וואָס האט אַ נאָמען, אָנהייב צייט פון די אָפּעראַציע און די געדויער. ספּאַנס קענען זיין נעסטעד און אָרדערד. א דירעקטעד אַסיקליק גראַפיק פון ספּאַנס פארמען אַ שפּור. — בעערעך. איבערזעצן)
דאָ די בקשה איז פּראַסעסט דורך דעם אופֿן סענטימענט אַנאַליסיס. די טראַסעס זענען שוין דזשענערייטאַד דורך די אַפּלאַקיישאַן, י.ע. זיי פארלאנגט קאָד ענדערונגען.
פֿון דעם מאָמענט אויף, אַ POST בעטן איז ינישיייטיד אין סאַ-לאָגיק. Trace ID מוזן זיין פאָרווערדיד פֿון סאַ-וועב-אַפּ.
...
טאָן: אין שריט 4, די אַפּלאַקיישאַן זאָל זען די כעדערז דזשענערייטאַד דורך Istio און פאָרן זיי צו סאַבסאַקוואַנט ריקוועס ווי געוויזן אין די בילד אונטן: