Esta página foi traduzida pela API Cloud Translation.
Switch to English

Como depurar um aplicativo do Kubernetes

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

  1. Selecione o comando Depurar no Kubernetes usando a barra de status do Cloud Code.
  2. 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.
  3. Confirme se você quer usar o contexto do Kubernetes atual para executar o app (ou mudar para um preferencial).
  4. 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}
    Repositório de contêineres da AWS (ECR, na sigla em inglês) {aws_account_id}.dkr.ecr.{region}.amazonaws.com/{meu-app}
    Registro de contêineres do Azure (ACR, na sigla em inglês) {my_acr_name}.azurecr.io/{meu-app}

    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).

  5. 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.

  6. 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.

    Encaminha e exibe os URLs na janela de saída

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

    Solicitação de raiz remota

    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:

  8. 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.

    Aplicativo pausado no ponto de interrupção e seções de pilha de chamadas e variáveis preenchidas com valores no escopo

  9. 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).

      Opções disponíveis na barra de status do Cloud Code: abrir registros de implantação, abrir o URL do serviço e o modo de exibição, além das ações normais do Cloud Code.

  10. 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.

    Parar de depuração do aplicativo do Kubernetes

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.

Como receber suporte

Acesse o GitHub para enviar feedback e informar problemas ou o Stack Overflow (ambos em inglês) para fazer perguntas.