Para acelerar o desenvolvimento local no Cloud Code para IntelliJ, aproveite a sincronização de arquivos e a recarga dinâmica, a implantação automática ao salvar e use módulos Skaffold para desenvolver partes de um aplicativo separadamente.
Ativar a sincronização de arquivos do Skaffold e a recarga dinâmica
Para melhorar a eficiência do fluxo de trabalho de desenvolvimento local e evitar a necessidade de recriar, reimplantar e reiniciar os pods, o Skaffold aceita copiar arquivos alterados para um contêiner implantado. Isso significa que, ao fazer mudanças em arquivos estáticos e de código-fonte, é possível ver as alterações em questão de segundos, criando um loop de feedback acelerado.
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 dinâmica 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 dinâmica configurada, o Skaffold detecta alterações nos arquivos compatíveis e sincroniza essas alterações no contêiner em execução no cluster. Alterações nos tipos de arquivo que não são compatíveis com recarga dinâmica acionam uma recriação de imagem e uma reinicialização de pod.
A sincronização automática de arquivos e a recarga dinâmica são ativadas por padrão quando você está trabalhando com o Buildpacks como o builder preferido. Para outros builders como
Docker, especifique 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 Skaffold configura a sincronização automaticamente. (apenas para artefatos Jib e Buildpacks artefatos) Esse é o padrão para o Buildpacks.infer: os destinos de cada arquivo alterado são inferidos do builder.manual: é necessário especificar os arquivos no espaço de trabalho local e o destino deles no contêiner em execução.
A seção sync de amostra a seguir em um arquivo skaffold.yaml especifica uma
manual sincronização 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 dinâmica, inicie um ciclo de iteração e adicione mais recursos ao seu projeto. As mudanças são implantadas no cluster do Kubernetes sem interromper e remover a implantação, sem criar e marcar manualmente a imagem 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
Ao desenvolver aplicativos de microsserviços, pode ser útil trabalhar em seções separadas de maneira independente para simplificar a depuração e a implantação.
É possível desenvolver e depurar partes do seu aplicativo de forma independente dividindo
seu aplicativo em módulos Skaffold. Por exemplo, o
exemplo do Bank of Anthos
é um aplicativo que contém dez microsserviços. O arquivo
skaffold.yaml
do exemplo agrupa esses serviços em cinco módulos Skaffold chamados setup, db,
frontend, backend e loadgenerator.
Definir módulos e dependências de configuração do Skaffold
Para definir os módulos e as dependências de configuração do Skaffold:
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, para fazer uma configuração um módulo Skaffold, especifique a seguinte linha: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 implantação da configuração atual, é necessário adicionar a configuração às 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 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 suas dependências de configuração criando cada um dos módulos do Skaffold separadamente. Para garantir que eles sejam implantados com as dependências deles, siga as etapas em Criar módulos específicos do Skaffold e as respectivas dependências.
Criar módulos específicos do Skaffold e as respectivas dependências
Depois de definir os módulos e as dependências deles, é possível especificar quais módulos você quer executar na guia Criar / Implantar ao selecionar Executar > Editar configurações.Instale as versões mais recentes do Insiders.
Acesse Executar > Editar configurações e abra a guia Criar / Implantar.
Para Configuração do Skaffold, selecione skaffold.yaml.
Escolha uma destas opções:
- Criar e implantar com todos os módulos e dependências
- Criar e implantar com (se os módulos estiverem disponíveis) e selecione os módulos que você quer criar e implantar.
Sua seleção será mantida para as implantações subsequentes. Se você selecionar um subconjunto de módulos, o Cloud Code exibirá um aviso sobre a implantação de um subconjunto de módulos, e não de todo o sistema.
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 no seu ambiente de desenvolvimento integrado para propagar qualquer mudança feita na sua origem e dependências no aplicativo ativo.
O destino de execução do Desenvolvimento no Kubernetes inicia o ciclo de desenvolvimento no cluster do Kubernetes. Depois de iniciar o ciclo de desenvolvimento, o Cloud Code, usando Skaffold, cria uma imagem para o projeto, marca-a, envia-a para o repositório configurado e usa kubectl para implantar os manifestos do Kubernetes do projeto.
- Clique no ícone Desenvolver no Kubernetes e em Editar configurações para abrir a caixa de diálogo Executar/Depurar configurações.
- Personalize sua implantação usando as opções de configuração disponíveis.
- Se você quiser que o Cloud Code reimplante o aplicativo automaticamente após as alterações serem salvas, em Watch mode - rebuild and redeploy, selecione On file save. Os novos aplicativos do Kubernetes têm a opção Sob demanda selecionada por padrão. Para mais informações sobre os modos de observação, consulte Modos de observação.
- Se o aplicativo estiver configurado para usar módulos Skaffold, você pode selecionar para criar ou implantar módulos específicos apenas.
- Quando estiver satisfeito com a configuração, clique em OK e no ícone Executar.
A seguir
- Usar o cluster minikube integrado do Cloud Code para desenvolvimento local.
- Depurar o aplicativo no Cloud Code
- Leia os detalhes sobre o recurso de sincronização de arquivos do Skaffold