Depure aplicações Kubernetes com o Cloud Code para VS Code

O Cloud Code permite depurar uma aplicação implementada num cluster do Google Kubernetes Engine (GKE) através do skaffold debug.

Pode depurar a sua aplicação num cluster local (como o minikube ou o Docker Desktop), no GKE ou em qualquer outro fornecedor de nuvem.

Com o suporte de depuração do Cloud Code, não tem de concluir a configuração manual, como configurar o encaminhamento de portas ou injetar argumentos de depuração específicos do idioma. A depuração requer uma aplicação GKE pronta para o Cloud Code que inclua um skaffold.yamlficheiro de configuração e uma configuração de lançamento cloudcode.kubernetes.

Depure uma aplicação do GKE

Para começar a depurar a sua aplicação GKE, siga estes passos:

  1. Na barra de estado do Cloud Code, clique no nome do projeto ativo.

    Nome do projeto ativo na barra de estado

  2. No menu de seleção rápida apresentado, selecione Depurar no Kubernetes.

  3. Se lhe for pedido, autentique as suas credenciais para executar e depurar uma aplicação localmente.

  4. Se a sua aplicação não tiver a configuração Skaffold necessária ou a cloudcode.kubernetes configuração de lançamento, o Cloud Code ajuda a configurá-las.

  5. Confirme se quer usar o contexto do Kubernetes atual para executar a app (ou mude para um contexto preferencial).

  6. Se escolheu um cluster remoto como contexto, quando lhe for pedido, escolha um registo de imagens para enviar as imagens.

    Se o seu projeto tiver a API Artifact Registry ativada e, pelo menos, um repositório do Artifact Registry, pode procurar e selecionar um repositório do Artifact Registry existente.

    Os exemplos seguintes demonstram como especificar onde as imagens de contentores são armazenadas para alguns registos comuns:

    Artifact Registry REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME
    Docker Hub docker.io/ACCOUNT
    Certifique-se de que tem autenticação adequada se estiver a usar um repositório privado do Docker Hub.
    AWS Container Repository (ECR) AWS_ACCOUNT_ID.dkr.ecr.REGION.amazonaws.com/APP
    Azure Container Registry (ACR) ACR_NAME.azurecr.io/APP

    Para gerar o nome final do repositório de imagens, o Cloud Code concatena este registo de imagens com o nome da imagem especificado nos manifestos do Kubernetes. Esta escolha é armazenada na sua cloudcode.kubernetes configuração de lançamento (encontrada em .vscode/launch.json).

    Para mais informações, consulte o guia de processamento do registo de imagens.

    O Cloud Code cria os seus contentores, envia-os para o registo, aplica as configurações do Kubernetes ao cluster e aguarda a implementação.

    Após a implementação, o Cloud Code encaminha automaticamente todas as portas de contentores declaradas para a sua máquina e apresenta os URLs na janela de saída para que possa procurar a sua aplicação em direto.

  7. Para cada contentor depurável na sua aplicação, confirme ou introduza o diretório no contentor remoto onde o programa que quer depurar está localizado.

    Em alternativa, pode premir ESC para ignorar a depuração do contentor.

    Comando de acesso root remoto

    O Cloud Code anexa uma sessão de depuração para cada contentor depurável na aplicação.

    Agora, pode realizar as mesmas tarefas que faz normalmente quando depura código local, como definir pontos de interrupção e percorrer o código passo a passo, num cluster Kubernetes em direto.

    Por predefinição, quando guarda uma alteração à sua aplicação, o Cloud Code volta a implementar a aplicação e configura uma nova sessão de depuração. Pode ativar/desativar esta funcionalidade com a flag watch na configuração de lançamento do seu projeto.

  8. Para inspecionar variáveis e informações de pilha, use a barra lateral de depuração. Para interagir com a sessão de depuração, use a consola de depuração no depurador do painel inferior.

  9. Após a conclusão da sessão, pode usar os seguintes comandos do menu de contexto:

    • Abrir registos de implementação: abra os registos da aplicação de uma implementação específica com o explorador de registos do Cloud Code.
    • Abrir URL do serviço: abra o URL do serviço da aplicação de um serviço específico num navegador de Internet
  10. Se tiver desativado o modo de observação na configuração de lançamento e quiser fazer alterações à aplicação, reconstruir e voltar a implementar a aplicação, no painel Sessões de desenvolvimento, pause a ação de execução e, de seguida, clique em Ícone de recompilar e voltar a implementar Reconstruir e voltar a implementar a aplicação.

  11. Para terminar a sessão de depuração, clique em Ícone de paragem de depuração Parar na barra de ferramentas de depuração.

    Depois de terminar a sessão de depuração, todos os recursos do Kubernetes implementados são eliminados do cluster.

Detalhes da configuração

O Cloud Code, com tecnologia Skaffold, processa automaticamente os seguintes detalhes de configuração para todos os idiomas suportados:

  • Encaminhamento de porta da porta de depuração para que o depurador possa ser anexado.
  • Anexar um depurador a um ou mais contentores depuráveis na sua aplicação. Se a sua aplicação tiver vários contentores depuráveis (contentores cuja linguagem é suportada pela depuração do Cloud Code) configurados no skaffold.yaml, é anexado um depurador a cada contentor depurável.
  • Manter as definições de mapeamento de origem entre sessões. Pode personalizar estas definições editando diretamente o ficheiro .vscode/launch.json.

O Cloud Code também processa os seguintes detalhes de configuração específicos do idioma:

Node.js

Reescrever o ponto de entrada para invocar:

node --inspect=localhost:9229

Python

Instalar o módulo ptvsd usando um contentor de inicialização e reescrevendo o ponto de entrada para invocar: