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

Como depurar um aplicativo do Kubernetes

O Cloud Code permite depurar facilmente um aplicativo implantado em um cluster do Kubernetes aproveitando 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, você não precisa concluir a configuração manual, como 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

  1. Na barra de status do Cloud Code, escolha o comando Depurar no Kubernetes.
  2. Se o aplicativo não tiver a configuração do Skaffold ou a configuração de inicialização cloudcode.kubernetes, o Cloud Code ajuda a defini-las.
  3. Confirme se você quer usar o contexto atual do Kubernetes (em inglês) para executar o aplicativo ou alternar para um preferencial.
  4. Se o contexto escolhido for de um cluster remoto, você precisará fornecer um registro de imagem para enviar as imagens.

    Os exemplos a seguir demonstram como especificar onde as imagens do 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}

    Para gerar o nome do repositório de imagens final, 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 gerenciamento do registro de imagens.

    O Cloud Code cria seus contêineres, os envia para o registro, aplica as configurações do Kubernetes ao cluster e aguarda o lançamento.

  5. Após a implantação, o Cloud Code encaminha automaticamente todas as portas de contêiner declaradas para sua máquina e exibe os URLs na janela de saída para que você possa navegar pelo seu aplicativo ativo.

    Encaminha e exibe os URLs na janela de saída

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

    Solicitação de raiz remota

    O Cloud Code anexa uma sessão de depuração para cada contêiner depurável no aplicativo.

    Agora é possível executar as mesmas tarefas que você normalmente realiza ao depurar código local, como definir pontos de interrupção e percorrer códigos, em um cluster ativo do Kubernetes.

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

  8. 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 usando a 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 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: alterne 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.

  9. Para encerrar a sessão de depuração, clique no ícone de parada na Barra de ferramentas de depuração.

    Depois de encerrar a sessão de depuração, 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 Cloud Code, com tecnologia do Skaffold, em segundo plano, processa automaticamente os seguintes detalhes de configuração para todas as linguagens 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 seu aplicativo tiver vários contêineres depuráveis (contêineres compatíveis com a linguagem do Cloud Code) configurados em skaffold.yaml, um depurador será anexado a cada um dos contêineres depuráveis.
  • 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 específicos de configuração 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

A instalação do depurador dlv usando um contêiner Init e reescrever o ponto de entrada de modo que a sessão de depuração iniciada seja executada apenas com um servidor de depuração (no modo headless) continua o processo depurado no início, aceita várias conexões de clientes e detecta localhost:56268:

dlv exec --headless --continue --accept-multiclient --listen=localhost:56268 --api-version=2, <app> --

Java

Adicionando um ambiente JAVA_TOOLS_OPTIONS com a configuração apropriada do Java Debug Wire Protocol (JDWP) para que o agente de depuração do JDWP escute uma conexão de soquete na porta 5005 e permita que a VM comece a ser executada antes da depurador está 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 vinculação de um depurador a um pod do Kubernetes. Para uma comparação, consulte Como anexar a um pod do Kubernetes ou depurar um aplicativo do Kubernetes.

Como receber suporte

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