O Cloud Code permite que você execute facilmente seu aplicativo em um
cluster do Kubernetes e visualize-o ao vivo, aproveitando skaffold dev
.
É possível executar o aplicativo em um cluster local (como Minikube ou Docker Desktop), Google Kubernetes Engine ou qualquer outro provedor de nuvem.
Como executar o aplicativo
- 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.
Os exemplos a seguir demonstram como especificar onde as imagens de contêiner são armazenadas para alguns registros comuns:
Artifact Registry {region}-docker.pkg.dev/{project_id}/{repo-name} Container Registry gcr.io/{project_id} Docker Hub docker.io/{account}
Verifique se você tem a autenticação correta se estiver usando um repositório particular do Docker Hub.O Cloud Code concatena esse registro de imagem com o nome da imagem especificado nos manifestos do Kubernetes para gerar o nome final do repositório de imagens.
Para mais informações, consulte o guia de processamento de registros de imagem.
Essa escolha é armazenada em sua configuração de inicialização
cloudcode.kubernetes
(encontrada em .vscode/launch.json)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.
Após a conclusão do lançamento, o Cloud Code encaminha automaticamente todas as portas de contêiner declaradas para sua máquina e exibe os URLs na janela de saída para que você possa navegar pelo aplicativo ativo.
Depois que a sessão for concluída, use os seguintes comandos do menu de contexto:
- Abrir os registros de implantação: abra os registros de aplicativo de uma implantação específica com o Explorador de registros do Cloud Code
- Open Service URL: abra o URL do serviço do aplicativo de um serviço específico em um navegador da Web.
Se você tiver desativado o modo de exibição na configuração de inicialização e quiser fazer alterações no aplicativo, reconstruí-lo e reimplantá-lo, no painel "Sessões de desenvolvimento", pause a ação de execução e clique em Reconstruir e reimplantar o aplicativo.
Para interromper a execução do aplicativo, clique em Stop na barra de ferramentas de depuração.
Depois que você interrompe o aplicativo, todos os recursos implantados do Kubernetes são excluídos do cluster. É possível alterar esse comportamento usando a sinalização
cleanUp
na sua configuração de inicialização.
Como 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, você verá as 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 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. As alterações nos tipos de arquivo que não são compatíveis com a recarga dinâmica acionam uma recriação de imagens 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, você pode especificar uma seção sync
no arquivo skaffold.yaml
para o
artefato que está sendo personalizado.
A configuração de sincronização pode ser uma das seguintes (em ordem de preferência):
auto
(apenas para artefatos Jib e Buildpacks. Esse será o padrão se não for especificado para Buildpacks.infer
manual
O exemplo de seção sync
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.
Como escolher um builder e um ambiente de compilação
Em um projeto que não contém um arquivo skaffold.yaml
na raiz ou não faz referência a skaffold.yaml
no arquivo .vscode/launch.json
, é possível usar a IU do Cloud Code para escolher um builder e um ambiente de build. A criação local é gratuita, já que ela usa seus próprios recursos. Criar com o
Cloud Build é bom para máquinas mais lentas ou que não correspondem
à arquitetura do processador do cluster de destino. Para informações sobre
o custo da criação do aplicativo usando o Cloud Build, consulte
Preços do Cloud Build.
Se você estiver usando uma das amostras, para usar a IU, exclua o arquivo skaffold.yaml
antes de executar uma ação de criação. Para ver os passos para escolher um builder e um ambiente de build sem a IU, consulte Como criar manualmente uma configuração do Skaffold.
Em um projeto sem um arquivo skaffold.yaml, abra a paleta de comandos (pressione
Ctrl
/Cmd
+Shift
+P
ou clique em Ver > Paleta de comandos) e execute Cloud Code: Run on Kubernetes ou Cloud Code: Debug no Kubernetes.Escolha um ambiente de criação.
Se você escolher o Cloud Build, especifique o registro de imagens.
Especifique um builder (Docker ou Buildpack) para cada imagem e as respectivas configurações.
Marque ou desmarque qualquer uma das opções de configuração e clique em Depurar ou Executar.
As opções escolhidas são salvas em um
arquivo skaffold.yaml
que pode ser editado diretamente para maior personalização.
Como personalizar a configuração de inicialização
Para configurar como seu aplicativo é executado, personalize o
arquivo skaffold.yaml
.
Também é possível configurar a inicialização especificando os
seguintes campos na configuração cloudcode.kubernetes
no seu
arquivo .vscode/launch.json
:
- skaffoldConfig: especifica o arquivo de configuração do skaffold que contém as definições de compilação e implantação.
- profile: especifica seu perfil skaffold preferido. Se não for definido, o perfil padrão será usado.
- imageRegistry: especifica o registro de imagens para onde as imagens serão enviadas.
- watch: especifique se é preciso acompanhar as alterações no espaço de trabalho e execute novamente o aplicativo. A menos que seja explicitamente definido como falso, verdadeiro por padrão.
- cleanUp: especificar se os recursos implantados do Kubernetes serão excluídos no cluster após o encerramento do aplicativo. A menos que seja explicitamente definido como falso, verdadeiro por padrão.
- portForward: especifique se quer encaminhar portas para os recursos expostos do Kubernetes no cluster para a máquina local. A menos que seja explicitamente definido como falso, verdadeiro por padrão.