{"id":54208,"date":"2019-12-20T00:00:00","date_gmt":"2019-12-19T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/seriya-postov-po-istio-service-mesh"},"modified":"2020-02-18T14:02:12","modified_gmt":"2020-02-18T11:02:12","slug":"seriya-postov-po-istio-service-mesh","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/seriya-postov-po-istio-service-mesh","title":{"rendered":"Seria de post\u0103ri despre Istio Service Mesh","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>\u00cencepem o serie de post\u0103ri \u00een care vom demonstra unele dintre numeroasele capabilit\u0103\u021bi ale re\u021belei de servicii Istio Service Mesh \u00een combina\u021bie cu Red Hat OpenShift \u0219i Kubernetes.<\/p>\n<p><img decoding=\"async\" alt=\"Seria de post\u0103ri despre Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/b7cc06e1451763db78fdf84764af4b69.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPartea \u00eent\u00e2i, de ast\u0103zi: <\/p>\n<ul>\n<li>Vom explica conceptul de containere sidecar \u00een Kubernetes \u0219i vom formula leitmotivul acestei serii de post\u0103ri: <b>\u201enu trebuie s\u0103 schimba\u021bi nimic \u00een codul dvs.\u201d<\/b>.<\/li>\n<li>S\u0103 prezent\u0103m funda\u021bia Istio \u2013 regulile de rutare. Pe acestea se bazeaz\u0103 toate celelalte capabilit\u0103\u021bi ale Istio, deoarece regulile permit direc\u021bionarea traficului c\u0103tre microservicii, folosind fi\u0219iere YAML externe codului serviciilor. De asemenea, vom discuta despre schema de desf\u0103\u0219urare Canary Deployment. Bonus de Anul Nou \u2013 10 cursuri interactive despre Istio.<\/li>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nPartea a doua, care va ap\u0103rea \u00een cur\u00e2nd, v\u0103 va spune: <\/p>\n<ul>\n<li>Cum Istio implementeaz\u0103 Pool Ejection \u00eempreun\u0103 cu Circuit Breaker \u0219i va demonstra cum Istio permite eliminarea pod-ului nefunc\u021bional sau cu performan\u021be slabe din schema de balansare.<\/li>\n<li>De asemenea, vom analiza tema Circuit Breaker din prima postare, \u00een ceea ce prive\u0219te cum poate fi utilizat Istio. Vom ar\u0103ta cum, f\u0103r\u0103 nicio modificare a codului serviciilor, s\u0103 rut\u0103m traficul \u0219i s\u0103 gestion\u0103m erorile de re\u021bea folosind fi\u0219iere de configurare YAML \u0219i comenzi din terminal.<\/li>\n<\/ul>\n<p>\nPartea a treia: <\/p>\n<ul>\n<li>O poveste despre trasabilitate \u0219i monitorizare, care sunt deja \u00eencorporate sau u\u0219or de ad\u0103ugat \u00een Istio. Vom ar\u0103ta cum s\u0103 utiliz\u0103m instrumente precum Prometheus, Jaeger \u0219i Grafana \u00een combina\u021bie cu scalarea OpenShift, pentru a gestiona f\u0103r\u0103 efort arhitectura microservicilor.<\/li>\n<li>Trecem de la monitorizarea \u0219i gestionarea erorilor la a le introduce \u00een sistem \u00een mod inten\u021bionat. Cu alte cuvinte, \u00eenv\u0103\u021b\u0103m s\u0103 facem fault injection f\u0103r\u0103 a modifica codul surs\u0103, ceea ce este foarte important din perspectiva test\u0103rii \u2013 deoarece dac\u0103 modific\u0103m codul pentru aceasta, exist\u0103 riscul de a introduce erori suplimentare.<\/li>\n<\/ul>\n<p>\n\u00cen cele din urm\u0103, \u00een ultima postare despre Istio Service Mesh:<\/p>\n<ul>\n<li>Vom trece pe Latura \u00centunecat\u0103. Mai precis, vom \u00eenv\u0103\u021ba s\u0103 folosim schema Dark Launch, c\u00e2nd codul este desf\u0103\u0219urat \u0219i testat direct pe datele din produc\u021bie, f\u0103r\u0103 a afecta func\u021bionarea sistemului. Aici, capacitatea Istio de a separa traficul devine foarte util\u0103. Iar posibilitatea de a efectua teste pe date reale din produc\u021bie, f\u0103r\u0103 a afecta sistemul de produc\u021bie, este cea mai conving\u0103toare modalitate de verificare.<\/li>\n<li>Baz\u00e2ndu-ne pe Dark Launch, vom ar\u0103ta cum s\u0103 utiliz\u0103m modelul Canary Deployment pentru a reduce riscurile \u0219i a simplifica implementarea noilor coduri. Canary Deployment \u00een sine nu este o noutate, dar Istio permite implementarea acestui model doar cu ajutorul unor fi\u0219iere YAML simple.<\/li>\n<li>\u00cen concluzie, vom demonstra cum s\u0103 folosim Istio Egress pentru a oferi acces la servicii celor care se afl\u0103 \u00een afara clusterelor dvs., maximiz\u00e2nd beneficiile Istio \u00een interac\u021biunea cu internetul.<\/li>\n<\/ul>\n<p>\nA\u0219adar, s\u0103 \u00eencepem...<\/p>\n<p><b>Instrumentele de monitorizare \u0219i gestionare Istio - tot ce este necesar pentru coordonarea microserviciilor \u00eentr-o re\u021bea de servicii. <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/service-mesh\/\">service mesh<\/a><\/noindex>.<\/b><\/p>\n<h3>Ce este o re\u021bea de servicii Istio?<\/h3>\n<p>\nRe\u021beaua de servicii implementeaz\u0103 pentru un grup de servicii func\u021bii precum monitorizarea traficului, controlul accesului, descoperirea, securitatea, toleran\u021ba la defec\u021biuni \u0219i multe altele. Istio permite realizarea tuturor acestea f\u0103r\u0103 a necesita modific\u0103ri \u00een codul serviciilor. Care este secretul acestei magii? Istio ata\u0219eaz\u0103 un proxy fiec\u0103rui serviciu sub forma unui container sidecar, dup\u0103 care tot traficul c\u0103tre acest serviciu trece prin proxy, care, conform politicilor stabilite, decide cum, c\u00e2nd \u0219i dac\u0103 acest trafic trebuie s\u0103 ajung\u0103 la serviciu. Istio permite, de asemenea, implementarea tehnicilor avansate de DevOps, cum ar fi canary deployments, circuit breakers, fault injection \u0219i multe altele.<\/p>\n<h3>Cum func\u021bioneaz\u0103 Istio cu containere \u0219i Kubernetes?<\/h3>\n<p>\nRe\u021beaua de servicii Istio este o implementare sidecar a tot ceea ce este necesar pentru crearea \u0219i gestionarea microserviciilor: monitorizare, trasare, circuit breakers, rutare, balanceaz\u0103 de \u00eenc\u0103rcare, fault injection, retry-uri, timeout-uri, mirroring, controlul accesului, limitarea ratei \u0219i multe altele. \u0218i, de\u0219i ast\u0103zi exist\u0103 numeroase biblioteci pentru implementarea acestor func\u021bii direct \u00een cod, cu Istio pute\u021bi ob\u021bine acelea\u0219i rezultate f\u0103r\u0103 a modifica codul vostru.<\/p>\n<p>Conform modelului sidecar, Istio ruleaz\u0103 \u00eentr-un container Linux, care se afl\u0103 \u00een aceea\u0219i <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/kubernetes\/\">Kubernetes<\/a><\/noindex>-pod cu serviciul controlat \u0219i introduce (inject) \u0219i extrage (extract) func\u021bionalitate \u0219i informa\u021bii conform configura\u021biei specificate. Subliniez, aceasta este configura\u021bia voastr\u0103 \u0219i ea tr\u0103ie\u0219te \u00een afara codului vostru. Prin urmare, codul devine mult mai simplu \u0219i mai scurt.<\/p>\n<p>Ce este important, componenta opera\u021bional\u0103 a microserviciilor nu este legat\u0103 de codul \u00een sine, ceea ce \u00eenseamn\u0103 c\u0103 exploatarea acestora poate fi transferat\u0103 f\u0103r\u0103 grij\u0103 speciali\u0219tilor IT. De fapt, de ce ar trebui ca dezvoltatorul s\u0103 fie responsabil pentru circuit breaker \u0219i fault injection? S\u0103 reac\u021bioneze \u2013 da, dar s\u0103 le gestioneze \u0219i s\u0103 le creeze? Dac\u0103 elimin\u0103m toate acestea din cod, programatorii se pot concentra complet pe func\u021bionalit\u0103\u021bile aplica\u021biei. De asemenea, codul va deveni mai scurt \u0219i mai simplu.<\/p>\n<h3>Re\u021beaua de servicii<\/h3>\n<p>\nIstio, care implementeaz\u0103 func\u021biile de gestionare a microserviciilor \u00een afara codului lor \u2013 este conceptul re\u021belei de servicii Service Mesh. Cu alte cuvinte, aceasta este un grup coordonat de unul sau mai multe binare care formeaz\u0103 o re\u021bea de func\u021bii de re\u021bea.<\/p>\n<h3>Cum func\u021bioneaz\u0103 Istio cu microservicii<\/h3>\n<p>\nIat\u0103 cum arat\u0103 func\u021bionarea containerelor sidecar \u00een leg\u0103tur\u0103 cu <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/kubernetes\/\">Kubernetes<\/a><\/noindex> \u0219i <noindex><a rel=\"nofollow\" href=\"https:\/\/www.openshift.org\/minishift\/\">Minishift<\/a><\/noindex> dintr-o perspectiv\u0103 de ansamblu: lansa\u021bi o instan\u021b\u0103 Minishift, crea\u021bi un proiect pentru Istio (s\u0103-l numim \u00abistio-system\u00bb), instala\u021bi \u0219i lansa\u021bi toate componentele legate de Istio. Apoi, pe m\u0103sur\u0103 ce crea\u021bi proiecte \u0219i pod-uri, ad\u0103uga\u021bi informa\u021bii de configurare \u00een deployment-urile dumneavoastr\u0103, iar pod-urile \u00eencep s\u0103 utilizeze Istio. Diagram\u0103 simplificat\u0103 arat\u0103 astfel:<\/p>\n<p><img decoding=\"async\" alt=\"Seria de post\u0103ri despre Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/feb36ba35442307a8136c395ccae4fd2.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Acum pute\u021bi modifica set\u0103rile Istio, pentru a organiza, de exemplu, fault injection, suport pentru <noindex><a rel=\"nofollow\" href=\"https:\/\/istio.io\/blog\/2017\/0.1-canary.html\">Canary Deployment<\/a><\/noindex> sau alte func\u021bionalit\u0103\u021bi Istio \u2013 \u0219i toate acestea f\u0103r\u0103 a atinge codul aplica\u021biilor \u00een sine. S\u0103 presupunem c\u0103 dori\u021bi s\u0103 redirec\u021biona\u021bi tot traficul web de la utilizatorii celui mai mare client al dumneavoastr\u0103 (Foo Corporation) c\u0103tre noua versiune a site-ului. Pentru aceasta, este suficient s\u0103 crea\u021bi o regul\u0103 de rutare Istio, care va c\u0103uta @foocorporation.com \u00een ID-ul utilizatorului \u0219i va efectua redirec\u021bionarea corespunz\u0103toare. Pentru to\u021bi ceilal\u021bi utilizatori, nimic nu se va schimba. \u00centre timp, ve\u021bi putea s\u0103 testa\u021bi noua versiune a site-ului \u00een lini\u0219te. \u0218i observa\u021bi, pentru aceasta nu este nevoie s\u0103 implica\u021bi dezvoltatorii.<\/p>\n<h3>\u0218i va costa mult?<\/h3>\n<p>\nDeloc. Istio func\u021bioneaz\u0103 destul de rapid, este scris \u00een <noindex><a rel=\"nofollow\" href=\"https:\/\/golang.org\/\">Go<\/a><\/noindex> \u0219i creeaz\u0103 un overhead foarte mic. \u00cen plus, posibila pierdere \u00een performan\u021ba online este compensat\u0103 de cre\u0219terea productivit\u0103\u021bii dezvoltatorilor. Cel pu\u021bin \u00een teorie: nu uita\u021bi c\u0103 timpul dezvoltatorilor este valoros. \u00cen ceea ce prive\u0219te costurile software-ului, Istio este un program cu cod surs\u0103 deschis, a\u0219a c\u0103 \u00eel pute\u021bi ob\u021bine \u0219i folosi gratuit.<\/p>\n<h3>\u00cenv\u0103\u021ba\u021bi singuri<\/h3>\n<p>\nEchipa Red Hat Developer Experience Team a dezvoltat un curs practic aprofundat <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/redhat-developer-demos\/istio-tutorial\">ghid<\/a><\/noindex> pe Istio (\u00een englez\u0103). Acesta func\u021bioneaz\u0103 pe Linux, MacOS \u0219i Windows, iar codul este disponibil \u00een variante pe Java \u0219i Node.js.<\/p>\n<h3>10 lec\u021bii interactive despre Istio<\/h3>\n<p><\/p>\n<h4>Blocul 1 - \u00cencep\u0103tori<\/h4>\n<p>\n<b>Introducere \u00een Istio<\/b><br \/>\n30 de minute <br \/>\nNe familiariz\u0103m cu Service Mesh, \u00eenv\u0103\u021b\u0103m s\u0103 instal\u0103m Istio \u00een clusterul Kubernetes OpenShift.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/istio-introduction\/\">\u00cencepe\u021bi<\/a><\/noindex> <\/p>\n<p><b>Implementarea microserviciilor \u00een Istio<\/b><br \/>\n30 de minute<br \/>\nFolosim Istio pentru a implementa trei microservicii cu Spring Boot \u0219i Vert.x.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/deploy-microservices\/\">\u00cencepe\u021bi<\/a><\/noindex> <\/p>\n<h4>Blocul 2 - Nivel mediu <\/h4>\n<p>\n<b>Monitorizare \u0219i trasare \u00een Istio<\/b><br \/>\n60 de minute <br \/>\n\u00cenv\u0103\u021b\u0103m instrumentele de monitorizare \u00eencorporate ale Istio, metricile configurabile, precum \u0219i OpenTracing prin Prometheus \u0219i Grafana.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/monitoring-tracing\/\">\u00cencepe\u021bi<\/a><\/noindex> <\/p>\n<p><b>Routare simpl\u0103 \u00een Istio<\/b><br \/>\n60 de minute <br \/>\n\u00cenv\u0103\u021b\u0103m s\u0103 gestion\u0103m rutarea \u00een Istio folosind reguli simple.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/simple-route-rules\/\">\u00cencepe\u021bi <\/a><\/noindex><\/p>\n<p><b>Reguli avansate de rutare<\/b><br \/>\n60 de minute <br \/>\nNe familiariz\u0103m cu rutarea inteligent\u0103 \u00een Istio, gestionarea accesului, echilibrarea sarcinii \u0219i limitarea vitezei.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/advanced-routerules\/\">\u00cencepe\u021bi<\/a><\/noindex> <\/p>\n<h4>Blocul 3 - Utilizator experimentat<\/h4>\n<p>\n<b>Injec\u021bie de erori \u00een Istio<\/b><br \/>\n60 de minute <br \/>\n\u00cenv\u0103\u021b\u0103m scenariile de gestionare a erorilor \u00een aplica\u021bii distribuite, cre\u00e2nd erori HTTP \u0219i \u00eent\u00e2rzieri de re\u021bea, \u00eenv\u0103\u021b\u0103m s\u0103 aplic\u0103m ingineria haosului pentru a restabili mediul.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/fault-injection\/\">\u00cencepe\u021bi<\/a><\/noindex> <\/p>\n<p><b>Circuit Breaker \u00een Istio<\/b><br \/>\n30 de minute <br \/>\nInstal\u0103m Siege pentru testarea de stres a site-urilor \u0219i \u00eenv\u0103\u021b\u0103m s\u0103 asigur\u0103m redundan\u021ba backend-ului prin repeti\u021bii, circuit breaker \u0219i pool ejection.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/circuit-breaker\/\">\u00cencepe\u021bi<\/a><\/noindex> <\/p>\n<p><b>Egress \u0219i Istio<\/b><br \/>\n10 minute <br \/>\nFolosim rutele Egress pentru a crea reguli de interac\u021biune \u00eentre serviciile interne \u0219i API-urile \u0219i serviciile externe.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/egress\/\">\u00cencepe\u021bi<\/a><\/noindex> <\/p>\n<p><b>Istio \u0219i Kiali<\/b><br \/>\n15 minute <br \/>\n\u00cenv\u0103\u021b\u0103m s\u0103 folosim Kiali pentru a ob\u021bine o imagine de ansamblu a re\u021belei de servicii \u0219i pentru a studia fluxurile de cereri \u0219i date.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/observe-kiali\/\">\u00cencepe\u021bi<\/a><\/noindex> <\/p>\n<p>Mutual TLS \u00een Istio<br \/>\n15 minute <br \/>\nCre\u0103m Istio Gateway \u0219i VirtualService, apoi studiem detaliat mutual TLS (mTLS) \u0219i configur\u0103rile sale.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/mtls\/\">\u00cencepe\u021bi<\/a><\/noindex> <\/p>\n<h4>Blocul 3.1 - Aprofundare: Istio Service Mesh pentru microservicii<\/h4>\n<p>\n<img decoding=\"async\" alt=\"Seria de post\u0103ri despre Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/1a2bb62b0bbd46fa9b42be1ccbfddfa6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nDespre ce este cartea:<\/p>\n<ul>\n<li>Ce este o re\u021bea de servicii (service mesh).<\/li>\n<li>Sistemul Istio \u0219i rolul s\u0103u \u00een arhitectura microserviciilor.<\/li>\n<li>Utilizarea Istio pentru rezolvarea urm\u0103toarelor probleme:\n<ul>\n<li>Rezisten\u021b\u0103 la defec\u021biuni;<\/li>\n<li>Rutare;<\/li>\n<li>Testare de haos;<\/li>\n<li>Securitate;<\/li>\n<li>Colectarea telemetriei prin intermediul urm\u0103rii, metricelor \u0219i Grafana.<\/li>\n<\/ul>\n<p>\n <\/li>\n<\/ul>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/books\/introducing-istio-service-mesh-microservices\/\">Descarc\u0103 cartea<\/a><\/noindex><\/p>\n<h3>Seria de articole despre re\u021belele de servicii \u0219i Istio<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/03\/13\/istio-route-rules-service-requests\/\">Regulile de rutare Istio: direc\u021bion\u0103m solicit\u0103rile de servicii acolo unde este nevoie<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/03\/20\/istio-circuit-breaker-pool-ejection\/\">Circuit Breaker \u00een Istio: gestion\u0103m Pool Ejection<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/03\/27\/istio-circuit-breaker-when-failure-is-an-option\/\">Circuit Breaker \u00een Istio: c\u00e2nd e\u0219ecul este o op\u021biune<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/04\/03\/istio-tracing-monitoring\/\">Urm\u0103rirea \u0219i monitorizarea \u00een Istio: \u00eencotro se \u00eendreapt\u0103 totul \u0219i c\u00e2t de repede<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/04\/10\/istio-chaos-engineering\/\">Ingineria haosului \u00een Istio: a\u0219a a fost conceput<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/04\/17\/istio-dark-launch-secret-services\/\">Lansare \u00eentunecat\u0103 \u00een Istio: agen\u021bii secrete<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/04\/24\/istio-smart-canary-launch\/\">Canary Deployment \u00een Istio:Simplific\u0103m procesul de implementare<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/05\/01\/istio-egress-exit-through-the-gift-shop\/\">Istio Egress: ie\u0219ire prin magazinul de suveniruri<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>\u00cencerca\u021bi singuri<\/h3>\n<p>\nAceast\u0103 serie de post\u0103ri nu are scopul de a oferi o imersare profund\u0103 \u00een lumea Istio. Vrem doar s\u0103 v\u0103 familiariz\u0103m cu conceptul \u00een sine \u0219i, poate, s\u0103 v\u0103 inspir\u0103m s\u0103 \u00eencerca\u021bi Istio pe cont propriu. Acest lucru se poate face complet gratuit, iar Red Hat ofer\u0103 toate instrumentele necesare pentru a \u00eencepe s\u0103 \u00eenv\u0103\u021ba\u021bi OpenShift, Kubernetes, containere Linux \u0219i Istio, \u0219i anume: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.openshift.com\/products\/container-platform\/trial\/\">Red Hat Developer OpenShift Container Platform<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/redhat-developer-demos\/istio-tutorial\">ghidul nostru pentru Istio<\/a><\/noindex> \u0219i alte resurse pe <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/service-mesh\/\">micro-site-ul nostru despre Service Mesh<\/a><\/noindex>. Nu am\u00e2na\u021bi, \u00eencepe\u021bi chiar ast\u0103zi!<\/p>\n<h3>Regulile de rutare Istio: direc\u021bion\u0103m solicit\u0103rile de servicii acolo unde este nevoie<\/h3>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/products\/openshift\/overview\/\">OpenShift<\/a><\/noindex> \u0219i <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/kubernetes\/\">Kubernetes<\/a><\/noindex> se descurc\u0103 excelent \u00een a direc\u021biona apelurile c\u0103tre <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/microservices\/\">microservicii<\/a><\/noindex> c\u0103tre pod-urile corecte. Aceasta este una dintre scopurile existen\u021bei Kubernetes \u2013 rutarea \u0219i balasarea sarcinilor. Dar ce se \u00eent\u00e2mpl\u0103 dac\u0103 ave\u021bi nevoie de o rutare mai fin\u0103 \u0219i mai sofisticat\u0103? De exemplu, pentru a folosi simultan dou\u0103 versiuni ale unui microserviciu. Cum pot ajuta regulile de rutare Istio Route Rules \u00een acest caz?<\/p>\n<p>Regulile de rutare sunt acele reguli care, de fapt, stabilesc alegerea rutei. Indiferent de complexitatea sistemului, principiul general de func\u021bionare al acestor reguli r\u0103m\u00e2ne simplu: solicit\u0103rile sunt rutate pe baza unor parametri specifici \u0219i a valorilor antetelor HTTP. <br \/>\nS\u0103 ne uit\u0103m la exemple: <\/p>\n<h3>Kubernetes implicit: trivial \u201e50 la 50\u201d<\/h3>\n<p>\n\u00cen exemplul nostru, vom ar\u0103ta cum s\u0103 folosim simultan \u00een OpenShift dou\u0103 versiuni ale microserviciului, s\u0103 le numim v1 \u0219i v2. Fiecare versiune ruleaz\u0103 \u00een propriul pod Kubernetes, \u0219i \u00een mod implicit aici se aplic\u0103 rutarea ciclic\u0103 echilibrat\u0103 (evenly balanced round robin routing). Fiecare pod prime\u0219te partea sa de solicit\u0103ri \u00een func\u021bie de num\u0103rul de instan\u021be ale microserviciului, adic\u0103 replicilor. Istio permite s\u0103 modific\u0103m manual acest echilibru.<\/p>\n<p>S\u0103 presupunem c\u0103 am desf\u0103\u0219urat pe OpenShift dou\u0103 versiuni ale serviciului nostru de recomand\u0103ri, recommendation-v1 \u0219i recommendation-v2.<br \/>\n\u00cen figura 1 se observ\u0103 c\u0103, atunci c\u00e2nd fiecare serviciu este reprezentat printr-o singur\u0103 instan\u021b\u0103, cererile se alterneaz\u0103 uniform \u00eentre ele: 1-2-1-2-\u2026 A\u0219a func\u021bioneaz\u0103 \u00een mod implicit rutarea \u00een Kubernetes:<\/p>\n<p><img decoding=\"async\" alt=\"Seria de post\u0103ri despre Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/93b00e4845ba930ca4d718b59629377e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Distribu\u021bie ponderat\u0103 \u00eentre versiuni<\/h3>\n<p>\n\u00cen figura 2 este ilustrat ce se \u00eent\u00e2mpl\u0103 dac\u0103 se cre\u0219te num\u0103rul de replici ale serviciului v2 de la una la dou\u0103 (acest lucru se face cu comanda oc scale \u2014replicas=2 deployment\/recommendation-v2). Dup\u0103 cum observ\u0103m, cererile \u00eentre v1 \u0219i v2 sunt acum \u00eemp\u0103r\u021bite \u00eentr-o propor\u021bie de \u201eunu la trei\u201d: 1-2-2-1-2-2-\u2026:<\/p>\n<p><img decoding=\"async\" alt=\"Seria de post\u0103ri despre Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/a432b1cea0e297c99b041137d33fc107.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Ignorarea versiunii cu Istio<\/h3>\n<p>\nIstio permite modificarea u\u0219oar\u0103 a distribu\u021biei cererilor a\u0219a cum dorim. De exemplu, putem direc\u021biona tot traficul doar c\u0103tre recommendation-v1 folosind urm\u0103torul fi\u0219ier yaml Istio:<\/p>\n<p><img decoding=\"async\" alt=\"Seria de post\u0103ri despre Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/db4190d495fb6dcc7c50cb8d28a7ef58.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Aici trebuie s\u0103 ne concentr\u0103m asupra urm\u0103torului aspect: pod-urile sunt selectate conform etichetelor. \u00cen exemplul nostru, este utilizat\u0103 eticheta v1. Parametrul \u201eweight: 100\u201d \u00eenseamn\u0103 c\u0103 100% din trafic va fi rutat c\u0103tre toate pod-urile serviciului care au eticheta v1.<\/p>\n<h3>Distribu\u021bie directiv\u0103 \u00eentre versiuni (Canary Deployment)<\/h3>\n<p>\nMai departe, folosind parametrul weight, putem direc\u021biona traficul c\u0103tre ambele pod-uri, ignor\u00e2nd num\u0103rul de instan\u021be de microservicii care ruleaz\u0103 \u00een fiecare dintre ele. De exemplu, aici direc\u021bion\u0103m 90% din trafic c\u0103tre v1 \u0219i 10% c\u0103tre v2:<\/p>\n<p><img decoding=\"async\" alt=\"Seria de post\u0103ri despre Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/1a28e76ea7d8306fbefecefaad34c931.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Rutare separat\u0103 pentru utilizatorii mobili<\/h3>\n<p>\n\u00cen concluzie, vom ar\u0103ta cum s\u0103 rut\u0103m for\u021bat traficul utilizatorilor mobili c\u0103tre serviciul v2, iar to\u021bi ceilal\u021bi c\u0103tre v1. Pentru aceasta, folosim expresii regulate pentru a analiza valoarea user-agent din antetul cererii:<\/p>\n<p><img decoding=\"async\" alt=\"Seria de post\u0103ri despre Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/efab7f92a1bcfc7e23ae279de57c738e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Acum este r\u00e2ndul vostru<\/h3>\n<p>\nExemplul cu expresii regulate pentru analiza antetelor ar trebui s\u0103 v\u0103 motiveze s\u0103 c\u0103uta\u021bi propriile variante de aplicare a regulilor de rutare Istio. \u00cen plus, posibilit\u0103\u021bile sunt extrem de vaste, deoarece valorile antetelor pot fi formate \u00een codul surs\u0103 al aplica\u021biilor.<\/p>\n<h3>\u0218i aminti\u021bi-v\u0103, c\u0103 Ops, nu Dev<\/h3>\n<p>\nTot ce am ar\u0103tat \u00een exemplele de mai sus se face f\u0103r\u0103 nicio modificare \u00een codul surs\u0103, cu excep\u021bia cazurilor \u00een care trebuie s\u0103 form\u0103m antete speciale pentru cereri. Istio va fi util at\u00e2t dezvoltatorilor, care, de exemplu, \u00eel pot folosi \u00een etapa de testare, c\u00e2t \u0219i speciali\u0219tilor \u00een operarea sistemelor IT, c\u0103rora le va fi de mare ajutor \u00een produc\u021bie.<\/p>\n<p>A\u0219a c\u0103 s\u0103 repet\u0103m leitmotivul acestei serii de post\u0103ri: <b>nu trebuie s\u0103 schimba\u021bi nimic \u00een codul vostru<\/b>. Nu trebuie s\u0103 crea\u021bi noi imagini sau s\u0103 lansa\u021bi noi containe. Totul se realizeaz\u0103 \u00een afara codului.<\/p>\n<h3>Activa\u021bi-v\u0103 imagina\u021bia<\/h3>\n<p>\nDoar imagina\u021bi-v\u0103 ce perspective deschide analiza titlurilor cu ajutorul expresiilor regulate. Dori\u021bi s\u0103 redirec\u021biona\u021bi cel mai mare client al dumneavoastr\u0103 c\u0103tre o versiune special\u0103 a acestora? <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/microservices\/\">microservicii<\/a><\/noindex>? \u041b\u0435\u0433\u043a\u043e! \u041d\u0443\u0436\u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0434\u043b\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 Chrome? \u041d\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430! \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e \u043b\u044e\u0431\u043e\u0439 \u0435\u0433\u043e \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0435.<\/p>\n<h3>\u00cencerca\u021bi singuri<\/h3>\n<p>\nA citi despre Istio, Kubernetes \u0219i OpenShift este una, dar de ce s\u0103 nu le experimenta\u021bi toate cu m\u00e2inile voastre? Echipa <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/\">Red Hat Developer Program<\/a><\/noindex> a preg\u0103tit un ghid detaliat (\u00een englez\u0103) care v\u0103 va ajuta s\u0103 st\u0103p\u00e2ni\u021bi c\u00e2t mai repede aceste tehnologii. Ghidul este de asemenea 100% open source, a\u0219adar este disponibil public. Fi\u0219ierul func\u021bioneaz\u0103 pe macOS, Linux \u0219i Windows, iar codul surs\u0103 este disponibil \u00een variante pentru Java \u0219i node.js (urm\u0103toarele versiuni vor fi disponibile \u0219i \u00een alte limbi). Pur \u0219i simplu deschide\u021bi \u00een browserul dumneavoastr\u0103 repositoare git corespunz\u0103toare. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/redhat-developer-demos\/istio-tutorial\">Red Hat Developer Demo<\/a><\/noindex>.<\/p>\n<h3>\u00cen urm\u0103torul post: abord\u0103m problemele cu elegan\u021b\u0103<\/h3>\n<p>\nAst\u0103zi a\u021bi v\u0103zut de ce sunt capabile regulile de rutare Istio. \u0218i acum, imagina\u021bi-v\u0103 acela\u0219i lucru, dar aplicabil la gestionarea erorilor. Despre asta vom discuta \u00een urm\u0103torul post.<br \/>\n<br \/>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/redhatrussia\/blog\/481182\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441\u0435\u0440\u0438\u044e \u043f\u043e\u0441\u0442\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0441\u0435\u0442\u043a\u0438 Istio Service Mesh \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 Red Hat OpenShift \u0438 Kubernetes. \u0427\u0430\u0441\u0442\u044c \u043f\u0435\u0440\u0432\u0430\u044f, \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u044f\u044f: \u041e\u0431\u044a\u044f\u0441\u043d\u0438\u043c \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044e sidecar-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 Kubernetes \u0438 \u0441\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u043c \u043b\u0435\u0439\u0442\u043c\u043e\u0442\u0438\u0432 \u044d\u0442\u043e\u0439 \u0441\u0435\u0440\u0438\u0438 \u043f\u043e\u0441\u0442\u043e\u0432: \u00ab\u0432\u0430\u043c \u043d\u0435 \u043d\u0430\u0434\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u0432 \u0441\u0432\u043e\u0435\u043c \u043a\u043e\u0434\u0435\u00bb. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c \u043e\u0441\u043d\u043e\u0432\u043e\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0449\u0443\u044e \u0432\u0435\u0449\u044c Istio \u2013 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438. \u041d\u0430 \u043d\u0438\u0445 \u0441\u0442\u0440\u043e\u044f\u0442\u0441\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-54208","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041c\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441\u0435\u0440\u0438\u044e \u043f\u043e\u0441\u0442\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0441\u0435\u0442\u043a\u0438 Istio Service Mesh \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 Red Hat OpenShift \u0438 Kubernetes.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/seriya-postov-po-istio-service-mesh\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0421\u0435\u0440\u0438\u044f \u043f\u043e\u0441\u0442\u043e\u0432 \u043f\u043e Istio Service Mesh | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041c\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441\u0435\u0440\u0438\u044e \u043f\u043e\u0441\u0442\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0441\u0435\u0442\u043a\u0438 Istio Service Mesh \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 Red Hat OpenShift \u0438 Kubernetes.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/seriya-postov-po-istio-service-mesh\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-12-19T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:02:12+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Seria de post\u0103ri despre Istio Service Mesh | ProHoster","description":"\u00cencepem o serie de post\u0103ri \u00een care vom demonstra unele dintre numeroasele capabilit\u0103\u021bi ale re\u021belei de servicii Istio Service Mesh \u00een combina\u021bie cu Red Hat OpenShift \u0219i Kubernetes.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/seriya-postov-po-istio-service-mesh","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0421\u0435\u0440\u0438\u044f \u043f\u043e\u0441\u0442\u043e\u0432 \u043f\u043e Istio Service Mesh | ProHoster","og:description":"\u041c\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441\u0435\u0440\u0438\u044e \u043f\u043e\u0441\u0442\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0441\u0435\u0442\u043a\u0438 Istio Service Mesh \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 Red Hat OpenShift \u0438 Kubernetes.","og:url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/seriya-postov-po-istio-service-mesh","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-12-19T21:00:00+00:00","article:modified_time":"2020-02-18T11:02:12+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"54208","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 10:27:27","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 20:10:32","updated":"2026-01-24 10:27:27","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/54208","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=54208"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/54208\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=54208"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=54208"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=54208"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}