O Cloud Code permite depurar um aplicativo implantado em um cluster do Google Kubernetes Engine (GKE) usando o skaffold debug.
É possível depurar seu aplicativo em um cluster local, como minikube ou Docker Desktop, GKE ou qualquer outro provedor de nuvem.
Com o suporte à depuração do Cloud Code, não é preciso concluir a configuração
manual, como a configuração do encaminhamento de portas ou a injeção de argumentos de depuração
específicos da linguagem. A depuração exige um aplicativo do GKE pronto para o Cloud Code que inclua um arquivo de configuração skaffold.yaml e uma configuração de inicialização cloudcode.kubernetes.
Depurar um aplicativo do GKE
Para começar a depurar seu aplicativo do GKE, siga estas etapas:
Na barra de status do Cloud Code, clique no nome do projeto ativo.

No menu "Escolha rápida" que aparece, selecione Depurar no Kubernetes.
Se solicitado, autentique suas credenciais para executar e depurar um aplicativo localmente.
Se o aplicativo não tiver a configuração
skaffold.yamloucloudcode.kubernetesnecessária, o Cloud Code ajudará você a configurá-las.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 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_NAMEDocker Hub docker.io/ ACCOUNT
Verifique se você tem a autenticação correta se estiver usando um repositório particular do Docker Hub.AWS Container Repository (ECR) AWS_ACCOUNT_ID.dkr.ecr.REGION.amazonaws.com/APPAzure Container Registry (ACR) ACR_NAME.azurecr.io/APPPara 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 na 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
watchna 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 registros de implantação:abra os registros do 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ê desativou o modo de exibição na configuração de inicialização e quer fazer mudanças no aplicativo e recriá-lo e reimplantá-lo, pause a ação de execução no painel "Sessões de desenvolvimento" e clique em
Recrie e reimplante 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 processa automaticamente os seguintes detalhes de configuração para todas as linguagens compatíveis:
- Faça o encaminhamento de portas 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 aplicativo 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 um deles. - Manter definições de mapeamento de origem entre sessões Você pode personalizar essas definições editando seu arquivo
.vscode/launch.jsondiretamente.
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 usando skaffold debug, consulte a
documentação.
Configurar o contêiner
Para preparar o contêiner para depuração, siga as instruções referentes à linguagem que você está usando:
Node.js
- Inicie o aplicativo Node.js com
--inspect=<debugPort>, em quedebugPortvem da configuração de anexação. Exemplo:CMD ["node", "--inspect=9229", "index.js"]
Python
- Verifique se o módulo
ptvsdestá instalado na máquina e no contêiner. - Inicie o aplicativo Python por meio do
ptvsd. Corresponde à porta especificada no campodebugPortna configuração de anexação. Exemplo:CMD ["python", "-m", "ptvsd", "--port", "
" , "app.py"]
Go
- Verifique se o
pacote
dlvestá instalado na máquina e no contêiner do Go. Inicie o aplicativo Go por meio de
dlv debug.A porta especificada no comando de inicialização precisa ser igual ao valor do atributo
debugPortna configuração de anexação. Exemplo:CMD ["dlv", "debug", "--headless", "--listen=:<debugPort>", "--log"]
Dica de solução de problemas: ao depurar um aplicativo em Go, ele travará e aguardará a instalação de um depurador. Anexe um depurador para iniciar o serviço.
Java
- Verifique se a JVM está instalada na sua máquina.
Inicie o aplicativo Java com as opções a seguir, em que
debugPortvem da