Acelere o desenvolvimento no Cloud Code for IntelliJ

Para acelerar o desenvolvimento local no Cloud Code for IntelliJ, aproveite a sincronização de arquivos, a recarga automática e 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 de arquivos do Skaffold e a recarga automática

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 é compatível com a cópia de arquivos alterados para um contêiner implantado. Isso significa que, ao fazer mudanças em arquivos estáticos e de código-fonte, elas entram em vigor em segundos, criando um feedback loop 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 alterações nos arquivos compatíveis e sincroniza essas alterações com o contêiner em execução no cluster. Mudanças nos tipos de arquivo que não são compatíveis com a recarga automática acionam a recompilação da imagem e a 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 está sendo personalizado.

A configuração de sincronização pode ser uma das seguintes (em ordem de preferência):

  • auto: o Skaffold configura a sincronização automaticamente. (somente para artefatos do Jib e Buildpacks). Esse é o padrão para Buildpacks.
  • infer: os destinos de cada arquivo alterado são inferidos pelo builder.
  • manual: especifique os arquivos no espaço de trabalho local e o destino deles no contêiner em execução.

A seção sync de exemplo 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.

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 projeto. As alterações são implantadas no cluster do Kubernetes sem interromper e remover a implantação, criar e incluir tags na imagem manualmente ou atualizar o cluster.

Um ciclo de iteração padrão é semelhante ao seguinte:

  1. Faça uma alteração no projeto. Por exemplo, se você estiver usando o aplicativo de livro de visitas do Cloud Code em Java, adicione um novo endpoint à classe FrontendController da seguinte maneira:

    1. Abra o arquivo FrontendController.java em src/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);
      }
      
    2. Adicione as importações necessárias para as novas anotações, RequestMapping e ResponseBody.

  2. 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.

  3. Para encerrar a sessão de desenvolvimento contínuo, clique no ícone Stop.

    O Cloud Code exclui todos os recursos do Kubernetes usados para a sessão de desenvolvimento.

Desenvolver aplicativos de microsserviços usando as 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-o em módulos do Skaffold. Por exemplo, o exemplo 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 os módulos e as dependências de configuração do Skaffold

Para definir os módulos e as dependências de configuração do Skaffold:

  1. Abra o projeto em que você quer definir os módulos.

  2. Abra o arquivo skaffold.yaml.

  3. Se o arquivo skaffold.yaml tiver várias configurações, especifique a seguinte linha para transformá-la em um módulo do Skaffold:

    metadata:
      name: MODULE_NAME_1
    

    Por exemplo, no skaffold.yaml do Bank of Anthos, o módulo db define as implantações de banco de dados:

    apiVersion: skaffold/v3
    kind: Config
    metadata:
      name: db # module defining database deployments
    requires:
    - configs:
      - setup
    build:
      artifacts:
      - image: accounts-db
        context: src/accounts-db
      - image: ledger-db
        context: src/ledger-db
    manifests:
      rawYaml:
      - dev-kubernetes-manifests/accounts-db.yaml
      - dev-kubernetes-manifests/ledger-db.yaml
    deploy:
      kubectl: {}
  4. Para configurações que dependem da implantação de outra configuração antes da atual ser implantada, adicione a configuração às suas dependências. Para especificar uma dependência de configuração, adicione uma lista configs à seção requires do arquivo skaffold.yaml.

    Por exemplo, o arquivo skaffold.yaml do Bank of Anthos inclui a dependência de configuração setup.

    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.

  5. Teste as dependências de configuração criando cada um dos módulos do Skaffold separadamente para garantir que sejam implantados com as dependências. Para isso, 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 > Editconfiguration.

  1. Instale as versões mais recentes do Insiders.

  2. Acesse Executar > Editar configurações e abra a guia Build / Deploy.

  3. 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, é possível 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 mudanças feitas na origem e nas dependências do aplicativo ativo.

O destino de execução Desenvolver 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, marca-a, envia por push para o repositório configurado e usa o kubectl para implantar os manifestos do Kubernetes do projeto.

  1. Clique no ícone Develop on Kubernetes e em Edit Configurations para abrir a caixa de diálogo Run/Debug Configurations.
  2. Personalize sua implantação usando as opções de configuração disponíveis.
  3. 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.
  4. Se o aplicativo estiver configurado para usar módulos do Skaffold, você poderá selecionar apenas para criar ou implantar módulos específicos.
  5. Quando estiver tudo certo com a configuração, clique em OK e, em seguida, no ícone Run.

A seguir

Receba ajuda

Para enviar um feedback ou informar um problema no ambiente de desenvolvimento integrado do IntelliJ, acesse Tools > Cloud Code > Help / About > Envie feedback ou informe um problema para informar um problema no GitHub ou faça uma pergunta no Stack Overflow.