Como implantar o Bookinfo de amostra
Nesta página, explicamos como implantar um aplicativo de amostra para demonstrar o Cloud Service Mesh. Se você não instalou o Cloud Service Mesh, consulte o Guia de instalação.
Vários aplicativos de exemplo vêm com a instalação do Cloud Service Mesh. Neste
guia, você vai aprender a implantar a
amostra do BookInfo. Ele simula um aplicativo
simples de livraria composto de quatro serviços que oferecem uma página de produto
da Web, detalhes do livro, avaliações (com várias versões do
serviço de avaliação) e classificações, tudo gerenciado com o Cloud Service Mesh. É possível
encontrar o código-fonte e todos os outros arquivos usados neste exemplo no
diretório da instalação do Cloud Service Mesh em samples/bookinfo
.
Como ativar a injeção automática do arquivo secundário
Para ativar a injeção automática de arquivo secundário, rotule seus namespaces de modo que o webhook do injetor do arquivo secundário associe os arquivos secundários injetados com uma determinada revisão do plano de controle. Se você tiver configurado a tag padrão, rotule seus namespace com os rótulos de injeção padrão. Caso contrário, rotule seus namespaces com o rótulo de revisão. Além disso, o rótulo adicionado depende de você ter implantado o Cloud Service Mesh gerenciado ou instalado o plano de controle no cluster.
Gerenciado
É possível usar o rótulo de injeção padrão ou o de revisão para seu namespace
Rótulos de injeção padrão
Aplique os rótulos de injeção padrão ao namespace.
kubectl label namespace NAMESPACE istio-injection=enabled istio.io/rev-
Rótulo de revisão
Antes de implantar aplicativos, remova os rótulos
istio-injection
anteriores dos namespaces e defina o rótuloistio.io/rev=REVISION_LABEL
.Se quiser mudar para um rótulo de revisão específico, clique em
REVISION_LABEL
e substitua-o com o rótulo aplicável:asm-managed-rapid
para canal rápido,asm-managed
para canal regular ouasm-managed-stable
para canal estável.O rótulo de revisão corresponde a um canal de lançamento:
Rótulo de revisão Channel asm-managed
Normal asm-managed-rapid
Rápido asm-managed-stable
Canal Stable kubectl label namespace NAMESPACE istio-injection- istio.io/rev=REVISION_LABEL --overwrite
Se você também implantou o plano de dados gerenciado opcional, anote o namespace
NAMESPACE
da seguinte maneira:kubectl annotate --overwrite namespace NAMESPACE \ mesh.cloud.google.com/proxy='{"managed":"true"}'
No cluster
Use o seguinte comando para localizar o rótulo em
istiod
:kubectl -n istio-system get pods -l app=istiod --show-labels
A resposta será semelhante a:
NAME READY STATUS RESTARTS AGE LABELS istiod-asm-173-3-5788d57586-bljj4 1/1 Running 0 23h app=istiod,istio.io/rev=asm-1233-2,istio=istiod,pod-template-hash=5788d57586 istiod-asm-173-3-5788d57586-vsklm 1/1 Running 1 23h app=istiod,istio.io/rev=asm-1233-2,istio=istiod,pod-template-hash=5788d57586
Na saída, na coluna
LABELS
, anote o valor do rótulo de revisãoistiod
, que segue o prefixoistio.io/rev=
. Neste exemplo, o valor éasm-1233-2
.Aplique o rótulo de revisão ao namespace padrão. No comando a seguir,
REVISION
é o valor do rótulo de revisãoistiod
que você anotou na etapa anterior.kubectl label namespace default istio-injection- istio.io/rev=REVISION --overwrite
Você pode ignorar a mensagem
"istio-injection not found"
na saída. Isso significa que o namespace não tinha o rótuloistio-injection
anteriormente, o que é esperado em novas instalações do Cloud Service Mesh ou em novas implantações. Como o comportamento da injeção automática é indefinido quando um namespace tem oistio-injection
e o rótulo de revisão, todos os comandoskubectl label
na documentação do Cloud Service Mesh garantem explicitamente que apenas um seja definido.
Como implantar o aplicativo
Agora que a injeção automática está ativada no namespace default
, os proxies sidecar
são injetados junto de cada serviço quando você implantar os serviços do aplicativo
BookInfo.
Na linha de comando do computador em que você instalou o Cloud Service Mesh, acesse a raiz do diretório de instalação do Cloud Service Mesh. Se precisar, faça o download do arquivo de instalação.
Implante seu aplicativo no namespace padrão usando
kubectl
>kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
Confirme se o aplicativo foi implantado corretamente executando os seguintes comandos:
kubectl get services
Resposta:
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE details 10.0.0.31 <none> 9080/TCP 6m kubernetes 10.0.0.1 <none> 443/TCP 7d productpage 10.0.0.120 <none> 9080/TCP 6m ratings 10.0.0.15 <none> 9080/TCP 6m reviews 10.0.0.170 <none> 9080/TCP 6m
e
kubectl get pod
Resposta:
NAME READY STATUS RESTARTS AGE details-v1-1520924117-48z17 2/2 Running 0 6m productpage-v1-560495357-jk1lz 2/2 Running 0 6m ratings-v1-734492171-rnr5l 2/2 Running 0 6m reviews-v1-874083890-f0qf0 2/2 Running 0 6m reviews-v2-1343845940-b34q5 2/2 Running 0 6m reviews-v3-1813607990-8ch52 2/2 Running 0 6m
Finalmente, defina o roteamento do gateway de entrada para o aplicativo:
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
Saída:
gateway.networking.istio.io/bookinfo-gateway created virtualservice.networking.istio.io/bookinfo created
Como validar a implantação do aplicativo
Para ver se o aplicativo BookInfo está funcionando, envie o tráfego para o gateway de entrada.
Se você instalou o Cloud Service Mesh no Google Distributed Cloud, confira o endereço IP externo do gateway de entrada que você configurou depois de instalar o Cloud Service Mesh.
Se você instalou o Cloud Service Mesh no GKE, confira o endereço IP externo do gateway de entrada da seguinte maneira:
kubectl get service istio-ingressgateway -n istio-system
Saída:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.19.247.233 35.239.7.64 80:31380/TCP,443:31390/TCP,31400:31400/TCP 27m
Nesse exemplo, o endereço IP do serviço de entrada é
35.239.7.64
.
Como testar o aplicativo
Verifique se o aplicativo BookInfo está sendo executado com
curl
:curl -I http://EXTERNAL_IP/productpage
Se a resposta mostrar
200
, significa que o aplicativo está funcionando corretamente com o Cloud Service Mesh.Para visualizar a página da Web do BookInfo, insira o seguinte endereço no navegador:
http://EXTERNAL_IP/productpage
Se você atualizar a página várias vezes, verá diferentes versões das avaliações mostradas na página do produto, apresentadas em estilo round-robin (estrelas vermelhas, estrelas pretas, sem estrelas).
Agora que você tem um aplicativo que está gerando tráfego, é possível explorar as páginas do Cloud Service Mesh no console do Google Cloud para conferir métricas e os outros recursos de observabilidade.
Limpar
Quando terminar de testar a amostra do Bookinfo, remova-a do cluster.
Desinstale o Bookinfo usando o seguinte script:
samples/bookinfo/platform/kube/cleanup.sh
Confirme o encerramento:
kubectl get virtualservices #-- there should be no virtual services kubectl get destinationrules #-- there should be no destination rules kubectl get gateway #-- there should be no gateway kubectl get pods #-- the Bookinfo pods should be deleted
A seguir
Saiba mais sobre a amostra do Bookinfo.