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

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

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

En el caso de los archivos de código fuente, este comportamiento se denomina recarga en caliente y funciona para 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, lo que evita la necesidad de volver a compilar una imagen engorrosa y reiniciar el Pod. Sin embargo, los cambios en otros tipos de archivos activan una recompilación de imagen.

La sincronización automática de archivos y la recarga en caliente están habilitadas de forma predeterminada cuando trabajas con Buildpacks como tu compilador preferido. Para otros compiladores como Docker, puedes especificar una sección sync en tu skaffold.yaml para el artefacto que personalizas.

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

  • auto (solo para artefactos de Jib y Buildpacks)
  • infer
  • manual

Si especificaras una sincronización de manual para sincronizar todos los archivos HTML /static-html en la carpeta static del contenedor, skaffold.yaml contendrá esta sección sync:

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

Para obtener una descripción detallada de la sincronización de archivos y especificar reglas de sincronización, consulta la guía de Skaffold sobre la sincronización de archivos.