Para acelerar o desenvolvimento local no Cloud Code para VS Code, aproveite a sincronização de arquivos e a recarga automática, a implantação automática ao salvar e use módulos para desenvolver partes de um aplicativo separadamente.
Ativar a sincronização de arquivos e a recarga automática
Para melhorar a eficiência do seu fluxo de trabalho de desenvolvimento local e evitar ter que recriar, reimplantar e reiniciar seus pods, o Cloud Code oferece suporte à cópia de arquivos alterados para um contêiner implantado. Isso significa que, ao fazer mudanças em arquivos estáticos e de código-fonte, você pode ver as alterações entrarem em vigor em segundos, acelerando o ciclo de feedback.
Em arquivos estáticos, como HTML e CSS, o comportamento de cópia desse arquivo é chamado de sincronização de arquivos.
Para arquivos de código-fonte, esse comportamento é chamado de recarga automática e é compatível com os seguintes tipos de arquivo:
- Go: *.go
- Java: *.java, *.kt, *.scala, *.groovy, *.clj.
- Node.js: *.js, *.mjs, *.coffee, *.litcoffee, *.json
Com a recarga automática configurada, o Cloud Code detecta mudanças nos arquivos compatíveis e sincroniza essas mudanças com o contêiner em execução no cluster. As mudanças em tipos de arquivo que não são compatíveis com a recarga automática acionam uma recriação da imagem e uma reinicialização do pod.
A sincronização automática de arquivos e a recarga automática são ativadas por padrão quando você
trabalha com buildpacks como seu builder preferido. Para outros criadores, como o
Docker, é possível especificar uma seção sync no arquivo skaffold.yaml para o
artefato que você está personalizando.
A configuração de sincronização pode ser uma das seguintes (em ordem de preferência):
auto: o Cloud Code configura a sincronização automaticamente. (somente para artefatos do Jib e do Buildpacks.) Esse é o padrão para Buildpacks.infer: os destinos de cada arquivo mudado são inferidos do builder.manual: especifique os arquivos no espaço de trabalho local e o destino deles no contêiner em execução.
A seção sync de exemplo a seguir em um arquivo skaffold.yaml especifica uma
sincronização manual para sincronizar todos os arquivos HTML /static-html com a pasta static
em um contêiner:
build: artifacts: - image: gcr.io/k8s-skaffold/node-example context: node sync: manual: - src: 'static-html/*.html' dest: static
Para uma análise detalhada sobre a sincronização de arquivos e a especificação de regras de sincronização, consulte o guia do Skyffold sobre sincronização de arquivos.
Adicionar novos recursos ao desenvolver no Kubernetes
Depois de configurar a sincronização de arquivos e a recarga automática, inicie um ciclo de iteração e adicione mais recursos ao seu projeto. As mudanças são implantadas no cluster do Kubernetes sem parar e remover a implantação, criar e marcar a imagem manualmente ou atualizar o cluster.
Um ciclo de iteração padrão é semelhante a este:
Faça uma mudança no seu projeto. Por exemplo, se você estiver usando o app Guestbook do Cloud Code Java, adicione um novo endpoint à classe
FrontendControllerda seguinte maneira:Abra o arquivo
FrontendController.javaemsrc/main/java/cloudcode/guestbook/frontende adicione o seguinte:@RequestMapping("/greeting") @ResponseBody public String greeting(@RequestParam(value="name", defaultValue="World") String name) { return String.format("Hello from Kubernetes with IntelliJ, %s!", name); }Adicione as importações necessárias para as novas anotações,
RequestMappingeResponseBody.
Salve as mudanças (
Ctrl/Cmd+S) ou crie o projeto.É possível visualizar os registros de progresso e implantação na janela do console. Depois que as mudanças forem implantadas, confirme as atualizações.
Para encerrar a sessão de desenvolvimento contínuo, clique no ícone Parar.
O Cloud Code exclui todos os recursos do Kubernetes usados na sessão de desenvolvimento.
Desenvolver aplicativos de microsserviços usando configurações do skaffold.yaml
Ao desenvolver aplicativos de microsserviços, pode ser útil trabalhar em seções separadas de forma independente para simplificar a depuração e a implantação.
É possível desenvolver e depurar partes do aplicativo de forma independente dividindo-o em módulos. Por exemplo, a amostra do
Bank of Anthos
é um aplicativo que contém dez microsserviços. O arquivo
skaffold.yaml
de exemplo agrupa esses serviços em cinco módulos chamados setup, db,
frontend, backend e loadgenerator.
Definir módulos e dependências de configuração
Para definir módulos e dependências de configuração:
Abra o projeto em que você quer definir os módulos.
Abra o arquivo
skaffold.yaml.Se o arquivo
skaffold.yamltiver várias configurações, especifique a seguinte linha para transformar uma configuração em um módulo:metadata: name: MODULE_NAME_1Por exemplo, no
skaffold.yamldo Bank of Anthos, o módulodbdefine implantações de banco de dados:Para configurações que dependem da implantação de outra configuração antes da atual, adicione a configuração às suas dependências. Para especificar uma dependência de configuração, adicione uma lista
configsà seçãorequiresdo arquivoskaffold.yaml.Por exemplo, o arquivo
skaffold.yamldo Bank of Anthos inclui a dependência de configuraçãosetup.Para definir uma dependência, adicione o seguinte ao arquivo
skaffold.yaml, em que DEPENDENCY_NAME é o nome da sua dependência.requires: - configs: DEPENDENCY_NAMEAs configurações listadas dessa forma podem referenciar dependências definidas no mesmo arquivo ou em outros arquivos
skaffold.yamlno projeto atual.Teste as dependências de configuração criando cada um dos módulos separadamente para garantir que eles sejam implantados com as dependências seguindo as etapas em Criar módulos específicos e as dependências deles.
Criar módulos específicos e as dependências deles
Depois de definir os módulos e as dependências deles, especifique quais
módulos você quer executar com o Cloud Code no arquivo launch.json.
Se o projeto não tiver um arquivo launch.json definido, ao executar Cloud
Code: Run on Kubernetes ou Cloud Code: Debug on Kubernetes, você
precisará selecionar os módulos a serem criados:
- Abra a paleta de comandos (
Ctrl/Cmd+Shift+P) e execute Cloud Code: Run on Kubernetes. - Clique em Select modules.
- Escolha os módulos que você quer implantar e clique em OK. Cada módulo é criado com as dependências dele.
- Quando solicitado, escolha um registro de imagem e pressione
Enter.
Se o projeto tiver um launch.json, siga estas etapas para escolher os
módulos a serem criados:
Abra o arquivo
launch.jsondo projeto.Edite a configuração de inicialização para adicionar a opção
skaffoldFlagscom uma lista separada por vírgulas demodulespara criar. SeskaffoldFlagsfor omitido, todos os módulos serão criados.{ "name": "Run on Kubernetes", "type": "cloudcode.kubernetes", "request": "launch", "skaffoldConfig": "${workspaceFolder}/skaffold.yaml", "skaffoldFlags": { "modules": ["MODULE_NAME_2,MODULE_NAME_2"], "watch": true, "cleanUp": true, } }Execute a configuração de inicialização que você editou.
Desenvolvimento contínuo no Kubernetes
Depois de configurar o destino de execução com as opções desejadas, você pode optar por uma execução regular do aplicativo ou iniciar um ciclo de iteração de desenvolvimento na sua IDE para propagar as mudanças feitas na origem e dependências para o aplicativo ativo.
O destino de execução Executar no Kubernetes inicia o ciclo de desenvolvimento no seu cluster do Kubernetes. Depois que você inicia o ciclo de desenvolvimento, o Cloud Code cria uma imagem para o projeto, adiciona tags a ela, a envia para o repositório configurado e usa kubectl para implantar os manifestos do Kubernetes do projeto.
- Personalize sua implantação usando as opções de configuração disponíveis.
- Se o aplicativo estiver configurado para usar módulos, você poderá selecionar módulos específicos para criar ou implantar.
- Abra a paleta de comandos (pressione
Ctrl/Cmd+Shift+P) e execute o comando Cloud Code: Run on Kubernetes. - Confirme se você quer usar o contexto do Kubernetes atual para executar o aplicativo (ou alternar para um preferido). Para mais informações sobre como configurar um contexto do Kubernetes, consulte Como configurar.
Se você escolheu um cluster remoto como contexto, quando solicitado, escolha um registro de imagem para enviar as imagens. Se o projeto tiver a API Artifact Registry ativada e pelo menos um repositório do Artifact Registry, você poderá navegar até um repositório do Artifact Registry e selecioná-lo.
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.
A seguir
- Use o cluster do minikube integrado do Cloud Code para desenvolvimento local.
- Depurar seu aplicativo no Cloud Code
- Leia os detalhes sobre o recurso de sincronização de arquivos.