Service Mesh on Red Hat OpenShift on IBM Cloud
Este tutorial pode incorrer em custos. Use o Estimador de custos para gerar uma estimativa do custo baseada em seu uso projetado.
Este tutorial orienta você sobre como instalar o Red Hat OpenShift Service Mesh junto com os microsserviços de um aplicativo de amostra chamado BookInfo em um cluster Red Hat OpenShift on IBM Cloud. Você também aprenderá como configurar um gateway de ingresso do Istio para expor um serviço fora da malha de serviços, executar o gerenciamento de tráfego para configurar tarefas importantes, como teste A/B e implementações canárias, proteger sua comunicação de microsserviço e o uso de métricas, criação de log e rastreio para observar serviços.
Com base no projeto open source Istio, Red Hat OpenShift O Service Mesh adiciona uma camada transparente sobre os aplicativos distribuídos existentes. Red Hat OpenShift O Serviço Mesh fornece uma plataforma para insight comportamental e controle operacional sobre seus microserviços em rede em uma malha de serviços. Com Red Hat OpenShift, você pode conectar, proteger e monitorar microsserviços em seu cluster Red Hat OpenShift on IBM Cloud.
O Istio é uma plataforma aberta para conectar, proteger, controlar e observar microsserviços, também conhecidos como service mesh, em plataformas de nuvem como o Kubernetes em Red Hat OpenShift on IBM Cloud.
Objetivos
- Instale o Red Hat OpenShift Service Mesh em seu cluster
- Implementar o aplicativo de amostra BookInfo
- Usar métricas, criação de log e rastreio para observar serviços
- Configurar o Istio Ingress Gateway
- Executar o gerenciamento de tráfego simples, como teste A/B e implementações canário
- Proteger sua malha usando mTLS
- O administrador provisiona um cluster Red Hat OpenShift on IBM Cloud e instala o Service Mesh Operator junto com outros Telemetry Operators.
- O administrador cria um namespace
istio-system(projeto) e criaServiceMeshControlPlane. - O administrador cria um namespace
bookinfocom injeção automática de sidecar ativada e implementa o app BookInfo (com quatro microsserviços separados) no Service Mesh. - O administrador expõe o app para tráfego externo com o Istio Ingress Gateway.
- O usuário acessa de forma segura (HTTPS) o aplicativo por meio do navegador.
- O administrador monitora o funcionamento e o desempenho dos microsserviços usando as métricas, os rastreios e os logs.
Antes de Iniciar
Este tutorial requer:
- CLI do IBM Cloud,
- Plug-in do IBM Cloud Kubernetes Service (
kubernetes-service),
- Plug-in do IBM Cloud Kubernetes Service (
ocpara interagir com o OpenShift.
Você encontrará instruções para fazer download e instalar essas ferramentas para o seu ambiente operacional no guia Introdução aos tutoriais.
Para evitar a instalação dessas ferramentas, é possível usar o Cloud Shell no console da IBM Cloud. Use oc version para assegurar que a versão do CLI do Red Hat OpenShift on IBM Cloud corresponda à sua versão
de cluster (4.13.x). Se eles não corresponderem, instale a versão correspondente seguindo estas instruções.
Crie um cluster Red Hat OpenShift on IBM Cloud
Com o Red Hat OpenShift on IBM Cloud, você tem uma maneira rápida e segura de conteinerizar e implementar cargas de trabalho corporativas em clusters. os clusters Red Hat OpenShift on IBM Cloud são baseados na orquestração de contêineres Kubernetes, que oferece consistência e flexibilidade para as operações do ciclo de vida do desenvolvimento.
Nesta seção, você provisionará um cluster Red Hat OpenShift on IBM Cloud em uma (1) zona com dois (2) nós do trabalhador:
- Faça login em sua conta IBM Cloud e crie um cluster Red Hat OpenShift on IBM Cloud a partir do Red Hat OpenShift on IBM Cloud página de criação de cluster.
- Defina o serviço de orquestração como a versão 4.13.x do Red Hat OpenShift on IBM Cloud.
- Selecione sua autorização OCP.
- Em Infraestrutura, escolha Clássica ou VPC
- Para o Red Hat OpenShift on IBM Cloud na infraestrutura VPC, é necessário criar uma VPC e uma sub-rede antes de criar o cluster Kubernetes. Crie ou inspecione o VPC desejado lembrando-se do seguinte (consulte as instruções fornecidas em
Criando um cluster VPC padrão):
- Uma sub-rede que pode ser usada para esse tutorial; anote a zona e o nome da sub-rede
- O gateway público é anexado à sub-rede
- Selecione a VPC desejada
- Selecione um serviço Cloud Object Storage existente ou crie um se necessário e, em seguida, selecione
- Para o Red Hat OpenShift on IBM Cloud na infraestrutura VPC, é necessário criar uma VPC e uma sub-rede antes de criar o cluster Kubernetes. Crie ou inspecione o VPC desejado lembrando-se do seguinte (consulte as instruções fornecidas em
Criando um cluster VPC padrão):
- Em Local
- Para o Red Hat OpenShift on IBM Cloud na infraestrutura VPC
- Selecione um Grupo de recursos
- Desmarque as zonas inaplicáveis
- Na zona desejada, verifique o nome de sub-rede desejado e, se não estiver presente, clique no lápis de edição para selecionar o nome de sub-rede desejado
- Para o Red Hat OpenShift on IBM Cloud na infraestrutura Clássica, siga as instruções em Criando um cluster clássico padrão.
- Selecione um Grupo de recursos
- Selecione uma Geografia
- Selecione Zona única como Disponibilidade
- Escolha um Data center
- Para o Red Hat OpenShift on IBM Cloud na infraestrutura VPC
- Em Conjunto de trabalhadores,
- Selecione 4 vCPUs com Memória de 16 GB como o tipo
- Selecione 2 Nós do trabalhador por data center para este tutorial (clássico somente: deixe Criptografar disco local)
- Em Detalhes do recurso, defina o nome do cluster como
-myopenshiftcluster , substituindo<your-initials>por suas próprias iniciais. - Clique em Criar para prover um cluster Red Hat OpenShift on IBM Cloud.
Anote o grupo de recursos selecionado acima. Esse mesmo grupo de recursos será usado para todos os recursos neste laboratório.
Acessar o cluster usando o IBM Cloud Shell
A Red Hat OpenShift on IBM Cloud Container Platform CLI expõe comandos para gerenciar seus
aplicativos, bem como ferramentas de nível inferior para interagir com cada componente do seu sistema. A CLI está disponível usando o comando oc.
Para evitar a instalação das ferramentas da linha de comandos, a abordagem recomendada é utilizar o IBM Cloud Shell.
O Shell do IBM Cloud é uma área de trabalho de shell baseada em nuvem que é possível acessar por meio de seu navegador. Ele é pré-configurado com a CLI completa do IBM Cloud, além de muitos plug-ins e ferramentas que podem ser usados para gerenciar apps, recursos e infraestruturas.
Nesta etapa, você usará o shell do IBM Cloud e configurará o oc para apontar para o cluster designado a você.
- Quando o cluster estiver pronto, na página de visão geral do cluster, clique no console da Web OpenShift para abrir o console. Assegure-se de não fechar essa janela/guia
- No console da web, clique no menu suspenso abaixo do seu nome, no canto direito da tela, e selecione Copiar comando de login. Em seguida, clique no link Exibir token.
- Copie o texto em Efetuar login com este token.
- Em uma nova guia/janela do navegador, abra o IBM Cloud Shell para iniciar uma nova sessão. Depois de iniciar a sessão, você deve ser conectado automaticamente à CLI do IBM Cloud. Assegure-se de não fechar essa janela/guia.
- Verifique a versão da CLI do OpenShift:
oc version - A versão precisa ser, no mínimo, 4.13.x. Caso contrário, instale a versão mais recente seguindo estas instruções.
- Cole o comando de login copiado do console da web e pressione Enter. Depois de efetuar login usando o comando
oc login, execute o comando abaixo para ver todos os namespaces em seu clusteroc get ns - Em seu Cloud Shell, crie um projeto chamado "bookinfo" com o comando
oc new-project. O projeto manterá o aplicativo criado após instalar a malha de serviço.
No Red Hat OpenShift, um projeto é um namespace do Kubernetes com anotações adicionais.oc new-project bookinfo
Instalar o Service Mesh - Istio
Nesta seção, você instalará o Service Mesh - Istio no cluster. A instalação do Service Mesh envolve a instalação dos Operadores do Elasticsearch, do Jaeger, do Kiali e do Service Mesh, a criação e o gerenciamento de um recurso ServiceMeshControlPlane para implementar o plano de controle e a criação de um recurso ServiceMeshMemberRoll para especificar os namespaces associados ao Service Mesh.
Alguns dos projectos têm vários operadores. Tenha cuidado para instalar os especificados abaixo.
Elasticsearch - Baseado no projeto Elasticsearch de software livre que permite configurar e gerenciar um cluster do Elasticsearch para rastreio e criação de log com o Jaeger.
Jaeger - Baseado no projeto Jaeger de software livre, permite executar o rastreio para monitorar e solucionar problemas de transações em sistemas distribuídos complexos.
Kiali - Baseado no projeto Kiali de software livre, fornece observabilidade para sua malha de serviços. Ao usar o Kiali, é possível visualizar configurações, monitorar o tráfego, visualizar e analisar rastreios em um único console.
Red Hat OpenShift Service Mesh- Baseado no projeto de código aberto Istio, permite conectar, proteger, controlar e observar os microsserviços que compõem seus aplicativos.
Instalar os Operadores
- Na área de janela esquerda do Console da web Red Hat OpenShift, selecione Administrador na lista suspensa.
- Selecione Operadores e depois OperatorHub.
- Procure por Operador OpenShift Elasticsearch, clique no ladrilho, clique em Instalar, deixe a seleção padrão e clique em Instalar.
- Repita as etapas 2 e 3 acima para instalação de operadores,
- Plataforma de rastreio distribuído do Red Hat OpenShift
- Operador Kiali (fornecido pela Red Hat)
- Red Hat OpenShift Service Mesh.
Isso instala os Operadores no projeto padrão openshift-operators e disponibiliza os Operadores para todos os projetos no cluster.
Implementação do plano de controle Red Hat OpenShift Plano de controle do Service Mesh
O operador Red Hat OpenShift Service Mesh usa um recurso ServiceMeshControlPlane para determinar como instalar o Istio e quais componentes você deseja. Vamos criar esse recurso agora.
- Crie um novo projeto acessando Início na área de janela esquerda do console da web, clique em Projetos e depois em Criar projeto.
- Insira
istio-systemno Nome e clique em Criar. - Navegue até Operadores e clique em Operadores instalados.
- Selecione
istio-systemno menu Projeto na barra superior. - Clique em Red Hat OpenShift Serviço Mesh. Caso não o veja, aguarde alguns minutos e atualize.
- Na guia Detalhes, no bloco Plano de controle da malha de serviços do Istio, clique em Criar instância ou em Criar ServiceMeshControlPlane.
- Em seguida, clique em Criar. O Operador cria Pods, serviços e componentes de plano de controle do Service Mesh com base em seus parâmetros de configuração.
- Para certificar-se de que o Service Mesh Control Plane foi instalado adequadamente, clique em Básico em
Namena lista. Na página subsequente, você deverá ver Componentes prontos. Além disso, quando você rolar para a seção Condições da página, você deverá ver o motivoComponentsReadye uma mensagemAll component deployments are Available
Criar um ServiceMeshMemberRoll
O recurso ServiceMeshMemberRoll é usado para especificar os namespaces associados ao Service Mesh.
- Navegue para Operadores → Operadores instalados novamente.
- Clique em Red Hat OpenShift Serviço Mesh.
- Na guia Detalhes, no bloco Inscrição de membro da malha de serviços do Istio, clique em Criar instância ou em Criar ServiceMeshMemberRoll e selecione Visualização de YAML
- Mude
your-projectparabookinfoe exclua a última linha (- another-of-your-projects). Após as edições, o YAML deve se parecer com algo assim:apiVersion: maistra.io/v1 kind: ServiceMeshMemberRoll metadata: name: default namespace: istio-system spec: members: - bookinfo - Em seguida, clique em Criar.
Você instalou com êxito o Istio em seu cluster.
Implementar o aplicativo BookInfo no Service Mesh
O aplicativo BookInfo exibe informações sobre um livro, semelhante a uma única entrada de catálogo de uma livraria on-line. A página exibe uma descrição do manual, detalhes do manual (ISBN, número de páginas, entre outros) e algumas revisões do manual.
O aplicativo Bookinfo é dividido em quatro microsserviços separados:
- productpage. O microsserviço produtpage chama os detalhes e revisa os microsserviços para preencher a página.
- detalhes. O microsserviço details contém informações do manual.
- reviews. O microsserviço reviews contém revisões do manual. Ele também chama o microsserviço ratings.
- ratings. O microsserviço ratings contém informações de classificação do manual que acompanham uma revisão do manual.
Há três versões do microsserviço reviews:
- A versão v1 não chama o serviço de classificações.
- A versão v2 chama o serviço de classificações e exibe cada classificação como uma a cinco estrelas pretas.
- A versão v3 chama o serviço de classificações e exibe cada classificação como 1 a 5 estrelas vermelhas.
A arquitetura de ponta a ponta do aplicativo é mostrada abaixo.
Red Hat OpenShift O Service Mesh depende dos sidecars do Envoy no pod do aplicativo para fornecer recursos do Service Mesh ao aplicativo. É possível ativar a injeção automática de sidecar ou gerenciá-la manualmente. A injeção automática usando a anotação é a maneira recomendada.
-
Implemente o aplicativo Bookinfo no projeto
bookinfo, aplicando o arquivo bookinfo.yaml no cluster do Red Hat OpenShift. Isso implementa todos os aplicativos de microsserviço, incluindo versões v1, v2 e v3 do app de revisões.oc apply -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/platform/kube/bookinfo.yamlO arquivo
bookinfo.yamlé anotado comosidecar.istio.io/inject: "true"para permitir a injeção automática do sidecar do Istio para Red Hat OpenShift Service Mesh. Portanto, esses pods também incluirão um sidecar do Envoy ao serem iniciados no cluster.Uma instalação do Red Hat OpenShift Service Mesh difere das instalações da comunidade Istio upstream de várias maneiras. Consulte este link que compara o Service Mesh e o Istio. Por padrão, Istio injeta o sidecar se você tiver rotulado o projeto
istio-injection=enabled. Red Hat OpenShift O Serviço Mesh manipula isso de forma diferente e requer que você opte em ter o sidecar automaticamente injetado em uma implementação, portanto, não é necessário rotular o projeto. Isso evitará a injeção de um sidecar, caso ele não seja desejado (por exemplo, nos pods de construção ou implementação). -
Verifique se os pods estão funcionando.
oc get podsAmostra de saída:
NAME READY STATUS RESTARTS AGE details-v1-789c5f58f4-9twtw 2/2 Running 0 4m12s productpage-v1-856c8cc5d8-xcx2q 2/2 Running 0 4m11s ratings-v1-5786768978-tr8z9 2/2 Running 0 4m12s reviews-v1-5874566865-mxfgm 2/2 Running 0 4m12s reviews-v2-86865fc7d9-mf6t4 2/2 Running 0 4m12s reviews-v3-8d4cbbbbf-rfjcz 2/2 Running 0 4m12sObserve que cada pod do Bookinfo contém dois contêineres. Um é o contêiner do Bookinfo e o outro é o sidecar de proxy do Bookinfo.
Seu app Bookinfo está em execução, mas não é possível acessá-lo porque o serviço ainda não está configurado para receber tráfego externo. Na próxima seção, você exporá o serviço productpage para permitir o tráfego recebido.
Expor o app com o Istio Ingress Gateway e a Rota
Por padrão, os componentes implementados na malha de serviços não são expostos fora do cluster. Um recurso Ingress Gateway pode ser criado para permitir solicitações externas por meio do Istio Ingress Gateway para os serviços auxiliares.
- Configure a rota padrão de Bookinfo com o Istio Ingress Gateway.
oc create -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/networking/bookinfo-gateway.yaml - Obtenha a ROTA do Istio Ingress Gateway.
oc get routes -n istio-system istio-ingressgateway - Salve o endereço do HOST recuperado na etapa anterior, pois ele será usado para acessar o app BookInfo em partes posteriores do tutorial. Crie uma variável de ambiente chamada
$INGRESS_HOSTcom o endereço do HOST.Visite o aplicativo acessandoexport INGRESS_HOST=<HOST>http://$INGRESS_HOST/productpageem uma nova guia. Se você continuar pressionando Atualizar, deverá ver diferentes versões da página em ordem aleatória (v1 - sem estrelas, v2 - estrelas pretas, v3 - estrelas vermelhas). Mantenha a guia do navegador aberta para mais tarde.
Observar a telemetria de serviço: métricas e rastreio
Os recursos de rastreio e métricas do Istio são projetados para fornecer insight amplo e granular no funcionamento de todos os serviços. A função do Istio como uma malha de serviços torna-a a origem de dados ideal para informações de observabilidade, especificamente em um ambiente de microsserviços. À medida que as solicitações passam por vários serviços, a identificação de gargalos de desempenho torna-se cada vez mais difícil ao usar técnicas tradicionais de depuração. O rastreio distribuído fornece uma visualização holística de solicitações que transitam por vários serviços, permitindo a identificação imediata de problemas de latência. Com o Istio, o rastreio distribuído vem por padrão. Isso exporá informações de latência, nova tentativa e falha de cada hop em uma solicitação.
Visualizar métricas com o Grafana
O Grafana permite consultar, visualizar, alertar e entender suas métricas, independentemente do local no qual elas estão armazenadas.
-
No console da web do Red Hat OpenShift on IBM Cloud,
- Na área de janela esquerda, em Rede, clique em Rotas
- Selecione Projeto: istio-system na barra superior
- Clique na URL (Local) próxima a grafana
- Faça login em Red Hat OpenShift on IBM Cloud e conceda as permissões solicitadas para ver o painel Grafana.
-
Clique no menu Painel no painel de navegação esquerdo, selecione a guia Gerenciar e, em seguida, Istio e Painel de serviço do Istio.
-
Selecione
productpage.bookinfo.svc.cluster.localno menu suspenso Serviço. -
Acesse a guia/janela do IBM Cloud Shell e gere uma pequena carga para o app enviando tráfego ao local do host de ingresso que você configurou na última seção.
for i in {1..20}; do sleep 0.5; curl -I $INGRESS_HOST/productpage; done
Abra cada torção para ver mais do painel. Escolha serviços diferentes na lista suspensa do Serviço Esse painel do Grafana fornece métricas para cada carga de trabalho. Explore também os outros painéis fornecidos.
Observar o Service Mesh com Kiali
Kiali é um projeto de software livre instalado como um complemento na parte superior do Istio para visualizar sua malha de serviços. O Kiali fornece um insight mais profundo sobre como os microsserviços interagem entre si e fornece recursos, como disjuntores e taxas de solicitações para seus serviços.
- No console da web do Red Hat OpenShift on IBM Cloud,
- Na área de janela esquerda, em Rede, clique em Rotas
- Selecione istio-system como seu projeto na barra superior
- Clique na URL (Local) ao lado de kiali e, se solicitado, clique em Login com OpenShift
- Clique no Gráfico na área de janela esquerda e selecione os namespaces
bookinfoeistio-systemna barra superior para ver um gráfico de app com versão visual dos vários serviços na malha do Istio. - Para ver as taxas de solicitação, clique em Exibir e selecione Taxa de tráfego.
- Em um guia/janela diferente, visite a URL do aplicativo BookInfo e atualize a página várias vezes para gerar alguma carga ou execute o script de carregamento na seção anterior para gerar carga.
- Agora, confira o Gráfico Kiali para ver as solicitações por segundo.
O Kiali tem uma série de visualizações para ajudar a visualizar seus serviços. Clique nas várias guias para explorar o gráfico de serviço e as várias visualizações para cargas de trabalho, aplicativos e serviços.
Executar o gerenciamento de tráfego
As regras de roteamento de tráfego do Istio permitem controlar facilmente o fluxo de chamadas de tráfego e de API entre os serviços. O Istio simplifica a configuração de propriedades de nível de serviço, como disjuntores, tempos limite e novas tentativas, além de facilitar a configuração de tarefas importantes, como teste A/B, lançamentos canários e lançamentos montados com divisões de tráfego baseadas em porcentagem. Ele também fornece recursos de recuperação de falha prontos para usar que ajudam a tornar seu aplicativo mais robusto contra falhas de serviços dependentes ou da rede.
O modelo de gerenciamento de tráfego do Istio conta com os proxies do Envoy (sidecars) que são implementados junto com seus serviços. Todo o tráfego que os serviços enviam e recebem (tráfego de plano de dados) é transmitido por proxy por meio do Envoy, facilitando direcionar e controlar o tráfego em torno da malha sem fazer mudanças nos serviços.
O Pilot converte regras de alto nível em configurações de baixo nível e distribui essa configuração para instâncias do Envoy. O Pilot usa três tipos de recursos de configuração para gerenciar o tráfego em sua malha de serviço: Serviços virtuais, regras de destino e entradas de serviço.
Teste A/B com o Istio
O teste A/B é um método de execução de testes idênticos em duas versões de serviço separadas para determinar qual executa melhor. Para evitar que o Istio execute o comportamento de roteamento padrão entre o serviço original e o modernizado, defina as regras a seguir:
-
Execute o comando a seguir para criar regras de destino padrão para os serviços do Bookinfo,
oc create -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/networking/destination-rule-all.yamlUma DestinationRule define políticas que se aplicam ao tráfego destinado a um serviço após a ocorrência do roteamento. Essas regras especificam a configuração para o balanceamento de carga, o tamanho do conjunto de conexões do sidecar e as configurações de detecção de valores discrepantes para detectar e despejar hosts inoperantes do conjunto de balanceamento de carga. Qualquer
hostesubsetde destino referenciados em uma regraVirtualServicedevem ser definidos em umaDestinationRulecorrespondente. -
Um VirtualService define um conjunto de regras de roteamento de tráfego a serem aplicadas quando um host é direcionado. Cada regra de roteamento define critérios de correspondência para o tráfego de um protocolo específico. Se o tráfego for correspondido, ele será enviado para um serviço de destino nomeado (ou subconjunto/versão dele) definido no registro. Execute o comando abaixo para enviar todo o tráfego de revisões para a v1:
oc create -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/networking/virtual-service-all-v1.yamlO
VirtualServicedefine uma regra que captura todo o tráfego HTTP que vem para o serviço de revisões e roteia 100% dele para os pods do serviço com o rótulo "versão: v1". Um subconjunto ou uma versão de um destino de rota é identificado com uma referência a um subconjunto de serviço nomeado que deve ser declarado em umaDestinationRulecorrespondente. -
Visualize o aplicativo bookinfo na guia do navegador. Você deve obter apenas a v1 do aplicativo BookInfo, ou seja, nenhuma estrela para avaliações.
-
Para ativar o Istio Service Mesh para teste A/B na nova versão de serviço, modifique a regra
VirtualServiceoriginal para enviar apenas tráfego do Firefox para a v2. É possível mudar ouser-agentpara qualquer outro navegador instalado em sua máquina:cat <<EOF | oc replace -f - apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: reviews spec: hosts: - reviews http: - match: - headers: user-agent: regex: '.*Firefox.*' route: - destination: host: reviews subset: v2 - route: - destination: host: reviews subset: v3 EOFNas regras do Istio
VirtualService, só pode haver uma regra para cada serviço e, portanto, ao definir vários blocos HTTPRoute, a ordem em que eles são definidos no yaml é importante. Consequentemente, a regraVirtualServiceoriginal é modificada em vez de criar uma nova regra. Com a regra modificada, as solicitações recebidas originadas de navegadoresFirefoxacessarão a versão v2 (Estrelas pretas) de Bookinfo. Todas as outras solicitações passam para o próximo bloco, que roteia todo o tráfego para a versão v3 (Estrelas vermelhas) de Bookinfo.
Implementação canário
Nas Implementações canário, as versões mais novas de serviços são apresentadas incrementalmente para os usuários, para minimizar o risco e o impacto de erros introduzidos pela versão mais nova. Para iniciar o roteamento incremental de tráfego
para a versão mais nova do serviço Bookinfo, modifique a regra VirtualService original:
-
Execute o comando abaixo para enviar 80% de tráfego para a v1,
oc replace -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/networking/virtual-service-reviews-80-20.yamlNa regra modificada, o tráfego roteado é dividido entre dois subconjuntos diferentes do microsserviço reviews. Dessa maneira, o tráfego para a versão 2 modernizada de reviews é controlado em uma base de porcentagem para limitar o impacto de erros imprevistos. Essa regra pode ser modificada ao longo do tempo até que, eventualmente, todo o tráfego seja direcionado para a versão mais nova do serviço.
-
Visualize o aplicativo bookinfo novamente na aba do navegador. Certifique-se de usar uma atualização permanente (comando + Shift + R no Mac ou Ctrl + F5 no Windows) para remover qualquer armazenamento em cache do navegador. Você deve observar que o aplicativo Bookinfo deve trocar entre V1 ou V2 em relação à importância especificada.
-
Para rotear todo o tráfego para as revisões v3,
oc replace -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/networking/virtual-service-reviews-v3.yaml
Proteger os serviços
O Istio pode proteger a comunicação entre os microsserviços sem precisar de mudanças de código do aplicativo. A segurança é fornecida autenticando e criptografando caminhos de comunicação dentro do cluster. Isso está se tornando um requisito comum de segurança e conformidade. Delegar a segurança de comunicação ao Istio (em vez da implementação do TLS em cada microsserviço) assegura que seu aplicativo será implementado com políticas de segurança consistentes e gerenciáveis.
- Para configurar o mTLS, é necessário modificar as regras de destino anteriores para usar o
ISTIO_MUTUAL.oc replace -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/networking/destination-rule-all-mtls.yaml - Envie mais tráfego para seu aplicativo. Tudo ainda deve continuar funcionando conforme o esperado.
- Ative o Kiali novamente e acesse Gráfico.
- Selecione
bookinfona barra superior Namespace. - Em Exibição, selecione Segurança. Você deverá ver o ícone de bloqueio em todas as setas (tráfego).
- Para confirmar que o tráfego está seguro, clique na seta de
productpageparav1e você deverá vermTLS Enabledcom o ícone de bloqueio na área de janela direita.
Ativar o SSL para o tráfego que vem para o cluster (HTTPS)
Nesta seção, você criará uma Rota segura para o Ingress Gateway com a finalização de Borda usando o certificado padrão fornecido pelo Red Hat OpenShift on IBM Cloud. Com uma rota de borda, o Controlador do Ingress finaliza a criptografia TLS antes de encaminhar o tráfego para o Pod istio-ingressgateway.
- Ative o console do Red Hat OpenShift on IBM Cloud
- Em Rede e, em seguida, em Rotas,
- Escolha o projeto istio-system na barra superior e, em seguida, clique em Criar rota
- Nome:
istio-ingressgateway-secure - Serviço:
istio-ingressgateway - Porta de destino
80->8080(TCP) - Marcar
Secure Route - Finalização TLS:
Edge - Tráfego inseguro:
None
- Nome:
- Clique em Criar.
- Visite a nova URL HTTPS na seção Local da rota istio-ingressgateway-secure. Lembre-se de incluir
/productpageno final da URL.
Remover recursos
É possível remover gradualmente os recursos individuais ou pular essas etapas e excluir diretamente o cluster inteiro.
Excluir o projeto do aplicativo
- Para excluir o projeto Bookinfo, execute o comando abaixo
oc delete project bookinfo
Removendo o ServiceMeshControlPlane da CLI
- Execute este comando para recuperar o nome do ServiceMeshControlPlane instalado,
oc get servicemeshcontrolplanes -n istio-system - Substitua
<NAME_OF_CUSTOM_RESOURCE>pelo nome do comando anterior, e execute este comando para remover o recurso customizado,
O recursooc delete servicemeshcontrolplanes -n istio-system <NAME_OF_CUSTOM_RESOURCE>ServiceMeshMemberRollé excluído automaticamente quando você exclui o recursoServiceMeshControlPlaneao qual ele está associado.
Remover os Operadores
- Navegue para a página Operadores → Operadores instalados do console da web.
- No lado direito da página Operator Details (Detalhes do operador), selecione Desinstalar o Operador no menu suspenso Actions (Ações) de Red Hat OpenShift Malha de serviço Operator (Operador).
- Clique em Desinstalar no prompt.
- Repita as etapas 2 e 3 para cada um dos operadores da lista.
Excluir o cluster
Exclua o cluster para excluir tudo de uma vez. Essa ação é irreversível.
- Navegue até a página OpenShift.
- Clique no menu Ação ao lado de
<your-initials>-myopenshiftclustere selecione Excluir. - Selecione Excluir o armazenamento persistente usado pelo cluster e insira o nome do cluster para confirmar.
- Clique em Excluir