Usar o Bridge to Kubernetes com um exemplo

Nota

Bridge to Kubernetes será desativado em 30 de abril de 2025. Para obter detalhes sobre a descontinuação e alternativas de código aberto, consulte o tíquete do 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 o Visual Studio Code, foi adaptado do código fornecido pelo TodoMVC. Neste exemplo, usamos o 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 trabalhador 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.

Ao todo, esse aplicativo TODO estendido é composto por seis componentes interrelacionados.

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 no Windows 10, Linux ou macOS.

Para obter melhores resultados no Windows 10, você deve usar o gerenciador de VM 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 deve 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 se torne disponível.

Se você estiver testando com o MiniKube, precisará 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 Ponte para Kubernetes para demonstrar como o tráfego do cluster kubernetes pode ser redirecionado para uma versão em execução local da stats-api.

cd stats-api/

Abra o código-fonte da api de estatísticas no VS Code.

code .

Depois que o VS Code for iniciado, abra o painel 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.

ponte para Kubernetes: configurar o comando

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 para se conectar ao

Depois de selecionar seu serviço, você será solicitado a inserir a porta TCP para seu aplicativo local. Para este exemplo, insira 3001.

Insira 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 nonisolated.

Escolha isolamento

Nota

O VS Code solicita que você permita que o EndpointManager execute com privilégios elevados e modifique o arquivo de 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.

Escolha 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 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 que inicialmente começou em seu cluster foi redirecionado para sua versão em execução local (fora do cluster), onde o ponto de parada foi acionado.

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

Este exemplo é apenas uma ilustração de como usar o Bridge to Kubernetes em clusters não AKS. Experimente em seu próprio projeto em seguida!

Limpar

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