O Cloud Code permite depurar facilmente seu aplicativo implantado em um
cluster do Kubernetes usando skaffold debug
.
É possível depurar seu aplicativo em um cluster local, como o Minikube ou
o Docker Desktop, no Google Kubernetes Engine ou em qualquer outro provedor do Cloud.
Além disso, com o suporte à depuração do Cloud Code, não é preciso se preocupar com nenhum
tipo de configuração manual, como a configuração do encaminhamento de portas ou a inserção de argumentos de depuração específicos
da linguagem. Você só precisa ter 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
- Selecione o comando Depurar no Kubernetes usando a barra de status do Cloud Code.
- Se o aplicativo não tiver a configuração necessária do Skaffold ou a configuração de inicialização
cloudcode.kubernetes
, o Cloud Code ajudará você a configurá-las. - Confirme se você quer usar o contexto do Kubernetes atual para executar o app (ou mudar para um preferencial).
Se o contexto escolhido for de um cluster remoto, você será solicitado a fornecer um registro de imagem para enviar as imagens.
Veja alguns exemplos de como especificar onde as imagens de contêiner são armazenadas para alguns registros comuns:
Docker Hub docker.io/{account}
Verifique se você está autenticado corretamente se estiver usando um repositório particular do Docker Hub.Google Container Repository (GCR) gcr.io/{project_id} O Cloud Code concatena esse registro de imagem com o nome da imagem especificado nos manifestos do Kubernetes para gerar o nome final do repositório de imagens.
Para mais informações, consulte o guia de tratamento de registro de imagem.
Esta escolha é armazenada na configuração de inicialização do
cloudcode.kubernetes
(encontrada em .vscode/launch.json).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, você precisará confirmar ou inserir o diretório no contêiner remoto em que o programa que você quer depurar é encontrado.
Como alternativa, pressione ESC para pular a depuração do contêiner.
O Cloud Code anexará uma sessão de depuração para cada contêiner depurável no aplicativo.
Depois disso, será possível executar todas as tarefas que você normalmente realiza ao depurar códigos locais, como definir pontos de interrupção e percorrer códigos, com o diferencial de depurar em um cluster ativo do Kubernetes:
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.
Após a conclusão da sessão, outras opções de menu contextual estarão disponíveis para monitorar o aplicativo e os recursos dele por meio da barra de status do Cloud Code, incluindo:
- Abrir registros de implantação: abra os registros do aplicativo de uma implantação específica com o visualizador de registros do Cloud Code
- Abrir o URL do serviço: abre o URL do serviço de aplicativo de um serviço específico em um navegador da Web.
Ativar/desativar o modo de exibição: alternar o modo de exibição para a sessão atual (não disponível para sessões de depuração).
Para encerrar a sessão de depuração, clique no ícone de parada na Barra de ferramentas de depuração.
Após o encerramento do aplicativo, todos os recursos implantados do Kubernetes serão excluídos do cluster.
Detalhes da configuração
O funcionamento do Cloud Code, com a tecnologia Skaffold, será aplicado automaticamente aos seguintes detalhes de configuração:
- 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 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
.vscode/launch.json
diretamente.
Além do exemplo acima, dependendo da linguagem, o Cloud Code também cuidará de:
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 adequada do JDWP para que o agente de depuração do JDWP saiba que há uma conexão de soquete na porta 5005 e permita que a VM comece a ser executada antes de o depurador ser 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 também é compatível com a vinculação de um depurador a um pod do Kubernetes. Para conhecer as diferenças, consulte esta tabela.