Como implantar o aplicativo de amostra Online Boutique

Neste guia, explicamos como instalar o aplicativo de amostra Online Boutique para demonstrar o Anthos Service Mesh. Se você não tiver instalado o Anthos Service Mesh, veja a seção Guias de instalação para escolher o guia certo para você.

Como ativar a injeção automática do arquivo secundário

Para ativar a injeção automática do arquivo secundário (injeção automática) do aplicativo de amostra, você precisa adicionar um rótulo de revisão ao namespace da amostra. O rótulo adicionado depende de você ter implantado o plano de controle gerenciado pelo Google do Anthos Service Mesh ou instalado o plano de controle no cluster. O rótulo de revisão é usado pelo webhook do injetor do arquivo secundário para associar os arquivos secundários injetados a uma revisão específica do plano de controle.

No cluster

  1. Crie um namespace para o aplicativo:

    kubectl create namespace demo
    
  2. 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-198-6-5788d57586-bljj4   1/1     Running   0          23h   app=istiod,istio.io/rev=asm-198-6,istio=istiod,pod-template-hash=5788d57586
    istiod-asm-198-6-5788d57586-vsklm   1/1     Running   1          23h   app=istiod,istio.io/rev=asm-198-6,istio=istiod,pod-template-hash=5788d57586
    

    Na saída, na coluna LABELS, anote o valor do rótulo de revisão istiod, que segue o prefixo istio.io/rev=. Neste exemplo, o valor é asm-198-6.

  3. Aplique o rótulo de revisão ao namespace demo. No comando a seguir, REVISION é o valor do rótulo de revisão istiod que você anotou na etapa anterior.

    kubectl label namespace demo 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ótulo istio-injection anteriormente, que é esperado em novas instalações do Anthos Service Mesh ou em novas implantações. Como a injeção automática falha se um namespace tiver o istio-injection e o rótulo de revisão, todos os comandos kubectl label na documentação do Anthos Service Mesh incluem a remoção do rótulo istio-injection

Gerenciada pelo Google

  1. Crie um namespace para o aplicativo:

    kubectl create namespace demo
    
  2. Aplique o rótulo de revisão asm-managed ao namespace demo.

    kubectl label namespace demo istio-injection- istio.io/rev=asm-managed --overwrite
    

    Você pode ignorar a mensagem "istio-injection not found" na saída. Isso significa que o namespace não tinha o rótulo istio-injection anteriormente, que é esperado em novas instalações do Anthos Service Mesh ou em novas implantações. Como a injeção automática falha se um namespace tiver o istio-injection e o rótulo de revisão, todos os comandos kubectl label na documentação do Anthos Service Mesh incluem a remoção do rótulo istio-injection

Como fazer o download e implantar a amostra

Agora que a injeção automática está ativada no namespace demo, os proxies sidecar são injetados junto de cada serviço quando você implantar os serviços do aplicativo BookInfo.

  1. Instale kpt caso ainda não tenha feito isso:

    gcloud components install kpt
    
  2. Faça o download da amostra usando kpt:

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/microservices-demo.git/release \
    online-boutique
    
  3. Implante a amostra no cluster:

    kubectl apply -n demo -f online-boutique
    
  4. Encontre o endereço IP externo do serviço frontend-external:

    kubectl get service frontend-external -n demo
    
  5. Acesse o aplicativo no navegador para confirmar a instalação:

    http://EXTERNAL_IP/
    

Para o GKE, é possível explorar os recursos de observabilidade do Anthos Service Mesh no Console do Cloud. Pode levar até 10 minutos para o gráfico de topologia exibir os serviços na malha.

Quando terminar de explorar, remova a amostra Online Boutique:

kubectl delete namespaces demo