Depure um aplicativo do Kubernetes no Cloud Code para o VS Code

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

  1. Clique em Barra de status do Cloud Code Cloud Code na barra de status e selecione Depurar no Kubernetes.
  2. 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.
  3. Confirme se você quer usar o contexto do Kubernetes atual para executar o aplicativo (ou alternar para um preferido).
  4. 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.

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

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

  7. 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.
  8. 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 Ícone "Recriar e reimplantar" Reconstruir e reimplantar o aplicativo.

  9. Para encerrar a sessão de depuração, clique em Ícone de parada de depuração 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.

Como conseguir suporte

Para enviar feedback, informe problemas no GitHub ou faça uma pergunta no Stack Overflow.