Acelere o desenvolvimento no Cloud Code para IntelliJ

Para acelerar seu desenvolvimento local no Cloud Code para IntelliJ, use os atributos 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.

Adicione novos recursos ao desenvolver no Kubernetes

Depois de configurar a sincronização de arquivos e a recarga dinâmica, 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:

  1. 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:

    1. Abra o arquivo FrontendController.java no 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 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ços, pode ser útil trabalhar em de maneira independente para simplificar a depuração e a implantação.

É possível desenvolver e depurar partes do aplicativo de maneira independente dividindo seu aplicativo em módulos do Skaffold. Por exemplo, o Amostra do Bank of Anthos (em inglês) é um aplicativo com 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:

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

  2. Abra o arquivo skaffold.yaml.

  3. 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ódulo db define 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 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ção requires do arquivo skaffold.yaml.

    Por exemplo, o arquivo skaffold.yaml do Bank of Anthos inclui o 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 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.

  5. 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 na guia Build / Deploy ao selecionar Executar > Editar configurações.

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

  2. Acesse Executar > Editar configurações e abrir a guia Criar / implantar.

  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 selecione o 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 vai mostrar 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 qualquer alteração feita na origem e nas dependências para o aplicativo ativo.

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

  1. Clique no ícone Desenvolver no Kubernetes e depois 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 relógio, consulte Modos de relógio.
  4. Se o aplicativo estiver configurado para usar módulos Skaffold, que pode selecione para criar ou implantar apenas módulos específicos.
  5. Quando estiver tudo certo com a configuração, clique em OK e clique em no ícone Executar.

A seguir

Receber suporte

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.