Para acelerar o desenvolvimento local no Cloud Code para IntelliJ, aproveite a sincronização de arquivos e a recarga automática, a implantação automática ao salvar e use os módulos do Skaffold para desenvolver partes de um aplicativo separadamente.
Ativar a sincronização e recarga automática de arquivos do Skaffold
Para melhorar a eficiência do seu fluxo de trabalho de desenvolvimento local e evitar a necessidade de recriar, reimplantar e reiniciar os pods, o Skaffold é compatível com a cópia de arquivos alterados para um contêiner implantado. Isso significa que, quando você está fazendo alterações em arquivos estáticos e de código-fonte, pode ver suas alterações entrarem em vigor em segundos, criando um ciclo 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 automática configurada, o Skaffold detecta mudanças em arquivos compatíveis e as sincroniza com o contêiner em execução no cluster. As alterações nos tipos de arquivo que não são compatíveis com a recarga dinâmica acionam uma recriação da imagem e uma reinicialização do 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
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 Skaffold configura a sincronização automaticamente. (apenas para artefatos Jib e Buildpacks). Esse é o padrão para Buildpacks.infer
: os destinos de cada arquivo alterado são inferidos do builder.manual
: você precisa especificar os arquivos no espaço de trabalho local e o destino deles no contêiner em execução.
O exemplo de seção sync
a seguir em um arquivo skaffold.yaml
especifica uma
sincronização de 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.
Adicione 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 projeto. As alterações são implantadas no cluster do Kubernetes sem interromper e remover a implantação, criar e incluir tags manualmente na imagem ou atualizar o cluster.
Um ciclo de iteração padrão é semelhante a este:
Faça uma alteração no projeto. Por exemplo, se você estiver usando o aplicativo Livro de visitas do Cloud Code em Java, adicione um novo endpoint à classe
FrontendController
da seguinte maneira:Abra o arquivo
FrontendController.java
emsrc/main/java/cloudcode/guestbook/frontend
e 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,
RequestMapping
eResponseBody
.
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 alterações forem implantadas, confirme as atualizações.
Para encerrar a sessão de desenvolvimento contínuo, clique no ícone Interromper.
O Cloud Code exclui todos os recursos do Kubernetes usados na sessão de desenvolvimento.
Desenvolver aplicativos de microsserviços usando as configurações do Skaffold
Ao desenvolver aplicativos de microsserviço, 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 maneira independente dividindo-o em módulos Skaffold. Por exemplo, a amostra do Bank of Anthos é um aplicativo que contém dez microsserviços. O arquivo
skaffold.yaml
da amostra agrupa esses serviços em cinco módulos skaffold chamados setup
, db
,
frontend
, backend
e loadgenerator
.
Definir módulos do Skaffold e dependências de configuração
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.yaml
tiver várias configurações, para transformar uma configuração em um módulo do Skaffold, especifique a seguinte linha:metadata: name: MODULE_NAME_1
Por exemplo, no
skaffold.yaml
Bank of Anthos, o módulodb
define implantações de banco de dados:Para configurações que dependem da implantação de outra configuração antes que a atual seja implantada, adicione a configuração às suas dependências. Para especificar uma dependência de configuração, adicione uma lista de
configs
à seçãorequires
do arquivoskaffold.yaml
.Por exemplo, o arquivo
skaffold.yaml
do Bank of Anthos inclui a dependência de configuraçãosetup
.Para definir uma dependência, adicione o seguinte ao seu arquivo
skaffold.yaml
, em que DEPENDENCY_NAME é o nome da sua dependência.requires: - configs: DEPENDENCY_NAME
As configurações listadas dessa maneira podem referenciar dependências definidas no mesmo arquivo ou em outros arquivos
skaffold.yaml
no projeto atual.Teste as dependências de configuração criando cada um dos módulos do Skaffold separadamente para garantir que eles sejam implantados com as dependências. Siga as etapas em Criar módulos específicos do Skaffold e as dependências deles.
Criar módulos específicos do Skaffold e as dependências deles
Depois de definir seus módulos e as dependências deles, você pode especificar quais módulos quer executar na guia Build / Deploy ao selecionar Run > Edit Configuration.Instale as versões mais recentes do Insiders.
Acesse Executar > Editar configurações e abra a guia Criar / implantar.
Em 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 selecionar 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 ambiente de desenvolvimento integrado para propagar as alterações feitas na origem e nas dependências para o aplicativo ativo.
O destino de execução do Develop no Kubernetes inicia o ciclo de desenvolvimento no cluster do Kubernetes. Depois de iniciar o ciclo de desenvolvimento, o Cloud Code, usando o Skaffold, cria uma imagem para o projeto e a marca, envia por push para o repositório configurado e usa o kubectl para implantar os manifestos do Kubernetes do projeto.
- Clique no ícone Desenvolver no Kubernetes e, em seguida, clique em Editar configurações para abrir a caixa de diálogo Configurações de execução/depuração.
- 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. A opção Sob demanda é selecionada por padrão para novos aplicativos do Kubernetes. Para saber mais sobre os modos de relógio, consulte Modos de relógio.
- Se o aplicativo estiver configurado para usar módulos do Skaffold, será possível selecionar a opção para criar ou implantar apenas módulos específicos.
- Quando estiver tudo certo com a configuração, clique em OK e no ícone Run.
A seguir
- Use o cluster minikube integrado do Cloud Code para desenvolvimento local.
- Depurar seu aplicativo no Cloud Code
- Leia os detalhes no recurso de sincronização de arquivos do Skaffold.