Para acelerar seu desenvolvimento local no Cloud Code para Cloud Shell, use o arquivo e recarga automática, implantação automática ao salvar e usar módulos 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 sem precisar recriar, reimplantar e reiniciar os pods, o Skaffold oferece suporte copiar arquivos alterados para um contêiner implantado. Isso significa que quando você altera e arquivos de código-fonte, você pode ver suas alterações entrarem em vigor em segundos, tornando um processo 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 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 nos arquivos compatíveis e os sincroniza alterações no contêiner em execução no cluster. Alterações nos tipos de arquivo que não oferecem suporte ao recurso de acesso frequente o recarregamento aciona 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 construtores, como
No Docker, é possível especificar uma seção sync
no arquivo skaffold.yaml
para o
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 Jib e Buildpacks artifacts.) Esse é o padrão para Buildpacks.infer
: os destinos de cada arquivo alterado são inferidos do builder.manual
: é necessário especificar os arquivos no seu 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 um
Sincronização do manual
para sincronizar todos os arquivos HTML /static-html
com o 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 alterações são implantadas sem interromper e remover a implantação, criando e incluir tags 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 usar o aplicativo de livro de visitas em Java do Cloud Code, adicione um novo endpoint ao
FrontendController
da seguinte maneira:Abra o arquivo
FrontendController.java
nosrc/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 mudanças 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 seu aplicativo de forma independente dividindo-o
em módulos Skaffold. Por exemplo, o exemplo
Bank of Anthos
é um aplicativo que contém dez microsserviços. O módulo
skaffold.yaml
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
.Caso seu arquivo
skaffold.yaml
tenha várias configurações, para fazer uma um módulo do Skaffold, especifique a seguinte linha:metadata: name: MODULE_NAME_1
Por exemplo, no
skaffold.yaml
do Bank of Anthos, o módulodb
define implantações de banco de dados:Para configurações que dependem de outra configuração sendo implantada antes a configuração atual puder ser implantada, adicione a configuração ao seu dependências. Para especificar uma dependência de configuração, adicione uma lista
configs
à Seçãorequires
do arquivoskaffold.yaml
.Por exemplo, o arquivo
skaffold.yaml
do Bank of Anthos inclui o 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 dependência.requires: - configs: DEPENDENCY_NAME
As configurações listadas dessa forma podem fazer referência às dependências definidas no mesmo arquivo ou outros arquivos
skaffold.yaml
no projeto atual.Teste as dependências de configuração criando cada um dos componentes do Skaffold em módulos separados para garantir que sejam implantados com os respectivos dependências seguindo as etapas em Crie 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 suas dependências, você pode especificar quais
módulos que 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 no Kubernetes, você será
instruído a selecionar os módulos a serem criados:
- Abra a Paleta de comandos (
Ctrl
/Cmd
+Shift
+P
) e execute o Cloud Código: executar no Kubernetes. - Clique em Select modules.
- Escolha os módulos que você quer implantar e clique em OK. Cada módulo é criado com as respectivas dependências.
- Quando solicitado, escolha um registro de imagem e pressione
Enter
.
Se o projeto tiver um launch.json
, siga estas etapas para escolher o Skaffold
módulos a serem criados:
Abra o arquivo
launch.json
do projeto.Edite a configuração de inicialização para adicionar a opção
skaffoldFlags
com uma lista delimitada por vírgulas demodules
para criar. SeskaffoldFlags
for omitido, todos os módulos sã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 no ambiente de desenvolvimento integrado para propagar qualquer alteração feita na origem e nas dependências para o aplicativo ativo.
O destino de execução Run on Kubernetes inicia o ciclo de desenvolvimento no seu cluster do Kubernetes. Depois de iniciar o ciclo de desenvolvimento, O Cloud Code, usando o Skaffold, cria uma imagem para o projeto e, em seguida, o marca, envia para o repositório configurado e usa o kubectl para implantar os manifestos do projeto do Kubernetes.
- Personalize sua implantação usando as opções de configuração disponíveis.
- Se o aplicativo estiver configurado para usar módulos Skaffold, que pode 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 você estiver usando o Container Registry, poderá navegar até um registro atual ou especificar o nome de um registro a ser criado. Se o projeto tiver a API Artifact Registry ativada e pelo menos um repositório do Artifact Registry, é possível navegar e selecionar um repositório existente do Artifact Registry. de dados.
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 a arquitetura interna do Cloud cluster do minikube para o desenvolvimento local.
- Depurar seu aplicativo no Cloud Code
- Leia os detalhes em Recurso de sincronização de arquivos do Skaffold