Para acelerar o desenvolvimento local no Cloud Code para IntelliJ, tire partido da sincronização de ficheiros e do recarregamento dinâmico, da implementação automática ao guardar e use módulos do Skaffold para desenvolver partes de uma aplicação em separado.
Ative a sincronização de ficheiros e o recarregamento rápido do Skaffold
Para melhorar a eficiência do fluxo de trabalho de desenvolvimento local e evitar ter de recompilar, reimplementar e reiniciar os seus pods, o Skaffold suporta a cópia de ficheiros alterados para um contentor implementado. Isto significa que, quando faz alterações a ficheiros de código estático e de origem, pode ver as alterações a entrar em vigor em segundos, o que cria um ciclo de feedback acelerado.
Para ficheiros estáticos (como ficheiros HTML e CSS), este comportamento de cópia de ficheiros denomina-se sincronização de ficheiros.
Para ficheiros de código fonte, este comportamento é denominado recarga dinâmica e suporta os seguintes tipos de ficheiros:
- Go: *.go
- Java: *.java, *.kt, *.scala, *.groovy, *.clj
- NodeJS: *.js, *.mjs, *.coffee, *.litcoffee, *.json
Com o recarregamento dinâmico configurado, o Skaffold deteta alterações aos ficheiros suportados e sincroniza estas alterações com o contentor em execução no cluster. As alterações aos tipos de ficheiros que não suportam o recarregamento a quente acionam uma recompilação de imagens e um reinício do pod.
A sincronização automática de ficheiros e o recarregamento dinâmico estão ativados por predefinição quando trabalha com Buildpacks como o seu criador preferencial. Para outros criadores, como o Docker, pode especificar uma secção sync
no ficheiro skaffold.yaml
para o artefacto que está a personalizar.
A sua definição de sincronização pode ser uma das seguintes (por ordem de preferência):
auto
: o Skaffold configura automaticamente a sincronização. (apenas para artefactos Jib e Buildpacks) Esta é a predefinição para os Buildpacks.infer
: os destinos de cada ficheiro alterado são inferidos a partir do criador.manual
: tem de especificar os ficheiros no seu espaço de trabalho local e o respetivo destino no contentor em execução.
A seguinte secção de exemplo sync
num ficheiro skaffold.yaml
especifica uma sincronização para sincronizar todos os ficheiros HTML /static-html
com a pasta static
num contentor:manual
build: artifacts: - image: gcr.io/k8s-skaffold/node-example context: node sync: manual: - src: 'static-html/*.html' dest: static
Para uma análise detalhada da sincronização de ficheiros e da especificação de regras de sincronização, consulte o guia do Skaffold sobre a sincronização de ficheiros.
Adicione novas funcionalidades quando desenvolver no Kubernetes
Depois de configurar a sincronização de ficheiros e o recarregamento rápido, inicie um ciclo de iteração e adicione mais funcionalidades ao seu projeto. As alterações são implementadas no cluster do Kubernetes sem parar nem remover a implementação, criar e etiquetar manualmente a imagem, ou atualizar o cluster.
Um ciclo de iteração padrão assemelha-se ao seguinte:
Faça uma alteração no seu projeto. Por exemplo, se usar a app Java Guestbook do Cloud Code, adicione um novo ponto final à classe
FrontendController
da seguinte forma:Abra o ficheiro
FrontendController.java
desrc/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
.
Guarde as alterações (
Ctrl
/Cmd+S
) ou crie o projeto.Pode ver o progresso e os registos de implementação na janela da consola. Após a implementação das alterações, confirme as atualizações.
Para terminar a sessão de desenvolvimento contínuo, clique no ícone Parar.
O Cloud Code elimina todos os recursos do Kubernetes usados para a sessão de desenvolvimento.
Desenvolva aplicações de microsserviços com configurações do Skaffold
Ao desenvolver aplicações de microsserviços, pode ser útil trabalhar em secções separadas de forma independente para simplificar a depuração e a implementação.
Pode desenvolver e depurar partes da sua aplicação de forma independente dividindo-a em módulos do Skaffold. Por exemplo, o exemplo Bank of Anthos é uma aplicação que contém dez microsserviços. O ficheiro
skaffold.yaml
de exemplo agrupa estes serviços em cinco módulos do Skaffold denominados setup
, db
,
frontend
, backend
e loadgenerator
.
Defina módulos do Skaffold e dependências de configuração
Para definir módulos do Skaffold e dependências de configuração:
Abra o projeto no qual quer definir os módulos.
Abra o ficheiro
skaffold.yaml
.Se o seu ficheiro
skaffold.yaml
tiver várias configurações, para tornar uma configuração um módulo do Skaffold, especifique a seguinte linha:metadata: name: MODULE_NAME_1
Por exemplo, no Bank of Anthos
skaffold.yaml
, o módulodb
define as implementações da base de dados:Para configurações que dependem da implementação de outra configuração antes de a configuração atual poder ser implementada, tem de adicionar a configuração às suas dependências. Para especificar uma dependência de configuração, adicione uma lista
configs
à secçãorequires
do ficheiroskaffold.yaml
.Por exemplo, o ficheiro
skaffold.yaml
do Bank of Anthos inclui a dependência de configuraçãosetup
.Para definir uma dependência, adicione o seguinte ao seu ficheiro
skaffold.yaml
, onde DEPENDENCY_NAME é o nome da dependência.requires: - configs: DEPENDENCY_NAME
As configurações apresentadas desta forma podem fazer referência a dependências definidas no mesmo ficheiro ou noutros ficheiros
skaffold.yaml
no projeto atual.Teste as dependências da configuração criando cada um dos módulos do Skaffold separadamente para se certificar de que são implementados com as respetivas dependências. Para tal, siga os passos descritos no artigo Crie módulos específicos do Skaffold e as respetivas dependências.
Crie módulos específicos do Skaffold e as respetivas dependências
Depois de definir os módulos e as respetivas dependências, pode especificar os módulos que quer executar no separador Compilar / Implementar quando selecionar Executar > Editar configurações.Instale as compilações do programa Insiders mais recentes.
Aceda a Executar > Editar configurações e abra o separador Compilar / Implementar.
Para Configuração do Skaffold, selecione skaffold.yaml.
Selecione uma das seguintes opções:
- Crie e implemente com todos os módulos e dependências
- Crie e implemente com (se os módulos estiverem disponíveis) e selecione os módulos que quer criar e implementar.
A sua seleção persiste para implementações subsequentes. Se selecionar um subconjunto de módulos, o Cloud Code apresenta um aviso sobre a implementação de um subconjunto de módulos e não de todo o sistema.
Desenvolvimento contínuo no Kubernetes
Depois de configurar o alvo de execução com as opções pretendidas, pode optar por uma execução normal da aplicação ou iniciar um ciclo de iteração de desenvolvimento no IDE para propagar quaisquer alterações feitas à origem e às dependências para a aplicação em direto.
O destino de execução Develop on Kubernetes inicia o ciclo de desenvolvimento no seu cluster do Kubernetes. Depois de iniciar o ciclo de desenvolvimento, o Cloud Code, através do Skaffold, cria uma imagem para o projeto e, em seguida, etiqueta-a, envia-a para o repositório configurado e usa o kubectl para implementar os manifestos do Kubernetes do projeto.
- Clique no ícone Develop on Kubernetes e, de seguida, clique em Edit Configurations para abrir a caixa de diálogo Run/Debug Configurations.
- Personalize a implementação através das opções de configuração disponíveis.
- Se quiser que o Cloud Code volte a implementar a sua aplicação automaticamente depois de guardar as alterações, em Modo de monitorização – Recompile e volte a implementar, selecione Ao guardar o ficheiro. As novas aplicações Kubernetes têm a opção A pedido selecionada por predefinição. Para mais informações sobre os modos do relógio, consulte o artigo Modos do relógio.
- Se a sua aplicação estiver configurada para usar módulos do Skaffold, pode selecionar a opção para criar ou implementar apenas módulos específicos.
- Quando estiver satisfeito com a configuração, clique em OK e, de seguida, clique no ícone Executar.
O que se segue?
- Use o cluster minikube integrado do Cloud Code para o desenvolvimento local.
- Depure a sua aplicação no Cloud Code
- Leia os detalhes sobre a funcionalidade de sincronização de ficheiros do Skaffold