Acelera el desarrollo en Cloud Code para IntelliJ

Para acelerar tu desarrollo local en Cloud Code para IntelliJ, aprovecha la sincronización de archivos y la recarga en caliente, la implementación automática al guardar y usa los módulos de Skaffold para desarrollar partes de una aplicación por separado.

Habilita la sincronización de archivos y la recarga en caliente de Skaffold

Para mejorar la eficiencia de tu flujo de trabajo de desarrollo local y evitar tener que volver a compilar, implementar y reiniciar los Pods, Skaffold admite copiar archivos modificados en un contenedor implementado Esto significa que, cuando realices cambios en los archivos de código fuente y estáticos, podrás ver que se aplican en segundos, lo que genera un ciclo de retroalimentación acelerado.

Para los archivos estáticos (como archivos HTML y CSS), este comportamiento de copia de archivos se denomina sincronización de archivos.

Para los archivos de código fuente, este comportamiento se denomina recarga en caliente y admite los siguientes tipos de archivos:

  • Go: *.go
  • Java: *.java, *.kt, *.scala, *.groovy, *.clj
  • NodeJS: *.js, *.mjs, *.coffee, *.litcoffee, *.json

Con la recarga en caliente configurada, Skaffold detecta cambios en los archivos compatibles y los sincroniza con el contenedor en ejecución en tu clúster. Cambios en los tipos de archivo que no admiten activos la recarga activa una recompilación de la imagen y el reinicio del Pod.

La sincronización automática de archivos y la recarga en caliente están habilitadas según la configuración predeterminada. trabajarás con Buildpacks como compilador preferido. Para otros desarrolladores, como Docker, puedes especificar una sección sync en tu archivo skaffold.yaml para la del artefacto que personalizas.

La configuración de sincronización puede ser una de las siguientes (en orden de preferencia):

  • auto: Skaffold configura la sincronización automáticamente. (solo para artefactos de Jib y Buildpacks). Esta es la configuración predeterminada de los paquetes de compilación.
  • infer: Los destinos de cada archivo modificado se infieren del compilador.
  • manual: Debes especificar los archivos en tu lugar de trabajo local y su destino en el contenedor en ejecución.

En la siguiente sección sync de ejemplo en un archivo skaffold.yaml, se especifica una sincronización manual para sincronizar todos los archivos HTML /static-html con la carpeta static en un contenedor:

build:
  artifacts:
    - image: gcr.io/k8s-skaffold/node-example
      context: node
      sync:
        manual:
          - src: 'static-html/*.html'
            dest: static

Para ver en detalle la sincronización de archivos y la especificación de reglas de sincronización, consulta la Guía de Skaffold sobre la sincronización de archivos.

Agrega funciones nuevas durante el desarrollo en Kubernetes

Después de configurar la sincronización de archivos y la recarga en caliente, inicia un ciclo de iteración y agrega más atributos a tu proyecto. Los cambios se implementan en tu clúster de Kubernetes sin detener ni quitar la implementación, compilar ni etiquetar de forma manual la imagen, ni actualizar el clúster.

Un ciclo de iteración estándar se parece al siguiente:

  1. Realiza un cambio en tu proyecto. Por ejemplo, si usas en la app del libro de visitas para Java de Cloud Code, agrega un extremo nuevo FrontendController de la siguiente manera:

    1. Abre el archivo FrontendController.java desde src/main/java/cloudcode/guestbook/frontend y agrega lo siguiente:

      @RequestMapping("/greeting")
      @ResponseBody
      public String greeting(@RequestParam(value="name", defaultValue="World") String name) {
         return String.format("Hello from Kubernetes with IntelliJ, %s!", name);
      }
      
    2. Agrega las importaciones necesarias para las anotaciones nuevas, RequestMapping y ResponseBody

  2. Guarda los cambios (Ctrl/Cmd+S) o compila el proyecto.

    Puedes mirar el progreso y los registros de la implementación en la ventana de la consola. Después de implementar los cambios, confirma las actualizaciones.

  3. Para finalizar la sesión de desarrollo continuo, haz clic en el ícono Detener.

    Cloud Code borra todos los recursos de Kubernetes que se usan para la sesión de desarrollo.

Desarrolla aplicaciones de microservicios con los parámetros de configuración de Skaffold

Cuando se desarrollan aplicaciones de microservicios, puede ser útil trabajar en de forma independiente para simplificar la depuración y la implementación.

Puedes desarrollar y depurar partes de tu aplicación de forma independiente al dividir tu aplicación en los módulos de Skaffold. Por ejemplo, el Muestra de Bank of Anthos es una aplicación que contiene diez microservicios. El valor skaffold.yaml de archivos agrupa estos servicios en cinco módulos de Skaffold llamados setup, db, frontend, backend y loadgenerator.

Cómo definir módulos y dependencias de configuración de Skaffold

Para definir módulos y dependencias de configuración de Skaffold, sigue estos pasos:

  1. Abre el proyecto en el que deseas definir los módulos.

  2. Abre el archivo skaffold.yaml.

  3. Si tu archivo skaffold.yaml tiene varias configuraciones, para hacer que una configuración sea un módulo de Skaffold, especifica la siguiente línea:

    metadata:
      name: MODULE_NAME_1
    

    Por ejemplo, en skaffold.yaml del Banco de Anthos, el módulo db define implementaciones de bases de datos:

    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. En el caso de las configuraciones que dependen de que se implemente otra configuración antes de que se pueda implementar la configuración actual, debes agregar la configuración a tus dependencias. Para especificar una dependencia de configuración, agrega una lista configs al Sección requires de tu archivo skaffold.yaml.

    Por ejemplo, el archivo skaffold.yaml de Bank of Anthos incluye la dependencia de configuración setup.

    Para definir una dependencia, agrega lo siguiente a tu archivo skaffold.yaml, en el que DEPENDENCY_NAME es el nombre de tu dependencia.

    requires:
        - configs: DEPENDENCY_NAME
    

    Las configuraciones enumeradas de esta manera pueden hacer referencia a dependencias definidas en el el mismo archivo u otros archivos skaffold.yaml en el proyecto actual.

  5. Compila cada una de las bibliotecas de Skaffold para probar tus dependencias de configuración módulos por separado para garantizar que se implementen con las dependencias siguiendo los pasos Compila módulos específicos de Skaffold y sus dependencias.

Compila módulos específicos de Skaffold y sus dependencias

Después de definir los módulos y sus dependencias, puedes especificar qué módulos que desees ejecutar en la pestaña Build / Deploy cuando selecciones Ejecutar > Edita los parámetros de configuración.

  1. Instala las últimas compilaciones de usuarios con información privilegiada.

  2. Ve a Ejecutar > Edita la configuración y abre la pestaña Build / Deploy.

  3. En Configuración de Skaffold, selecciona skaffold.yaml.

    Elige una de estas opciones:

    • Compila e implementa con todos los módulos y dependencias
    • Build and deploy with (si hay módulos disponibles) y selecciona el en los módulos que quieres compilar e implementar.

Tu selección se conservará para implementaciones posteriores. Si seleccionas un subconjunto módulos, Cloud Code muestra una advertencia sobre la implementación de un subconjunto de los módulos y no todo el sistema.

Desarrollo continuo en Kubernetes

Una vez que hayas configurado tu objetivo de ejecución con las opciones que desees, puedes puedes optar por una ejecución regular de tu aplicación o comenzar una de iteración en tu IDE para propagar los cambios realizados a tu código fuente y dependencias a tu aplicación activa.

El objetivo de ejecución Develop on Kubernetes comienza el ciclo de desarrollo en tu clúster de Kubernetes. Después de iniciar el ciclo de desarrollo, Cloud Code, mediante Skaffold, compila una imagen para el proyecto y, luego, la etiqueta, la envía al repositorio configurado y usa kubectl para implementar los manifiestos de Kubernetes del proyecto.

  1. Haz clic en el ícono Develop on Kubernetes y, luego, en Edit Configurations para abrir el diálogo Run/Debug Configurations.
  2. Personaliza la implementación mediante las opciones de configuración disponibles.
  3. Si quieres que Cloud Code vuelva a implementar tu aplicación automáticamente después de guardar los cambios, en Watch mode - rebuild volver a implementar, selecciona Guardar al guardar. Las nuevas aplicaciones de Kubernetes tienen La opción A pedido está seleccionada de forma predeterminada. Para obtener más información sobre los modos de reloj, consulta Modos de reloj.
  4. Si tu aplicación está configurada para usar Módulos de Skaffold, puedes Selecciona la opción para compilar o implementar solo módulos específicos.
  5. Cuando estés conforme con la configuración, haz clic en Aceptar y, luego, en el ícono Run.

¿Qué sigue?

Obtenga asistencia

Para enviar comentarios o informar un problema en tu IDE de IntelliJ, ve aTools >Cloud Code >Help / About >Envía comentarios o informa un problema para informar un problema en GitHub o hacer una pregunta en Stack Overflow.