O Cloud Code permite depurar facilmente um aplicativo implantado em um cluster do Kubernetes usando o skaffold debug
. É possível depurar
o aplicativo em um cluster local (como o minikube ou o Docker Desktop),
o Google Kubernetes Engine (GKE) ou qualquer outro provedor de nuvem.
Você não precisa concluir a configuração manual como, por exemplo, configurar o encaminhamento de portas ou
injetar argumentos de depuração específicos da linguagem. Você só precisa de um aplicativo do Kubernetes pronto para o Cloud Code que inclua um arquivo de configuração skaffold.yaml
e uma configuração de inicialização cloudcode.kubernetes
.
Como depurar um aplicativo
- Clique em
Cloud Code na barra de status e selecione Depurar no Kubernetes.
- Se o aplicativo não tiver a configuração de skaffold necessária ou a configuração de lançamento
cloudcode.kubernetes
, o Cloud Code ajudará você a configurá-los. - Confirme se você quer usar o contexto do Kubernetes atual para executar o aplicativo (ou alternar para um preferido).
Se você escolheu um cluster remoto como contexto, quando solicitado, escolha um registro de imagem para enviar as imagens. Se você estiver usando o Container Registry, poderá navegar até um registro atual ou especificar o nome de um registro a ser criado. Se o projeto tiver a API Artifact Registry ativada e pelo menos um repositório do Artifact Registry, é possível navegar e selecionar um repositório existente do Artifact Registry. de dados.
Os exemplos a seguir demonstram como especificar onde as imagens de contêiner são armazenadas para alguns registros comuns:
Artifact Registry {region}-docker.pkg.dev/{project_id}/{repo-name} Container Registry gcr.io/{project_id} Docker Hub docker.io/{account}
Verifique se você tem a autenticação correta se estiver usando um repositório particular do Docker Hub.Repositório de contêineres da AWS (ECR, na sigla em inglês) {aws_account_id}.dkr.ecr.{region}.amazonaws.com/{meu-app} Azure Container Registry (ACR) {my_acr_name}.azurecr.io/{meu-app} Para gerar o nome final do repositório de imagem, o Cloud Code concatena esse registro de imagem com o nome da imagem especificado nos manifestos do Kubernetes. Essa escolha é armazenada em sua configuração de inicialização
cloudcode.kubernetes
(encontrada em .vscode/launch.json)Para mais informações, consulte o guia de processamento de registros de imagem.
O Cloud Code, em seguida, cria os contêineres, os envia para o registro, aplica as configurações do Kubernetes ao cluster e aguarda o lançamento.
Após a conclusão do lançamento, o Cloud Code encaminha automaticamente todas as portas de contêiner declaradas à sua máquina e exibe os URLs na janela de saída para que seja possível procurar seu aplicativo ativo.
Para cada contêiner depurável no seu aplicativo, confirme ou insira o diretório no contêiner remoto em que o programa que você quer depurar está localizado.
Como alternativa, pressione ESC para pular a depuração do contêiner.
O Cloud Code anexa uma sessão de depuração para cada contêiner depurável no aplicativo.
Agora é possível realizar as mesmas tarefas realizadas ao depurar código local, como definir pontos de interrupção e avançar o código, em um cluster ativo do Kubernetes.
Por padrão, quando você salva uma alteração no aplicativo, o Cloud Code o implanta novamente e configura uma nova sessão de depuração. Alterne esse recurso com a sinalização
watch
na configuração de inicialização do seu projeto.Para inspecionar informações de pilha e variáveis, use a barra lateral de depuração (em inglês). Para interagir com a sessão, use o Console de depuração (em inglês) no depurador do painel inferior.
Depois que a sessão for concluída, use os seguintes comandos do menu de contexto:
- Abrir os registros de implantação: abra os registros de aplicativo de uma implantação específica com o Explorador de registros do Cloud Code
- Open Service URL: abra o URL do serviço do aplicativo de um serviço específico em um navegador da Web.
Se você tiver desativado o modo de exibição na configuração de inicialização e quiser fazer alterações no aplicativo, reconstruí-lo e reimplantá-lo, no painel "Sessões de desenvolvimento", pause a ação de execução e clique em
Reconstruir e reimplantar o aplicativo.
Para encerrar a sessão de depuração, clique em
Stop na barra de ferramentas de depuração.
Depois de terminar a sessão de depuração, todos os recursos implantados do Kubernetes são excluídos do cluster.
Detalhes da configuração
O Cloud Code, com tecnologia do Skaffold, processa automaticamente os seguintes detalhes de configuração para todos os idiomas compatíveis:
- Encaminhar a porta de depuração para que o depurador seja anexado.
- Como anexar um depurador a um ou mais contêineres depuráveis no aplicativo.
Se o app tiver vários contêineres depuráveis (contêineres com
linguagem compatível com a depuração do Cloud Code) configurados em
skaffold.yaml
, um depurador será anexado a cada contêiner depurável. - Manter definições de mapeamento de origem entre sessões Você pode personalizar essas definições editando seu
.vscode/launch.json
diretamente.
O Cloud Code também processa os seguintes detalhes de configuração específicos da linguagem:
Node.js
Como reescrever o ponto de entrada para invocar:
node --inspect=localhost:9229
Python
Como instalar o depurador do módulo ptvsd
usando um contêiner de inicialização e reescrever o ponto de entrada para invocar:
python -m ptvsd --host localhost --port 5678
Go
Instalar o depurador dlv
usando um contêiner de inicialização e reescrever o ponto de entrada para que a sessão de depuração iniciada seja executada somente com um servidor de depuração (no modo headless) o processo depurado no início, aceita várias conexões de clientes e escuta em
localhost:56268
:
dlv exec --headless --continue --accept-multiclient --listen=localhost:56268 --api-version=2, <app> --
Java
Adicionar um ambiente JAVA_TOOLS_OPTIONS
com a configuração apropriada do Java Debug
Wire (JDWP) para que o agente de depuração JDWP detecte
uma conexão de soquete na porta 5005 e permita que a VM comece a ser executada
antes do depurador anexado:
jdwp=transport=dt_socket,server=y,suspend=n,address=5005,quiet=y
Para mais detalhes sobre a depuração com tecnologia Skaffold, consulte a
documentação do skaffold debug
.
Como anexar o depurador a um pod do Kubernetes
O Cloud Code VS Code também é compatível com a anexação de um depurador a um pod do Kubernetes. Para uma comparação, consulte Como anexar a um pod do Kubernetes vs. depurar um aplicativo do Kubernetes.