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 fez a integração com o Cloud Service Mesh, consulte o Guia de integração.
Vários aplicativos de amostra vêm com a instalação do Cloud Service Mesh. Este
guia mostra como implantar a amostra
BookInfo. Este é um aplicativo simples de simulação de uma livraria composto por quatro serviços
que fornecem 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. O código-fonte e todos os outros arquivos usados neste exemplo estão no diretório de instalação do Cloud Service Mesh em samples/bookinfo.
Acesso à rede para imagens de amostra
A ferramenta asmcli não verifica nem extrai nada do Docker Hub (docker.io) durante a instalação da malha principal. No entanto, a implantação de imagens de contêiner de terceiros após a instalação faz com que o Kubelet busque imagens de aplicativos de amostra do Docker Hub e da CDN do Cloudflare de suporte do Docker Hub.
Em redes restritas ou isoladas, esses comandos falham, a menos que sejam explicitamente acomodados.
Para acomodar seus comandos de extração de imagens, escolha uma das seguintes abordagens:
Permitir tráfego de saída
Atualize seu firewall ou proxy para permitir a saída HTTPS (porta 443) para os seguintes domínios. O domínio do Cloudflare é necessário porque o Docker Hub usa redirecionamentos HTTP 307 para veicular camadas de imagens.
- docker.io
- hub.docker.com
- *.cloudflarestorage.com
Criar um espelho em um registro particular
Em ambientes totalmente restritos, não abra portas de firewall. Em vez disso, espelhe as imagens de amostra necessárias no seu registro interno e configure o cluster para usar esse registro.
Para instruções detalhadas sobre como configurar isso em ambientes do GDC consulte Usar um espelho de registro para imagens de contêiner.
Como ativar a injeção automática do arquivo secundário
Ativar o namespace para injeção. As etapas dependem da sua implementação do plano de controle.
Gerenciado (TD)
- Aplique o rótulo de injeção padrão ao namespace:
kubectl label namespace default \ istio.io/rev- istio-injection=enabled --overwriteGerenciado (Istiod)
Recomendado:execute o comando a seguir para aplicar o rótulo de injeção padrão ao namespace:
kubectl label namespace default \ istio.io/rev- istio-injection=enabled --overwriteSe você já usa o plano de controle gerenciado do Istiod:recomendamos usar a injeção padrão, mas a injeção baseada em revisão é compatível. Siga estas instruções:
Execute o comando a seguir para localizar os canais de lançamento disponíveis:
kubectl -n istio-system get controlplanerevisionO resultado será o seguinte:
NAME AGE asm-managed-rapid 6d7hOBSERVAÇÃO: se duas revisões do plano de controle aparecerem na lista acima, remova uma delas. Não é possível ter vários canais do plano de controle no cluster.
Na saída, o valor na coluna
NAMEé o rótulo de revisão que corresponde ao canal de lançamento disponível para a versão do Cloud Service Mesh.Aplique o rótulo de revisão ao namespace:
kubectl label namespace default \ istio-injection- istio.io/rev=REVISION_LABEL --overwrite
No cluster
Recomendado:execute o comando a seguir para aplicar o rótulo de injeção padrão ao namespace:
kubectl label namespace default \ istio.io/rev- istio-injection=enabled --overwriteRecomendamos que você use a injeção padrão, mas a injeção baseada em revisão é compatível. Use as seguintes instruções:
Use o seguinte comando para localizar o rótulo de revisão em
istiod:kubectl get deploy -n istio-system -l app=istiod -o \ jsonpath={.items[*].metadata.labels.'istio\.io\/rev'}'{"\n"}'Aplique o rótulo de revisão ao namespace. No comando a seguir,
REVISION_LABELé o valor do rótulo de revisãoistiodque você anotou na etapa anterior.kubectl label namespace default \ istio-injection- istio.io/rev=REVISION_LABEL --overwrite
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 necessário, faça o download do arquivo de instalação no cluster, que inclui o aplicativo de exemplo bookinfo, e extraia-o.
Implante seu aplicativo no namespace padrão usando
kubectl>kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yamlConfirme se o aplicativo foi implantado corretamente executando os seguintes comandos:
kubectl get servicesResposta:
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 podResposta:
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.yamlSaí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 (somente software) para VMware, guarde 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, veja o endereço IP externo do gateway de entrada da seguinte maneira:
kubectl get service istio-ingressgateway -n istio-systemSaí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/productpageSe a resposta mostrar
200, isso 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/productpageSe 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 ver 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.shConfirme 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.