Redeo ad microservices cum Istio. Pars II

Redeo ad microservices cum Istio. Pars II

Nota. transl.: Reticuli servitii certae solutionis in recentioribus infrastructuris ad applicationes quae sequuntur architecturae microserviae factae sunt. Dum Istio in ore plurium fabrum DevOps esse potest, satis novum productum est quod, cum comprehensivum secundum facultates quas praebet, notabile temporis spatium requiret ut ad familiaritatem accedat. Ingenium Germanicum Rinor Maloku, qui nubem computandi pro magnis clientibus apud telecommunicationum societatis Networks Aureum est, scripsit mirabilem seriem materiarum quae te cito et alte in Istio intendere permittit. Historiam suam incipit quanam Istio generaliter facere possit et quomodo oculis tuis eam cito videre possis.

Istio β€” An Open Source project in collaboratione cum iugis a Google, IBM et Lyft evoluta. Complicationes solvit quae in applicationibus microservis substructio oriuntur, ut sunt:

  • Negotiatio Management: timeouts, retries, pondera librans;
  • salutem: finis user authenticas et auctoritas;
  • Observabilitas: typum, vigilantia, logging.

Haec omnia in gradu applicationis solvi possunt, sed postea officia tua "micro" non amplius erunt. Omnes extra conatum ad has difficultates solvendas superfluum est copiarum societatum quae directe ad valorem negotii adhiberi possunt. Intueamur exemplum:

Project Procurator: Quousque capit plumam addere?
Elit: Duo sprints.

MP: Quid?.. Crud iustus!
R: Crud facere est facilis pars, sed adhuc opus est ut users et officia authentice confirmes. Cum reticulum leve est, postulationibus crebris ad efficiendum opus erit, sicut etiam circa ruptor exemplaris in clientibus. Item, fac ut tota ratio non fragorem, timeoutibus indigebit bulkheads (per plura de utroque exempla memorata vide infra in art. - approx. transl.)atque ut problemata, vigilantia, pervestiganda deprehendas, […]

MP: Oh, mox inseramus hanc plumam in servitium Producti.

Patet notionem meam sententiam: moles gressus et conatus ad unum opus permagnum addecet. In hoc articulo, videbimus quomodo Istio omnem complexionem, de qua supra (id est negotium logicae non destinatum esse) a officiis removet, intueamur.

Redeo ad microservices cum Istio. Pars II

illud: Hic articulus ponit te scire Kubernetes opus habere. Alioquin commendo Lectio meam introductio ad Kubernetes nec nisi post hanc materiam continue legentes.

Istio idea

In mundo sine Istio, officium unum alteri directam postulat, et in casu defectio, servitium se ipsum tractare debet: fac novum conatum, praestitutum tempus, aperturas praevaricatoris ambitum, etc.

Redeo ad microservices cum Istio. Pars II
Retiacula negotiatio in Kubernetes

Istio peculiarem solutionem praebet, ab officiis omnino separatam et per communicationem retis seiunctam. Et sic est utensilia;

  • culpa tolerantia: Fundatur in codice status responsionis, intellegit an petitio defecerit et re-exsequatur.
  • Canariae rollouts: redirects only fixa recipis petitionum ad novam servitii versionem.
  • Cras et metrics: Quamdiu accepit pro servitio respondere?
  • typum et Observabilitatem: Adiungit speciales capita singula petita et perscrutans eos per botrum.
  • salutem: receptat JWT indicium, authenticas et auctoritates utentes.

Hae possibilitates paucae sunt (realiter paucae!) insidiandi tibi. Nunc in singula technicas intendere!

Istio architectura

Istio omnia retis negotiatio intercipit ac regulas ei applicat, procuratorem callidum in modum vasculi sidecaris in singulas podagras inserens. Proxies ut strenuus omnes facultates formet a Data Planeac dynamice conformari possunt Imperium Planum.

Data Plane

Procuratores siliquas inseri sinunt Istio ut facile metus, quae nobis necessaria sunt. Exempli gratia, retry et functiones ruptor ambitus cohibeamus.

Redeo ad microservices cum Istio. Pars II
Quomodo retriae et ambitus fractionis in Envoye impleantur

Summatim,

  1. envoy (loquimur de procuratore in vase sidecaro sito, quod est distributum separatum productum β€” proxime. transl.) instantia mandati ad primam instantiam officii B et deficit.
  2. Legatus Sidecar iterum conatur (Retry). (1)
  3. Postulatio deficit et redditur procuratorio qui vocatur fr.
  4. Circuit Breaker aperit et vocat proximum ministerium pro petitionibus subsequentibus. (2)

Hoc significat quod alia bibliotheca Retry utendi non habes, non habes exsecutionem Circuitus Fractio et servitii Inventionis in programmando sermone X, Y vel Z. Haec omnia et multo plura praesto sunt ex archa in Istio et non requirit nihil mutatur in codice.

Magna! Nunc cum Istio navigare vis, sed dubitationes adhuc habes, apertas interrogationes. Si haec solutio universalis est pro omnibus occasionibus in vita, tunc habes naturalem suspicionem; tamen omnes huiusmodi solutiones in re eveniunt ad omnem casum idoneae.

Denique quaeris: "Numquid est vestibulum?"

Nunc paratus es ad navigationem maritimam, cognoscamus Planum Imperium.

Imperium Planum

Constat ex tribus partibus; Corporation, blender ΠΈ arxquae cooperantur Legati ad iter negotiationis, ad rationes cogendas, et ad data telemetria colligenda. Schematice hoc totum spectat sic:

Redeo ad microservices cum Istio. Pars II
Commercium Imperium plane cum Data Plane

Legati (i.e. planum datae) configurantur utendo Kubernetes CRD (Custom Resource Definitions) ab Istio definita et ad hoc specialiter destinata. Quid hoc sit vobis, ut videamini aliud esse auxilium in Kubernetes cum nota syntaxi. Postquam creata, haec subsidia a plano moderatio colligentur et legatis applicabuntur.

Relatio officiorum ad Istio

Istio relationem ad officia diximus, sed non vicissim: quomodo officia Istio referuntur?

Esse honestum, officia Isti praesentiae conscia sunt sicut pisces aquae, cum se interrogant, "Quid est usquam aqua?"

Redeo ad microservices cum Istio. Pars II
illustratio Victoria Dimitrakopoulos: - Quomodo aqua tibi placet? - Quid est usquam aqua?

Sic, botrum operarium poteris et postquam Istio partes explicas, officia in ea locata operare perseverent, et, remotis his elementis, omnia denique iterum erunt. Plane in hoc casu facultates ab Istio amittes.

Satis theoriam - hanc scientiam in praxim induamus!

Istio in usu

Istio botrum requirit Kubernetes cum saltem 4 vCPUs et 8 GB ipsius RAM in promptu. Ut celeriter botrum erigas et ex articulo praecepta sequaris, suadeo utens Google Cloud Platform, quod novos usores offert liberum $ CCC.

Post botrum creavisti et accessum ad Kubernetes per utilitatem consolatorium condens, Istio per involucrum Helm procurator instituere potes.

Galea institutionem

Helm clientem install computatrum tuum, de quo in officialis documenta. Formulas generandi hoc utemur ad Istio in altera sectione inaugurandi.

installing Istio

Download Istio resources from tardus release (originis auctoris nexus cum versione 1.0.5 in hodiernam mutata est, i.e. 1.0.6 - approx. transl.)excerpe contenta in unum presul, quem ego posthac voco [istio-resources].

Ut facultates Istio facile cognoscantur, spatium spatii in botro K8s efficiunt istio-system:

$ kubectl create namespace istio-system

Perficere institutionem eundo ad indicem [istio-resources] et currit mandatum;

$ helm template install/kubernetes/helm/istio 
  --set global.mtls.enabled=false 
  --set tracing.enabled=true 
  --set kiali.enabled=true 
  --set grafana.enabled=true 
  --namespace istio-system > istio.yaml

Hoc mandatum clavem partium Istio ad limam outputet istio.yaml. Formulam normae mutavimus ad nos aptam, parametris sequentibus denotans:

  • global.mtls.enabled installed in false (i.e. mTLS authenticas is disabled - approx).ad simpliciorem reddere nostri Morbi processum;
  • tracing.enabled includit petitionem Jaeger repetens;
  • kiali.enabled Kiali in botrum instituit ut operas visualise et negotiationes;
  • grafana.enabled Installsway Grafana ad visualise collecta metrice.

Utamur genitis opibus cum imperio;

$ kubectl apply -f istio.yaml

Institutionem Istio in botro completam est! Exspecta donec omnes siliquae in spatio nominali sunt istio-system poterit Running aut Completedper currendo mandatum inferius:

$ kubectl get pods -n istio-system

Nunc parati sumus in altera sectione pergere, ubi applicationem dabimus et currendo.

Architecture SENTENTIAE Analysis application

Utamur exemplo Sentis Analysis microservice adhibitis in iam dictis Introductio articulus ad Kubernetes. Intricata est satis ostendere facultates Istio in usu.

Applicatio quattuor microservices consistit:

  1. obsequium SA-Frontendqui servit frontendi Reactjs applicatione;
  2. obsequium SA-WebAppquae sentienti Analysis queritur;
  3. obsequium SA-Logicqui se ipsum sensus analysis;
  4. obsequium SA-Feedbackquae opiniones ab utentibus accipit de subtilitate analysi.

Redeo ad microservices cum Istio. Pars II

In hoc schemate, praeter officia, etiam videmus Ingress Controllerem, qui in Kubernetes itinerum petitionum opportunis servitiis ineuntis. Istio simili notione utitur in porta sua Ingress, de quibus plura sequentur.

Currens applicationem cum procuratorio ab Istio

Ad ulteriores operationes, de quibus in articulo, repositio clone istio-dominium. Usus continet et manifestat Kubernetes et Istio.

illigat sidecars

Potest fieri insertio automatice aut manually. Ut automatice vasa sidecara inserere, pittacium nomine spatii imponere necesse erit istio-injection=enabledquod fit cum tali imperio;

$ kubectl label namespace default istio-injection=enabled
namespace/default labeled

Nunc unumquodque vasculum quod in spatio nominali enucleatur (default) sidecar continens ejus accipiet. Ad hoc comprobandum, experimentum explicamus eundo ad directorium radicis repositorii [istio-mastery] et currit mandatum hoc;

$ 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

Explicatis officiis, scriptor reprehendo siliquas duas vasculas habere (cum ipso servitio et eius sidecaro) per currendo mandatum. kubectl get pods ac certam sub columna READY certum valorem 2/2significans quod utrumque vas currit;

$ 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

Visu spectat sic:

Redeo ad microservices cum Istio. Pars II
Internuntius procuratorem in uno siliquae

Nunc applicationis sursum et cursus, necesse est ut advenientis negotiatio in applicatione venire sinat.

Ingress Gateway

Praxi ad hoc assequendum (permittit negotiationis in botro) est per Ingress Gateway in Istio, quae ad "ora" botri sita est et permittit tibi ut lineamenta Istio efficias ut routing, onere conpensationis, securitatis ac vigilantiae negotiationis advenientis.

Componentes portae Ingress et ministerium quod extrinsecus promovetur in botro per institutionem Istio installati sunt. Ut invenias IP oratio externa servitii, currite:

$ 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

Applicationem utendo hoc IP (ut EXTERNUM-IP referam) pergamus accedere, ut commodum scribemus valorem in variabilem:

$ EXTERNAL_IP=$(kubectl get svc -n istio-system 
  -l app=istio-ingressgateway 
  -o jsonpath='{.items[0].status.loadBalancer.ingress[0].ip}')

Si hoc IP per pasco nunc accedere coneris, Service Unavailable errorem accipies, quia per defaltam Istio impedit omnes advenientis negotiationisNullam porta nulla sed dictum finibus.

Porta resource

Porta est CRD (Consuetudine Resource Definition) in Kubernetes, definita insertis Istio in botro et facultas specificandi portus, protocollum et exercitum pro quibus ineuntes mercaturam facere volumus.

In nostro casu volumus ut negotiatio HTTP in portu 80 pro omnibus exercitibus permittat. Negotium impletur hac definitione (http-gateway.yaml):

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: http-gateway
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
- "*"

Haec conformatio nulla explicatione indiget nisi ad electrix istio: ingressgateway. Hoc selectore exprimere possumus quem ingressum portae ad conformationem applicandam. In casu nostro, hic est moderator Gateway Ingress, qui per defaltam Istio constitutus est.

Configuratio applicatur sequens mandatum vocando;

$ kubectl apply -f resource-manifests/istio/http-gateway.yaml gateway.networking.istio.io/http-gateway created

Porta nunc aditus ad portum 80 permittit, sed nescit unde petit iter itineris. Hoc enim tibi opus est Virtual Services.

VirtualService resource

VirtualService narrat Ingress Gateway quomodo petitiones viae quae intra botrum permittuntur sunt.

Petitiones ad applicationem nostram venientem per http-portam mittendae sunt ad frontem, sa-textus app et sa-feedback officia;

Redeo ad microservices cum Istio. Pars II
Itinera quae cum VirtualServices configurari necesse habent

Inspiciamus petitiones quae ad SA-Frontend mittendas:

  • Exigito par per viam / mittendus ad SA-Frontend ut index.html;
  • Viae praefixae /static/* mittendus est ad SA-Frontend ad recipiendas staticas usus in frontend, ut CSS et JavaScript;
  • Iustis verbis aequavit semitas '^.*.(ico|png|jpg)$'mittendus ad SA-Frontend, eo . Hae sunt imagines in pagina pictae.

Effectum exsequendam configuratione sequenti (sa-virtualservice-external.yaml):

kind: VirtualService
metadata:
  name: sa-external-services
spec:
  hosts:
  - "*"
  gateways:
  - http-gateway                      # 1
  http:
  - match:
    - uri:
        exact: /
    - uri:
        exact: /callback
    - uri:
        prefix: /static
    - uri:
        regex: '^.*.(ico|png|jpg)

Π’Π°ΠΆΠ½Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹:

  1. Π­Ρ‚ΠΎΡ‚ VirtualService относится ΠΊ запросам, приходящим Ρ‡Π΅Ρ€Π΅Π· http-gateway;
  2. Π’ 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. Π§Π°ΡΡ‚ΡŒ 1
ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ 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.

Назад ΠΊ микросСрвисам вмСстС с Istio. Π§Π°ΡΡ‚ΡŒ 1

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, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° собранныС ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ:

Назад ΠΊ микросСрвисам вмСстС с Istio. Π§Π°ΡΡ‚ΡŒ 1

Π—Π΄Π΅ΡΡŒ нас ΠΆΠ΄Ρ‘Ρ‚ пустоС ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ скучноС прСдставлСниС β€” руководство Π½ΠΈΠΊΠΎΠ³Π΄Π° Ρ‚Π°ΠΊΠΎΠ΅ Π½Π΅ ΠΎΠ΄ΠΎΠ±Ρ€ΠΈΡ‚. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΆΠ΅ создадим Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

$ 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β€Š: трассировка

Врассировка Π½Π°ΠΌ потрСбуСтся, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ‡Π΅ΠΌ большС Ρƒ нас сСрвисов, Ρ‚Π΅ΠΌ слоТнСС Π΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π΄ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ сбоя. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π° простой случай ΠΈΠ· ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π½ΠΈΠΆΠ΅:

Назад ΠΊ микросСрвисам вмСстС с Istio. Π§Π°ΡΡ‚ΡŒ 1
Π’ΠΈΠΏΠΎΠ²ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ случайного Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠ³ΠΎ запроса

Запрос ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚, ΠΏΠ°Π΄Π°Π΅Ρ‚ β€” Π² Ρ‡Ρ‘ΠΌ ΠΆΠ΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°? ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ сСрвис? Или Π²Ρ‚ΠΎΡ€ΠΎΠΉ? Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π΅ΡΡ‚ΡŒ Π² ΠΎΠ±ΠΎΠΈΡ… β€” Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° Π»ΠΎΠ³ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ. Как часто Π²Ρ‹ Π»ΠΎΠ²ΠΈΠ»ΠΈ сСбя Π·Π° Ρ‚Π°ΠΊΠΈΠΌ занятиСм? Наша Ρ€Π°Π±ΠΎΡ‚Π° большС ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, Π° Π½Π΅ разработчиков…

Π­Ρ‚ΠΎ ΡˆΠΈΡ€ΠΎΠΊΠΎ распространённая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² микросСрвисах ΠΈ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ ΠΎΠ½Π° распрСдСлёнными систСмами трассировки, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сСрвисы ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Ρƒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, послС Ρ‡Π΅Π³ΠΎ эта информация пСрСнаправляСтся Π² систСму трассировки, Π³Π΄Π΅ ΠΎΠ½Π° сопоставляСтся с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ запроса. Π’ΠΎΡ‚ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ:

Назад ΠΊ микросСрвисам вмСстС с Istio. Π§Π°ΡΡ‚ΡŒ 1
Для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ запроса ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ 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. Π§Π°ΡΡ‚ΡŒ 1

Π­Ρ‚ΠΎΡ‚ трСйс ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚:

  1. Запрос ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Π² istio-ingressgateway (это ΠΏΠ΅Ρ€Π²ΠΎΠ΅ взаимодСйствиС с ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· сСрвисов, ΠΈ для запроса гСнСрируСтся Trace ID), послС Ρ‡Π΅Π³ΠΎ шлюз направляСт запрос Π² сСрвис sa-web-app.
  2. Π’ сСрвисС sa-web-app запрос подхватываСтся Envoy sidecar'ΠΎΠΌ, создаётся Β«Ρ€Π΅Π±Ρ‘Π½ΠΎΠΊΒ» Π² span'Π΅ (поэтому ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ Π΅Π³ΠΎ Π² трСйсах) ΠΈ пСрСнаправляСтся Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ sa-web-app. (Span β€” логичСская Π΅Π΄ΠΈΠ½ΠΈΡ†Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Jaeger, ΠΈΠΌΠ΅ΡŽΡ‰Π°Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅, врСмя Π½Π°Ρ‡Π°Π»ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ Π΅Ρ‘ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Span'Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΈ упорядочСнными. ΠžΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ацикличСский Π³Ρ€Π°Ρ„ ΠΈΠ· span'ΠΎΠ² ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ trace. β€” ΠΏΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€Π΅Π².)
  3. Π—Π΄Π΅ΡΡŒ запрос обрабатываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ sentimentAnalysis. Π­Ρ‚ΠΈ трСйсы ΡƒΠΆΠ΅ сгСнСрированы ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Ρ‚.Π΅. для Π½ΠΈΡ… ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΈΡΡŒ измСнСния Π² ΠΊΠΎΠ΄Π΅.
  4. Π‘ этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° инициируСтся POST-запрос Π² sa-logic. Trace ID Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Ρ€ΠΎΡˆΠ΅Π½ ΠΈΠ· sa-web-app.
  5. …

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: На 4 шагС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ, сгСнСрированныС Istio, ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΈΡ… Π² ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ запросы, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π½ΠΈΠΆΠ΅:

Назад ΠΊ микросСрвисам вмСстС с Istio. Π§Π°ΡΡ‚ΡŒ 1
(A) Π—Π° проброс Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Istio; (B) Π—Π° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ сСрвисы

Istio Π΄Π΅Π»Π°Π΅Ρ‚ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ, Ρ‚.ΠΊ. Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ для входящих запросов, создаёт Π½ΠΎΠ²Ρ‹Π΅ span'Ρ‹ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ sidecare'Π΅ ΠΈ пробрасываСт ΠΈΡ…. Однако Π±Π΅Π· Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ сСрвисов ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ трассировки запроса Π±ΡƒΠ΄Π΅Ρ‚ утСрян.

НСобходимо ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ (ΠΏΡ€ΠΎΠ±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒ) ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ:

x-request-id
x-b3-traceid
x-b3-spanid
x-b3-parentspanid
x-b3-sampled
x-b3-flags
x-ot-span-context

Π­Ρ‚ΠΎ нСслоТная Π·Π°Π΄Π°Ρ‡Π°, ΠΎΠ΄Π½Π°ΠΊΠΎ для упрощСния Π΅Ρ‘ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡƒΠΆΠ΅ сущСствуСт мноТСство Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² сСрвисС sa-web-app ΠΊΠ»ΠΈΠ΅Π½Ρ‚ RestTemplate пробрасываСт эти Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ, Ссли просто Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Jaeger ΠΈ OpenTracing Π² Π΅Π³ΠΎ зависимости.

Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Sentiment Analysis дСмонстрируСт Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° Flask, Spring ΠΈ ASP.NET Core.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° стало ясно, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ (ΠΈΠ»ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ Β«ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈΒ»), рассмотрим вопросы Ρ‚ΠΎΠ½ΠΊΠΎ настраиваСмой ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ, управлСния сСтСвым Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ, бСзопасности ΠΈ Ρ‚.ΠΏ.!

ΠŸΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€Π΅Π².: ΠΎΠ± этом Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ части ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² ΠΏΠΎ Istio ΠΎΡ‚ Rinor Maloku, ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‚ Π² нашСм Π±Π»ΠΎΠ³Π΅ Π² блиТайшСС врСмя. UPDATE (14 ΠΌΠ°Ρ€Ρ‚Π°): Вторая Ρ‡Π°ΡΡ‚ΡŒ ΡƒΠΆΠ΅ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π°.

P.S. ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΠ°

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Π² нашСм Π±Π»ΠΎΠ³Π΅:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

route:
- destination:
host: sa-frontend # 2
port:
number: 80

Praecipua puncta:

  1. Hoc VirtualService refert ad petitiones venientes http porta;
  2. Π’ destination Ministerium ad quod preces mittuntur, determinatur.

illud: Configuratio supra reposita in tabella sa-virtualservice-external.yaml, quod etiam in SA-WebApp et SA-Feedback occasus continet, sed hic in articulo brevitatis est abbreviatus.

VirtualService applicamus vocando:


illud: Cum Istio facultates consumimus, Kubernetes API Servo eventum creat qui ab Istio Imperium Plane accipitur, et postea nova schematis de singulis procuratoribus podagrae applicatur. Et Gateway moderatoris Ingress alius Legatus in Plano Imperium figuratus esse videtur. Haec omnia in schemate similia sunt:

Redeo ad microservices cum Istio. Pars II
Istio-IngressGateway conformationem petentibus fuso

Sententia Analysis applicationem nunc praesto est http://{EXTERNAL-IP}/. Nolite ergo solliciti esse si status Non Inventum adepto: Interdum paulo longiorem accipit pro conformatione ad effectum et ad thesauros Internuntius renovandos.

Priusquam progrediar, ludere cum app frenum ad mercaturam generandam. praesentia eius necessaria est ad claritatem in actionibus subsequentibus - approx. transl..

Kiali: observability

Ut ad interfacem administrativam Kiali pervenias, hoc mandatum curre;


... and open http://localhost:20001/, logging in as admin/admin. Multa hic invenies lineamenta utilia, exempli gratia, ad reprimendam Istio partium figurationem, operas visualize utentes informationes a retis intercipiendis postulationibus collectas, responde quaestionibus "Quis est contactus quos?", "Quae versio muneris experitur? defectis? " et sic porro. In genere explora facultatem Kiali antequam movendi ad metricos visualisandi cum Grafana.

Redeo ad microservices cum Istio. Pars II

Grafana: metrics visualisation

Metrica collecta in Istio in Prometheum et subjiciuntur apud Grafana. Ut Grafana ad interfacem administrativam pervenias, imperium inferius curre et deinde aperire http://localhost:3000/:


Clicking in menu domum summo sinistram et eligens Istio Service Dashboard in summo angulo sinistro committitur servitium sa-textus-app-collecta metrice intueri:

Redeo ad microservices cum Istio. Pars II

Quod hic nos manet, inanis est et omnino taediosa effectus - hoc procuratio numquam probabit. Creamus parvum onus cum hoc imperio:


Nunc graphas multo meliores habemus, et praeter ea mirabilia Promethei instrumenta vigilantia et Grafana ad metri visualisandi quae nos permittit discere de observantia, sanitate, melioramentis / degradationibus in servitiis per tempus.

Denique petitiones in officiis repetamus.

Jaeger: typum

Quia quanto plura officia habemus, tanto difficilius est causa defectui. Intueamur casum simplicem e pictura infra:

Redeo ad microservices cum Istio. Pars II
Exemplum de temere defecit petitionem

Venit petitio, cadit - quae ratio est? Primum officium? an secundum? In utroque sunt exceptiones β€” trabes inspiciamus singulorum. Quoties hoc teipsum cepisti? Nostrum opus magis simile est detectores luctus quam tincidunt...

Haec quaestio communis in microservices est et a systematibus vestigationibus distributis solvitur, in quibus officia inter se unum caput transeunt, post quod haec informationes ad typum systematis transmittuntur, ubi cum notitia petitionis confertur. Hic exemplum est:

Redeo ad microservices cum Istio. Pars II
TraceId est ad petitionem identify

Istio Jaeger Tracer utitur, qui instrumentum venditoris independens OpenTracing API compage conficit. Jaeger usor interfacetum accedere potes cum sequenti imperio:


Nunc ad http://localhost:16686/ et eligere servitium sa-textus-app-. Si ministerium in tabula gutta-down non ostenditur, actionem in pagina generare ostende ac interfaciem renovare. Post hoc, preme in puga pyga Vestigia invenire, qui recentissimas vestigia - selectas quaslibet - informationes in omnibus vestigiis ostendet;

Redeo ad microservices cum Istio. Pars II

Vestigium hoc ostendit:

  1. Petitio venit in istio-ingressgateway (hoc est primum commercium cum uno servitiorum, et Vestigium ID generatur pro petitione), post quod porta petit ad servitium. sa-textus-app-.
  2. In servitium sa-textus-app- petitio ab Legato sidecar delectatur, "puer" in spatio creatur (id est quod in vestigiis videmus) et ad continentem redirected. sa-textus-app-. (span β€” Unitas logica operis in Jaeger, quae nomen habet, tempus incipit operationis et eius durationis. Spanis nidificari et ordinari possunt. A graphi acyclici directi palmorum vestigium formant. β€” proxime. transl.)
  3. Hic petitio processit per modum sentimentAnalysis. Haec vestigia jam in applicatione generata sunt, i.e. codice mutationes non requiritur.
  4. Ex hoc tempore, postulatio cursorium initiatur sa-logica. Trace id est transmittantur a sa-textus-app-.
  5. ...

illud: In gradu 4, applicatio videre debet capita ab Istio generata et eas ad subsequentes petitiones transmittere ut in imagine infra ostendetur;

Redeo ad microservices cum Istio. Pars II
(a) Istio procuret capitis curam habere; (B) Services sunt responsible pro capitis

Istio maxime laboris quia... Capitulos generat ad petitiones advenientes, novas palmos in unaquaque parte laterum creat et eas promovet. Sed sine operando cum capitis intus operas, vestigium plenum petitionis iter peribit.

Sequentia capitis ratio habenda est:


Hoc non est arduum opus, sed ad simpliciorem eius exsecutionem iam est plures bibliothecas - exempli gratia, in servitio sa-textus appli, RestTemplate cliens hos principes promovet si simpliciter addas bibliothecas Jaeger et OpenTracing ad eius Acta.

Nota quod applicatio Sententiae demonstrat exsecutiones in Flask, Ver, et ASP.NET Core.

Nunc perspicuum est quid e cista (vel prope ex cista eximus), inspiciamus fuso modulate, retis mercaturae administratione, securitate, etc.

Nota. transl.Lege de hoc in altera parte materiarum Istio a Rinor Maloku, quarum translationes in nostro diario proximo sequentur. UPDATE (14 Martii): In secunda parte, iam editae sunt.

PS ab translator

Lege etiam in nostro diario:

Source: www.habr.com