1. Objetivos
Neste laboratório, você vai aprender a:
- Conhecer os plug-ins do Cloud Code
- Implantar no cluster do Kubernetes
- Transmitir registros do Kubernetes
- Usar a recarga dinâmica de mudanças
- Depurar apps do Kubernetes em tempo real
2. Preparar o espaço de trabalho
Clonar o app
Para clonar o repositório e abri-lo no ambiente de desenvolvimento:
- Acesse o editor do Cloud Shell no URL a seguir
https://ide.cloud.google.com
- Na janela do terminal, clone o código-fonte do aplicativo com o comando a seguir:
git clone https://github.com/viglesiasce/sample-app.git -b golden-path
- Mude para o diretório e defina o espaço de trabalho do ambiente de desenvolvimento integrado como a raiz do repositório
cd sample-app && cloudshell workspace .
Iniciar o minikube
Nesta seção, você vai criar, testar, implantar e acessar o aplicativo usando uma versão local do Kubernetes chamada minikube.
- No terminal, inicie o minikube executando:
minikube start
O minikube configura um cluster local do Kubernetes no seu Cloud Shell. Essa configuração leva alguns minutos. Enquanto ele é iniciado, reserve um momento para analisar as várias interfaces fornecidas pelo Cloud Code na próxima etapa.
3. Conhecer o plug-in do Cloud Code
O Cloud Code oferece suporte ao ambiente de desenvolvimento integrado para todo o ciclo de desenvolvimento de aplicativos do Kubernetes e do Cloud Run, desde a criação de um aplicativo com base em um modelo até o monitoramento dos recursos do app implantado. Você vai usar diferentes comandos e visualizações fornecidos pelo Cloud Code. Nesta etapa, você vai conhecer as interfaces básicas.
Analisar as visualizações do Explorer na barra de atividades
Vários painéis de interface do usuário podem ser acessados na barra de atividades. Para conhecer brevemente as várias visualizações, clique nos ícones de cada uma delas.
API Explorer:
- Clique no ícone de APIs do Cloud - Cloud Code Cloud Code  na barra de atividades. Mais detalhes sobre como trabalhar nessa visualização estão disponíveis na documentação.

Secret Manager Explorer:
- Clique na visualização do Gerenciador de secrets  na barra de atividades. Mais detalhes sobre como trabalhar nessa visualização estão disponíveis na documentação.

Explorer do Cloud Run:
- Navegue até o Explorer do Cloud Run usando o ícone do Cloud Run na barra de atividades à esquerda . Mais detalhes sobre como trabalhar nessa visualização estão disponíveis na documentação

Explorer do Kubernetes:
- Navegue até o Explorer do Kubernetes usando o ícone na barra de atividades à esquerda . Mais detalhes sobre como trabalhar nessa visualização estão disponíveis na documentação

Analisar comandos da barra de status
Os comandos usados com frequência podem ser acessados rapidamente pelo indicador na barra de status.
- Localize o indicador da extensão do Cloud Code na barra de status
 e clique nele. - Analise os vários comandos disponíveis para execução e depuração no Cloud Run e no Kubernetes.
- Clique em "Abrir página de boas-vindas" para mais detalhes e atividades de amostra.
Analisar comandos da paleta de comandos
Outros comandos estão disponíveis na paleta de comandos. Analise a lista de comandos que podem ser acessados.
- Abra a paleta de comandos (pressione Ctrl/Cmd + Shift + P) e digite Cloud Code para filtrar os comandos disponíveis.
- Use as teclas de seta para percorrer a lista de comandos.
4. Implantar no cluster do Kubernetes
Nesta seção, você vai criar, testar, implantar e acessar o aplicativo.
As etapas abaixo iniciam um build do código-fonte e executam os testes. O build e os testes levam alguns minutos para serem executados. Esses testes incluem testes de unidade e uma etapa de validação que verifica as regras definidas para o ambiente de implantação. Essa etapa de validação já está configurada e garante que você receba um aviso de problemas de implantação mesmo enquanto ainda estiver trabalhando no ambiente de desenvolvimento.
- No painel na parte de baixo do editor do Cloud Shell, selecione Cloud Code 
. - No painel que aparece na parte de cima, selecione "Executar no Kubernetes". Se solicitado, selecione "Sim" para usar o contexto do Kubernetes do minikube.
- Selecione a guia "Saída" no painel inferior
para conferir o progresso e as notificações. - Selecione "Kubernetes: executar/depurar - detalhado" no menu suspenso do canal à direita
para conferir mais detalhes e registros transmitidos ao vivo dos contêineres.
Quando o build e os testes forem concluídos, a guia "Saída" vai mostrar: Resource deployment/sample-app-dev status completed successfully, e dois URLs serão listados.
- No terminal do Cloud Code, passe o cursor sobre o primeiro URL na saída (http://localhost:8080) e, na dica de ferramenta que aparece, selecione "Abrir visualização na Web".
A versão local do aplicativo é aberta no navegador. Essa versão do app está em execução no cluster do Kubernetes do minikube.
- No navegador, atualize a página. O número ao lado de "Contador" aumenta, mostrando que o app está respondendo à atualização.
No navegador, mantenha essa página aberta para que você possa visualizar o aplicativo à medida que faz mudanças no ambiente local.
5. Usar a recarga dinâmica de mudanças
Nesta seção, você vai fazer uma mudança no aplicativo e conferir a mudança à medida que o app é executado no cluster local do Kubernetes. Na guia de saída do canal "Kubernetes: executar/depurar", além dos URLs do aplicativo, a saída também mostra Watching for changes., o que significa que o modo de observação está ativado. Enquanto o Cloud Code estiver no modo de observação, ele vai detectar todas as mudanças salvas no repositório e vai reconstruir e reimplantar o app automaticamente com as mudanças mais recentes.
- No editor do Cloud Shell, acesse o arquivo main.go.
- Nesse arquivo, na linha 23, mude a cor de verde para azul.
- Salve o arquivo.
O Cloud Code detecta que a mudança no app foi salva e a reimplementa automaticamente. A guia "Saída" mostra "Atualização iniciada". Essa reimplementação leva alguns minutos para ser executada.
Essa reconstrução automática é semelhante à recarga dinâmica de código, que é um recurso disponível para alguns tipos de aplicativos e frameworks.
- Quando o build for concluído, acesse o navegador em que o app está aberto e atualize a página.
Quando você atualizar, a cor na parte de cima da tabela vai mudar de azul para verde.
Essa configuração oferece a recarga automática para qualquer arquitetura, com qualquer componente. Ao usar o Cloud Code e o minikube, tudo o que é executado no Kubernetes tem essa funcionalidade de recarga dinâmica de código.
6. Depurar apps do Kubernetes em tempo real
Você executou o aplicativo, fez uma mudança e visualizou o app em execução. Nesta seção, você vai depurar o aplicativo para ter certeza de que ele está pronto para ser confirmado no repositório principal.
Para este exemplo de depuração, vamos nos concentrar na seção do código para o contador de páginas.
- No editor do Cloud Shell, abra o arquivo main.go.
- Defina um ponto de interrupção no aplicativo clicando no número à esquerda da linha 82 (if err != nil {).
- No painel azul na parte de baixo do editor do Cloud Shell, selecione Cloud Code
. - No painel que aparece na parte de cima, selecione "Depurar no Kubernetes".
O Cloud Code executa e anexa depuradores para que você possa acessar o estado na memória do aplicativo, não apenas o comportamento voltado ao usuário.
- No final do processo de implantação, uma solicitação vai aparecer na parte de cima da janela pedindo para confirmar o diretório no contêiner em que o aplicativo está implantado.

Verifique se o valor está definido como /go/src/app e pressione Enter para aceitar o valor.
- Aguarde a conclusão da implantação do depurador. Você vai saber que ele está concluído quando a barra de status ficar laranja e a saída informar
"Attached debugger to container "sample-app-dev-..." successfully." - No terminal do Cloud Code, passe o cursor sobre o primeiro URL na saída (http://localhost:8081) e, na dica de ferramenta que aparece, selecione "Abrir visualização na Web". A página não vai terminar de carregar, o que é esperado.
- Volte para o ambiente de desenvolvimento integrado em que o depurador aparece. O código aparece na guia, e você verá a pilha de chamadas e quais variáveis estão disponíveis nessa parte do código. É possível expandir as variáveis locais para conferir o valor atual da variável do contador.
- Para permitir que a página continue carregando, selecione o ícone "Continuar" na janela de depuração

- Quando terminar a depuração, clique no botão "Parar" para encerrar cada uma das linhas de execução.
