{"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\/pt\/blog\/administrirovanie\/seriya-postov-po-istio-service-mesh","title":{"rendered":"S\u00e9rie de publica\u00e7\u00f5es sobre Istio Service Mesh","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Iniciamos uma s\u00e9rie de postagens em que demonstraremos algumas das muitas possibilidades da malha de servi\u00e7os Istio Service Mesh em conjunto com o Red Hat OpenShift e o Kubernetes.<\/p>\n<p><img decoding=\"async\" alt=\"S\u00e9rie de publica\u00e7\u00f5es sobre Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/b7cc06e1451763db78fdf84764af4b69.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nParte um, de hoje: <\/p>\n<ul>\n<li>Explicaremos o conceito de containers sidecar do Kubernetes e formularemos o tema central desta s\u00e9rie de postagens: <b>\u00abvoc\u00ea n\u00e3o precisa mudar nada no seu c\u00f3digo\u00bb<\/b>.<\/li>\n<li>Apresentaremos o conceito fundamental do Istio \u2013 regras de roteamento. Elas sustentam todas as outras funcionalidades do Istio, pois \u00e9 por meio dessas regras que o tr\u00e1fego \u00e9 direcionado aos microservi\u00e7os, utilizando para isso arquivos YAML externos ao c\u00f3digo dos servi\u00e7os. Tamb\u00e9m discutiremos o esquema de implanta\u00e7\u00e3o Canary Deployment. B\u00f4nus de Ano Novo \u2013 10 aulas interativas sobre Istio.<\/li>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nParte dois, que ser\u00e1 lan\u00e7ada em breve, contar\u00e1 para voc\u00ea: <\/p>\n<ul>\n<li>Como o Istio implementa Pool Ejection em conjunto com o Circuit Breaker e demonstrar\u00e1 como o Istio permite remover da configura\u00e7\u00e3o de balanceamento um pod que est\u00e1 inoperante ou com problemas.<\/li>\n<li>Al\u00e9m disso, abordaremos o tema Circuit Breaker do primeiro post quanto \u00e0 forma como o Istio pode ser utilizado aqui. Vamos mostrar como direcionar o tr\u00e1fego e lidar com erros de rede sem qualquer altera\u00e7\u00e3o no c\u00f3digo dos servi\u00e7os, usando arquivos de configura\u00e7\u00e3o YAML e comandos de terminal.<\/li>\n<\/ul>\n<p>\nParte tr\u00eas: <\/p>\n<ul>\n<li>Uma narrativa sobre rastreamento e monitoramento, que j\u00e1 est\u00e3o integrados ou podem ser facilmente adicionados ao Istio. Vamos mostrar como usar ferramentas como Prometheus, Jaeger e Grafana em conjunto com a escalabilidade do OpenShift, para gerenciar a arquitetura de microservi\u00e7os sem esfor\u00e7o adicional.<\/li>\n<li>Passamos do monitoramento e do tratamento de erros para inseri-los na sistema de forma intencional. Em outras palavras, aprendemos a fazer fault injection sem alterar o c\u00f3digo-fonte, o que \u00e9 muito importante em termos de testes \u2014 pois se alterarmos o c\u00f3digo para isso, h\u00e1 o risco de introduzir novos erros.<\/li>\n<\/ul>\n<p>\nFinalmente, na postagem final sobre Istio Service Mesh:<\/p>\n<ul>\n<li>Vamos para o Lado Sombrio. Mais especificamente, aprenderemos a usar o esquema Dark Launch, onde o c\u00f3digo \u00e9 implantado e testado diretamente em dados de produ\u00e7\u00e3o, mas n\u00e3o afeta o funcionamento do sistema. Aqui, a habilidade do Istio em dividir o tr\u00e1fego se torna muito \u00fatil. E a capacidade de testar em dados de produ\u00e7\u00e3o reais sem impactar o funcionamento do sistema em produ\u00e7\u00e3o \u00e9 a maneira mais convincente de verifica\u00e7\u00e3o.<\/li>\n<li>Partindo do Dark Launch, mostraremos como usar o modelo Canary Deployment para reduzir riscos e simplificar a implementa\u00e7\u00e3o de novo c\u00f3digo. O pr\u00f3prio Canary Deployment n\u00e3o \u00e9 novidade, mas o Istio permite implementar esse esquema com apenas alguns arquivos YAML simples.<\/li>\n<li>Por fim, mostraremos como, com o Istio Egress, dar acesso a servi\u00e7os para aqueles que est\u00e3o fora de seus clusters, para aproveitar as capacidades do Istio ao interagir com a Internet.<\/li>\n<\/ul>\n<p>\nEnt\u00e3o, vamos l\u00e1\u2026<\/p>\n<p><b>O conjunto de ferramentas de monitoramento e gerenciamento do Istio \u00e9 tudo o que voc\u00ea precisa para coordenar microsservi\u00e7os em uma malha de servi\u00e7os. <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/service-mesh\/\">service mesh<\/a><\/noindex>.<\/b><\/p>\n<h3>O que \u00e9 a malha de servi\u00e7os Istio<\/h3>\n<p>\nA malha de servi\u00e7os oferece para um grupo de servi\u00e7os fun\u00e7\u00f5es como monitoramento de tr\u00e1fego, controle de acesso, descoberta, seguran\u00e7a, resili\u00eancia e outras utilidades. O Istio permite fazer tudo isso sem a necessidade de alterar o c\u00f3digo dos pr\u00f3prios servi\u00e7os. Qual \u00e9 o segredo da m\u00e1gica? O Istio conecta um proxy a cada servi\u00e7o na forma de um cont\u00eainer sidecar, ap\u00f3s o qual todo o tr\u00e1fego para esse servi\u00e7o passa pelo proxy, que, de acordo com as pol\u00edticas definidas, decide como, quando e se esse tr\u00e1fego deve realmente chegar ao servi\u00e7o. O Istio tamb\u00e9m possibilita a implementa\u00e7\u00e3o de t\u00e9cnicas avan\u00e7adas de DevOps, como implanta\u00e7\u00f5es can\u00e1rio, disjuntores, inje\u00e7\u00e3o de falhas e muitas outras.<\/p>\n<h3>Como o Istio funciona com cont\u00eaineres e Kubernetes<\/h3>\n<p>\nA malha de servi\u00e7os Istio \u00e9 uma implementa\u00e7\u00e3o sidecar de tudo o que \u00e9 necess\u00e1rio para criar e gerenciar microsservi\u00e7os: monitoramento, rastreamento, disjuntores, roteamento, balanceamento de carga, inje\u00e7\u00e3o de falhas, repeti\u00e7\u00f5es, timeouts, espelhamento, controle de acesso, limita\u00e7\u00e3o de taxa e muito mais. E embora existam muitas bibliotecas hoje para implementar essas fun\u00e7\u00f5es diretamente no c\u00f3digo, com o Istio voc\u00ea pode obter tudo isso sem mudar nada no seu c\u00f3digo.<\/p>\n<p>De acordo com o modelo sidecar, o Istio \u00e9 executado em um cont\u00eainer Linux, que est\u00e1 localizado em um <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/kubernetes\/\">Kubernetes<\/a><\/noindex>-pod com o servi\u00e7o controlado e injeta (inject) e extrai (extract) funcionalidade e informa\u00e7\u00f5es de acordo com a configura\u00e7\u00e3o especificada. Vale a pena ressaltar, essa \u00e9 a sua pr\u00f3pria configura\u00e7\u00e3o, e ela vive fora do seu c\u00f3digo. Portanto, o c\u00f3digo se torna muito mais simples e curto.<\/p>\n<p>Importante ressaltar que a parte operacional dos microservi\u00e7os n\u00e3o est\u00e1 relacionada ao pr\u00f3prio c\u00f3digo, o que significa que a sua execu\u00e7\u00e3o pode ser facilmente delegada a especialistas em TI. De fato, por que um desenvolvedor deveria ser respons\u00e1vel por circuit breakers e fault injection? Reagir, sim, mas trat\u00e1-los e cri\u00e1-los? Se tudo isso for removido do c\u00f3digo, os programadores poder\u00e3o se concentrar totalmente na funcionalidade do aplicativo. E o pr\u00f3prio c\u00f3digo ficar\u00e1 mais curto e simples.<\/p>\n<h3>Malha de servi\u00e7os<\/h3>\n<p>\nIstio, que implementa fun\u00e7\u00f5es de gerenciamento de microservi\u00e7os fora de seu c\u00f3digo, \u00e9 exatamente o que chamamos de conceito de malha de servi\u00e7os (Service Mesh). Em outras palavras, \u00e9 um grupo coordenado de um ou v\u00e1rios bin\u00e1rios que formam uma rede de fun\u00e7\u00f5es de rede.<\/p>\n<h3>Como o Istio funciona com microservi\u00e7os<\/h3>\n<p>\nAqui est\u00e1 como funciona a opera\u00e7\u00e3o de cont\u00eaineres sidecar em conjunto com <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/kubernetes\/\">Kubernetes<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"https:\/\/www.openshift.org\/minishift\/\">Minishift<\/a><\/noindex> em uma vis\u00e3o geral: voc\u00ea inicia uma inst\u00e2ncia do Minishift, cria um projeto para o Istio (vamos cham\u00e1-lo de \"istio-system\"), instala e inicia todos os componentes relacionados ao Istio. Em seguida, conforme cria projetos e pods, voc\u00ea adiciona informa\u00e7\u00f5es de configura\u00e7\u00e3o aos seus deployments, e seus pods come\u00e7am a utilizar o Istio. De forma simplificada, o diagrama se parece com isso:<\/p>\n<p><img decoding=\"async\" alt=\"S\u00e9rie de publica\u00e7\u00f5es sobre Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/feb36ba35442307a8136c395ccae4fd2.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Agora voc\u00ea pode alterar as configura\u00e7\u00f5es do Istio para, por exemplo, implementar fault injection, suporte <noindex><a rel=\"nofollow\" href=\"https:\/\/istio.io\/blog\/2017\/0.1-canary.html\">Canary Deployment<\/a><\/noindex> ou outras funcionalidades do Istio \u2013 e tudo isso sem tocar no c\u00f3digo dos pr\u00f3prios aplicativos. Suponha que voc\u00ea queira redirecionar todo o tr\u00e1fego da web dos usu\u00e1rios do seu maior cliente (Foo Corporation) para a nova vers\u00e3o do site. Para isso, basta criar uma regra de roteamento Istio que procure @foocorporation.com no identificador do usu\u00e1rio e fa\u00e7a o redirecionamento apropriado. Para todos os outros usu\u00e1rios, nada mudar\u00e1. Enquanto isso, voc\u00ea poder\u00e1 testar tranquilamente a nova vers\u00e3o do site. E repare, para isso n\u00e3o \u00e9 necess\u00e1rio envolver os desenvolvedores.<\/p>\n<h3>E ter\u00e1 um custo elevado por isso?<\/h3>\n<p>\nDe forma alguma. O Istio funciona de maneira bastante eficiente, ele \u00e9 escrito em <noindex><a rel=\"nofollow\" href=\"https:\/\/golang.org\/\">Go<\/a><\/noindex> e cria uma sobrecarga muito pequena. Al\u00e9m disso, a poss\u00edvel perda de desempenho online \u00e9 compensada pelo aumento da produtividade dos desenvolvedores. Pelo menos em teoria: n\u00e3o se esque\u00e7a de que o tempo dos desenvolvedores custa caro. Quanto aos custos de software, o Istio \u00e9 um software de c\u00f3digo aberto, portanto pode ser obtido e utilizado gratuitamente.<\/p>\n<h3>Aprenda voc\u00ea mesmo<\/h3>\n<p>\nA equipe Red Hat Developer Experience Team desenvolveu um curso pr\u00e1tico aprofundado <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/redhat-developer-demos\/istio-tutorial\">manual<\/a><\/noindex> sobre Istio (em ingl\u00eas). Funciona em Linux, MacOS e Windows, e o c\u00f3digo est\u00e1 dispon\u00edvel nas op\u00e7\u00f5es Java e Node.js.<\/p>\n<h3>10 aulas interativas sobre Istio<\/h3>\n<p><\/p>\n<h4>M\u00f3dulo 1 \u2014 Para iniciantes<\/h4>\n<p>\n<b>Introdu\u00e7\u00e3o ao Istio<\/b><br \/>\n30 minutos <br \/>\nConhecendo o Service Mesh, aprendendo a instalar o Istio no cluster Kubernetes OpenShift.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/istio-introduction\/\">Come\u00e7ar<\/a><\/noindex> <\/p>\n<p><b>Implanta\u00e7\u00e3o de microsservi\u00e7os no Istio<\/b><br \/>\n30 minutos<br \/>\nUsamos o Istio para implantar tr\u00eas microsservi\u00e7os com Spring Boot e Vert.x.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/deploy-microservices\/\">Come\u00e7ar<\/a><\/noindex> <\/p>\n<h4>M\u00f3dulo 2 \u2013 N\u00edvel intermedi\u00e1rio <\/h4>\n<p>\n<b>Monitoramento e rastreamento no Istio<\/b><br \/>\n60 minutos <br \/>\nExploramos as ferramentas de monitoramento integradas do Istio, m\u00e9tricas configur\u00e1veis e OpenTracing atrav\u00e9s do Prometheus e Grafana.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/monitoring-tracing\/\">Come\u00e7ar<\/a><\/noindex> <\/p>\n<p><b>Roteamento simples no Istio<\/b><br \/>\n60 minutos <br \/>\nAprendemos a gerenciar o roteamento no Istio com regras simples.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/simple-route-rules\/\">Come\u00e7ar <\/a><\/noindex><\/p>\n<p><b>Regras avan\u00e7adas de roteamento<\/b><br \/>\n60 minutos <br \/>\nConhecendo o roteamento inteligente no Istio, gerenciamento de acesso, balanceamento de carga e limita\u00e7\u00e3o de taxa.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/advanced-routerules\/\">Come\u00e7ar<\/a><\/noindex> <\/p>\n<h4>M\u00f3dulo 3 \u2013 Usu\u00e1rio experiente<\/h4>\n<p>\n<b>Inje\u00e7\u00e3o de falhas no Istio<\/b><br \/>\n60 minutos <br \/>\nExploramos os cen\u00e1rios de tratamento de falhas em aplica\u00e7\u00f5es distribu\u00eddas, criando erros HTTP e atrasos de rede, e aprendemos a aplicar engenharia de caos para restaurar o ambiente.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/fault-injection\/\">Come\u00e7ar<\/a><\/noindex> <\/p>\n<p><b>Circuit Breaker no Istio<\/b><br \/>\n30 minutos <br \/>\nInstalamos o Siege para testes de estresse em sites e aprendemos a garantir a resili\u00eancia do backend com reintentos, circuit breaker e rejei\u00e7\u00e3o de pool.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/circuit-breaker\/\">Come\u00e7ar<\/a><\/noindex> <\/p>\n<p><b>Egress e Istio<\/b><br \/>\n10 minutos <br \/>\nUsamos rotas de Egress para criar regras de intera\u00e7\u00e3o entre servi\u00e7os internos e APIs e servi\u00e7os externos.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/egress\/\">Come\u00e7ar<\/a><\/noindex> <\/p>\n<p><b>Istio e Kiali<\/b><br \/>\n15 minutos <br \/>\nAprendemos a usar o Kiali para obter uma vis\u00e3o geral da rede de servi\u00e7os e estudar os fluxos de solicita\u00e7\u00f5es e dados.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/observe-kiali\/\">Come\u00e7ar<\/a><\/noindex> <\/p>\n<p>Mutual TLS no Istio<br \/>\n15 minutos <br \/>\nCriamos um Gateway do Istio e um VirtualService, em seguida, estudamos detalhadamente o mutual TLS (mTLS) e suas configura\u00e7\u00f5es.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/mtls\/\">Come\u00e7ar<\/a><\/noindex> <\/p>\n<h4>M\u00f3dulo 3.1 \u2014 Imers\u00e3o profunda: Istio Service Mesh para microsservi\u00e7os<\/h4>\n<p>\n<img decoding=\"async\" alt=\"S\u00e9rie de publica\u00e7\u00f5es sobre Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/1a2bb62b0bbd46fa9b42be1ccbfddfa6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nSobre o que \u00e9 o livro:<\/p>\n<ul>\n<li>O que \u00e9 uma rede de servi\u00e7os service mesh.<\/li>\n<li>O sistema Istio e seu papel na arquitetura de microsservi\u00e7os.<\/li>\n<li>Uso do Istio ao resolver as seguintes tarefas:\n<ul>\n<li>Alta disponibilidade;<\/li>\n<li>Roteamento;<\/li>\n<li>Testes de caos;<\/li>\n<li>Seguran\u00e7a;<\/li>\n<li>Coleta de telemetria por meio de rastreamento, m\u00e9tricas e 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\/\">Baixar livro<\/a><\/noindex><\/p>\n<h3>S\u00e9rie de artigos sobre redes de servi\u00e7os e 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\/\">Regras de roteamento do Istio: direcionando solicita\u00e7\u00f5es de servi\u00e7o para onde \u00e9 necess\u00e1rio<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/03\/20\/istio-circuit-breaker-pool-ejection\/\">Circuit Breakers no Istio: tratando a Eje\u00e7\u00e3o de Pool<\/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 no Istio: quando a falha \u00e9 uma op\u00e7\u00e3o<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/04\/03\/istio-tracing-monitoring\/\">Rastreamento e monitoramento no Istio: para onde tudo est\u00e1 indo e qu\u00e3o r\u00e1pido<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/04\/10\/istio-chaos-engineering\/\">Engenharia do caos no Istio: assim foi planejado<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/04\/17\/istio-dark-launch-secret-services\/\">Dark Launch no Istio: servi\u00e7os secretos<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/04\/24\/istio-smart-canary-launch\/\">Canary Deployment no Istio: simplificando a implementa\u00e7\u00e3o<\/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: sa\u00edda atrav\u00e9s da loja de souvenirs<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Experimente por conta pr\u00f3pria<\/h3>\n<p>\nEsta s\u00e9rie de posts n\u00e3o tem o objetivo de proporcionar uma imers\u00e3o profunda no mundo do Istio. Queremos apenas apresentar a voc\u00ea o conceito e, talvez, inspir\u00e1-lo a experimentar o Istio por conta pr\u00f3pria. Voc\u00ea pode fazer isso totalmente gratuito, e a Red Hat oferece todas as ferramentas necess\u00e1rias para come\u00e7ar a dominar o OpenShift, Kubernetes, cont\u00eaineres Linux e Istio, a saber: <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\">nosso guia sobre Istio<\/a><\/noindex> e outros recursos em nosso <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/service-mesh\/\">micro site sobre Service Mesh<\/a><\/noindex>. N\u00e3o deixe para depois, comece hoje mesmo!<\/p>\n<h3>Regras de roteamento do Istio: direcionando solicita\u00e7\u00f5es de servi\u00e7o para onde \u00e9 necess\u00e1rio<\/h3>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/products\/openshift\/overview\/\">OpenShift<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/kubernetes\/\">Kubernetes<\/a><\/noindex> se saem muito bem ao direcionar <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/microservices\/\">micro servi\u00e7os<\/a><\/noindex> para os pods corretos. Essa \u00e9 uma das principais finalidades do Kubernetes \u2013 roteamento e balanceamento de carga. E se voc\u00ea precisar de um roteamento mais sutil e sofisticado? Por exemplo, para usar simultaneamente duas vers\u00f5es de um micro servi\u00e7o. Como as regras de roteamento do Istio podem ajudar aqui?<\/p>\n<p>Regras de roteamento \u2013 s\u00e3o regras que, de fato, determinam a escolha da rota. Independentemente do n\u00edvel de complexidade do sistema, o princ\u00edpio geral de funcionamento dessas regras permanece simples: as solicita\u00e7\u00f5es s\u00e3o roteadas com base em determinados par\u00e2metros e valores de cabe\u00e7alhos HTTP. <br \/>\nVamos ver alguns exemplos: <\/p>\n<h3>Kubernetes padr\u00e3o: trivial \"50 a 50\"<\/h3>\n<p>\nNo nosso exemplo, mostraremos como usar simultaneamente duas vers\u00f5es de um micro servi\u00e7o no OpenShift, chamaremos de v1 e v2. Cada vers\u00e3o roda em seu pr\u00f3prio pod do Kubernetes, e por padr\u00e3o, aqui funciona um roteamento ciclo balanceado uniformemente (evenly balanced round robin routing). Cada pod recebe sua parte de solicita\u00e7\u00f5es conforme o n\u00famero de seus inst\u00e2ncias de micro servi\u00e7o, ou seja, r\u00e9plicas. O Istio permite que voc\u00ea altere esse equil\u00edbrio manualmente.<\/p>\n<p>Suponha que tenhamos implementado no OpenShift duas vers\u00f5es de nosso servi\u00e7o de recomenda\u00e7\u00e3o, recommendation-v1 e recommendation-v2.<br \/>\nNa Fig. 1, podemos ver que, quando cada servi\u00e7o \u00e9 representado por uma inst\u00e2ncia, as solicita\u00e7\u00f5es alternam igualmente entre eles: 1-2-1-2-\u2026 \u00c9 assim que o roteamento do Kubernetes funciona por padr\u00e3o:<\/p>\n<p><img decoding=\"async\" alt=\"S\u00e9rie de publica\u00e7\u00f5es sobre Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/93b00e4845ba930ca4d718b59629377e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Distribui\u00e7\u00e3o ponderada entre vers\u00f5es<\/h3>\n<p>\nNa Fig. 2, \u00e9 mostrado o que acontece se aumentarmos o n\u00famero de r\u00e9plicas do servi\u00e7o v2 de uma para duas (isso \u00e9 feito com o comando oc scale \u2014replicas=2 deployment\/recommendation-v2). Como podemos ver, as solicita\u00e7\u00f5es entre v1 e v2 agora s\u00e3o divididas na propor\u00e7\u00e3o de \"um para tr\u00eas\": 1-2-2-1-2-2-\u2026:<\/p>\n<p><img decoding=\"async\" alt=\"S\u00e9rie de publica\u00e7\u00f5es sobre Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/a432b1cea0e297c99b041137d33fc107.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Ignorar vers\u00f5es com Istio<\/h3>\n<p>\nO Istio permite alterar facilmente a distribui\u00e7\u00e3o das solicita\u00e7\u00f5es da maneira que precisamos. Por exemplo, enviar todo o tr\u00e1fego apenas para recommendation-v1 com o seguinte arquivo yaml do Istio:<\/p>\n<p><img decoding=\"async\" alt=\"S\u00e9rie de publica\u00e7\u00f5es sobre Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/db4190d495fb6dcc7c50cb8d28a7ef58.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Aqui, \u00e9 importante notar o seguinte: os pods s\u00e3o selecionados de acordo com as etiquetas. Em nosso exemplo, usamos a etiqueta v1. O par\u00e2metro 'weight: 100' indica que 100% do tr\u00e1fego ser\u00e1 roteado para todos os pods do servi\u00e7o que possuem a etiqueta v1.<\/p>\n<h3>Distribui\u00e7\u00e3o diretiva entre vers\u00f5es (Canary Deployment)<\/h3>\n<p>\nA seguir, usando o par\u00e2metro weight, podemos direcionar o tr\u00e1fego para ambos os pods, ignorando o n\u00famero de inst\u00e2ncias dos microsservi\u00e7os em execu\u00e7\u00e3o em cada um deles. Por exemplo, aqui estamos direcionando 90% do tr\u00e1fego para v1 e 10% para v2:<\/p>\n<p><img decoding=\"async\" alt=\"S\u00e9rie de publica\u00e7\u00f5es sobre Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/1a28e76ea7d8306fbefecefaad34c931.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Roteamento separado para usu\u00e1rios m\u00f3veis<\/h3>\n<p>\nPara concluir, vamos mostrar como for\u00e7ar o roteamento do tr\u00e1fego dos usu\u00e1rios m\u00f3veis para o servi\u00e7o v2, enquanto todos os outros s\u00e3o direcionados para v1. Para isso, analisamos o valor do user-agent no cabe\u00e7alho da solicita\u00e7\u00e3o usando express\u00f5es regulares:<\/p>\n<p><img decoding=\"async\" alt=\"S\u00e9rie de publica\u00e7\u00f5es sobre Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/efab7f92a1bcfc7e23ae279de57c738e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Agora \u00e9 sua vez<\/h3>\n<p>\nO exemplo com express\u00f5es regulares para analisar cabe\u00e7alhos deve motiv\u00e1-lo a buscar suas pr\u00f3prias op\u00e7\u00f5es de aplica\u00e7\u00e3o das regras de roteamento do Istio. Afinal, as possibilidades aqui s\u00e3o bastante amplas, pois os valores dos cabe\u00e7alhos podem ser formados no c\u00f3digo-fonte das aplica\u00e7\u00f5es.<\/p>\n<h3>E lembre-se, Ops, n\u00e3o Dev<\/h3>\n<p>\nTudo o que mostramos nos exemplos acima pode ser feito sem a menor altera\u00e7\u00e3o no c\u00f3digo-fonte, exceto nos casos em que \u00e9 necess\u00e1rio formar cabe\u00e7alhos de solicita\u00e7\u00e3o especiais. O Istio pode ser \u00fatil tanto para desenvolvedores, que, por exemplo, podem us\u00e1-lo na fase de teste, quanto para profissionais de opera\u00e7\u00f5es de TI, que se beneficiar\u00e3o enormemente em produ\u00e7\u00e3o.<\/p>\n<p>Ent\u00e3o, vamos repetir o leitmotiv desta s\u00e9rie de posts: <b>voc\u00ea n\u00e3o precisa mudar nada em seu c\u00f3digo<\/b>. N\u00e3o \u00e9 necess\u00e1rio criar novas imagens ou iniciar novos cont\u00eaineres. Tudo isso \u00e9 implementado fora do c\u00f3digo.<\/p>\n<h3>Deixe sua imagina\u00e7\u00e3o fluir<\/h3>\n<p>\nImagine as possibilidades que a an\u00e1lise de t\u00edtulos com express\u00f5es regulares pode abrir. Quer redirecionar seu maior cliente para uma vers\u00e3o especial do seu <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/microservices\/\">microsservi\u00e7os<\/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>Experimente por conta pr\u00f3pria<\/h3>\n<p>\nLer sobre Istio, Kubernetes e OpenShift \u00e9 uma coisa, mas por que n\u00e3o experimentar tudo com suas pr\u00f3prias m\u00e3os? A equipe <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/\">Red Hat Developer Program<\/a><\/noindex> preparou um guia detalhado (em ingl\u00eas) que o ajudar\u00e1 a dominar rapidamente essas tecnologias. O guia tamb\u00e9m \u00e9 100% open source, por isso est\u00e1 dispon\u00edvel publicamente. O arquivo funciona no macOS, Linux e Windows, e o c\u00f3digo-fonte est\u00e1 dispon\u00edvel em vers\u00f5es em Java e node.js (em breve haver\u00e1 vers\u00f5es em outras linguagens). Basta abrir no seu navegador o reposit\u00f3rio git correspondente <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/redhat-developer-demos\/istio-tutorial\">Red Hat Developer Demo<\/a><\/noindex>.<\/p>\n<h3>No pr\u00f3ximo post: resolvendo problemas de forma elegante<\/h3>\n<p>\nHoje voc\u00ea viu do que s\u00e3o capazes as regras de roteamento do Istio. Agora imagine tudo isso, mas aplic\u00e1vel ao tratamento de erros. \u00c9 sobre isso que falaremos no pr\u00f3ximo post.<br \/>\n<br \/>Fonte: <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.3 - 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\/pt\/blog\/administrirovanie\/seriya-postov-po-istio-service-mesh\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\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\/pt\/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\udd47S\u00e9rie de posts sobre Istio Service Mesh | ProHoster","description":"Iniciamos uma s\u00e9rie de postagens em que demonstraremos algumas das muitas possibilidades da malha de servi\u00e7os Istio Service Mesh em conjunto com o Red Hat OpenShift e o Kubernetes.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/seriya-postov-po-istio-service-mesh","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/54208","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=54208"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/54208\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=54208"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=54208"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=54208"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}