Usar o Bridge to Kubernetes com um exemplo

Observação

A Microsoft planeja não manter mais ativamente o projeto Bridge to Kubernetes. Nos próximos meses, faremos a transição do projeto para um estado de arquivamento. Enquanto isso, o projeto ainda está disponível para uso e download. Durante esse período, esperamos explorar e recomendar projetos da comunidade que forneçam benefícios semelhantes ao Bridge to Kubernetes para seu uso futuro. Se você tiver dúvidas, entre em contato conosco em nosso quadro de problemas no GitHub.

Este exemplo ilustra como o Bridge to Kubernetes pode ser usado para desenvolver uma versão de microsserviço de um aplicativo TODO simples em qualquer cluster do Kubernetes. Este exemplo, usando Visual Studio Code, foi adaptado do código fornecido pelo TodoMVC. Neste exemplo, usamos MiniKube para hospedar o aplicativo, mas essas etapas devem funcionar com qualquer cluster do Kubernetes.

O exemplo de aplicativo TODO é composto por um front-end e um back-end que fornece armazenamento persistente. Este exemplo estendido adiciona um componente de estatísticas e divide o aplicativo em vários microsserviços, especificamente:

  • O front-end chama o database-api para persistir e atualizar itens TODO;
  • O serviço database-api depende de um banco de dados Mongo para persistir itens TODO;
  • As gravações de front-end adicionam, completam e excluem eventos em uma fila RabbitMQ;
  • Um trabalho de estatísticas recebe eventos da fila RabbitMQ e atualiza um cache Redis;
  • Uma API de estatísticas expõe as estatísticas armazenadas em cache para o front-end mostrar.

No geral, esse aplicativo TODO estendido é composto por seis componentes inter-relacionados.

Pré-requisitos

  • Qualquer cluster do Kubernetes ou gerenciador de pacotes Chocolatey para instalar o MiniKube
  • No Windows 10, Hyper-V
  • Kubectl instalado e no caminho em um ambiente de linha de comando de sua escolha
  • Extensão do Visual Studio Code Bridge to Kubernetes

Instalar o MiniKube

Você pode usar qualquer provedor do Kubernetes com o Bridge to Kubernetes. Neste artigo, usamos MiniKube. O MiniKube é um provedor leve do Kubernetes que permite hospedar o Kubernetes em seu computador local. Siga as instruções de instalação para instalar o MiniKube em Windows 10, Linux ou macOS.

Para obter melhores resultados no Windows 10, você deve usar o gerenciador de VM do Hyper-V e criar um comutador virtual.

Depois de instalado, inicie o MiniKube, especifique para usar o Hyper-V e forneça o nome do comutador virtual primário. Esse comando precisa ser executado em um prompt de comando com privilégios de Administrador.

minikube start --vm-driver hyperv --hyperv-virtual-switch "Primary Virtual Switch"

Implantar o aplicativo

Clone o repositório do Bridge to Kubernetes e abra uma janela de comando com a pasta de trabalho atual em todo-app.

Crie um namespace para o exemplo.

kubectl create namespace todo-app

Em seguida, aplique o manifesto de implantação:

kubectl apply -n todo-app -f deployment.yaml

Essa é uma implantação simples que expõe o front-end usando um serviço do tipo LoadBalancer. Aguarde até que todos os pods estejam em execução e que o IP externo do serviço frontend fique disponível.

Se você estiver testando com o MiniKube, você precisa usar minikube tunnel para resolver um IP externo.

kubectl get services -n todo-app

NAME          TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)        AGE
frontend      LoadBalancer   10.0.49.177    127.0.0.1   80:30145/TCP   18h

Navegue até o aplicativo usando o IP externo e a porta local (o primeiro número na coluna PORT(S)).

http://{external-ip}:{local-port}

Teste o aplicativo em execução no navegador. Ao adicionar, concluir e excluir itens pendentes, observe que a página de estatísticas é atualizada com as métricas esperadas.

Depurar o serviço stats-api

Agora você pode usar a extensão Bridge to Kubernetes para demonstrar como o tráfego do cluster do Kubernetes pode ser redirecionado para uma versão em execução local da stats-api.

cd stats-api/

Abra o código-fonte para a stats-api no VS Code.

code .

Depois que o VS Code for iniciado, abra o painel do Kubernetes na barra lateral esquerda do VS Code e selecione o namespace todo-app no cluster MiniKube. Clique com o botão direito do mouse no nó todo-app e escolha Usar Namespace.

Selecionar namespace

Instale dependências executando npm install em uma janela de terminal (CTRL + ~).

npm install

Em seguida, coloque um ponto de interrupção na linha 17 de server.js.

Abra a Paleta de Comandos (CTRL+SHIFT+P ou Cmd+Shift+P em um Mac) e digite Bridge to Kubernetes. Selecione a opção Bridge to Kubernetes: Configurar.

Bridge to Kubernetes: comando Configurar

Será solicitado que você configure o serviço que quer substituir, a porta a ser encaminhada do computador de desenvolvimento e a tarefa de inicialização a ser usada.

Escolha o serviço stats-api.

Selecione o serviço ao qual se conectar

Depois de selecionar o serviço, será solicitado que você insira a porta TCP do aplicativo local. Neste exemplo, digite 3001.

Digite o número da porta

Escolha Executar Script: desenvolvimento como a tarefa de inicialização.

Escolha a tarefa de inicialização do depurador

Você tem a opção de executar isolado ou não isolado. Se você executar isolado, somente suas solicitações serão roteadas para o processo local. Outros desenvolvedores podem usar o cluster sem serem afetados. Se você não executar isolado, todo o tráfego será redirecionado para o processo local. Para saber mais sobre essa opção, confira Usar recursos de roteamento para desenvolver isoladamente. Para este exemplo, vamos usar não isolado.

Escolher isolamento

Observação

O VS Code solicita que você permita que o EndpointManager seja executado de forma elevada e modifique seu arquivo hosts.

O perfil de depuração Bridge to Kubernetes foi configurado com êxito.

Selecione o ícone Depurar à esquerda e selecione Executar Script: desenvolvimento com Kubernetes. Clique no botão iniciar ao lado de Executar Script: desenvolvimento com Kubernetes.

Escolher o perfil de inicialização de depuração

Seu computador de desenvolvimento está conectado quando a barra de status do VS Code fica laranja e a extensão do Kubernetes mostra que você está conectado. Quando o computador de desenvolvimento estiver conectado, o tráfego começará a ser redirecionado para o computador de desenvolvimento para a stats-api que você está substituindo.

Depuração com o Bridge to Kubernetes

Navegue até o ponto de entrada de front-end do todo-app. Para o minikube, usaremos 127.0.0.1. Para acessar a URL do ponto de extremidade local para seu aplicativo, abra o menu Kubernetes na barra de status e escolha a entrada do ponto de extremidade.

Faça uma solicitação para a stats-api escolhendo o link stats.

Site em execução – escolha o link de status

Observe que o tráfego inicializado inicialmente no cluster foi redirecionado para a versão em execução local (fora do cluster) em que o ponto de interrupção foi disparado.

Pressione play e deixe a solicitação continuar completa de maneira transparente.

Este exemplo é apenas uma ilustração de como usar o Bridge para Kubernetes em clusters não AKS. Em seguida, experimente em seu projeto.

Limpeza

Para limpar os ativos produzidos por este exemplo, execute:

kubectl delete namespace todo-app

Próximas etapas

Você também pode implantar seu aplicativo no AKS (Serviço de Kubernetes do Azure) com o Bridge to Kubernetes. Confira Usar o Bridge to Kubernetes com o AKS