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. Este é um aplicativo simples de simulação de livraria composto por quatro serviços
que fornecem uma página de produto da Web, detalhes de livros, resenhas (com várias versões do
o serviço de avaliação) e classificações. Todas elas são gerenciadas 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 que você adiciona também depende de você ter implantado Cloud Service Mesh gerenciado ou instalou 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-1187-26,istio=istiod,pod-template-hash=5788d57586 istiod-asm-173-3-5788d57586-vsklm 1/1 Running 1 23h app=istiod,istio.io/rev=asm-1187-26,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-1187-26
.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 antes oistio-injection
, que é o novo padrão instalações do Cloud Service Mesh ou novas implantações. Porque a injeção automática o comportamento é indefinido quando um namespace tem oistio-injection
e o rótulo de revisão, todos os comandoskubectl label
na A documentação do Cloud Service Mesh garante explicitamente que apenas um deles 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 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.