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.
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
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
.
Depois de selecionar seu serviço, você será solicitado a inserir a porta TCP para seu aplicativo local. Para este exemplo, insira 3001.
Escolha Executar Script: desenvolvimento como a tarefa de inicialização.
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.
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.
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.
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.
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