Para acelerar el 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 módulos de Skaffold para desarrollar partes de una aplicación por separado.
Habilita 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, volver a implementar y reiniciar tus pods, Skaffold admite la copia de archivos modificados en un contenedor implementado. Esto significa que, cuando realizas cambios en archivos estáticos y de código fuente, puedes ver los cambios en segundos, lo que permite un ciclo de retroalimentación acelerado.
Para los archivos estáticos (como los 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 los cambios en los archivos compatibles y los sincroniza con el contenedor en ejecución en tu clúster. Los cambios en los tipos de archivos que no admiten la recarga en caliente activan una recompilación de imágenes y un reinicio de pods.
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 archivo skaffold.yaml para el
artefacto que estás personalizando.
Tu configuración de sincronización puede ser una de las siguientes (en orden de preferencia):
auto: Skaffold configura automáticamente la sincronización (solo para artefactos de Jib y Buildpacks artefactos). Esta es la opción predeterminada para Buildpacks.infer: Los destinos de cada archivo modificado se infieren del compilador.manual: Debes especificar los archivos en tu espacio de trabajo local y su destino en el contenedor en ejecución.
En la siguiente sección de muestra sync en un archivo skaffold.yaml, se especifica una
manual sincronización 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 obtener una descripción detallada de 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 cuando desarrolles 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 funciones 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 ve de la siguiente manera:
Realiza un cambio en tu proyecto. Por ejemplo, si usas la app del libro de visitas de Cloud Code Java, agrega un extremo nuevo a la clase
FrontendControllerde la siguiente manera:Abre el archivo
FrontendController.javadesdesrc/main/java/cloudcode/guestbook/frontendy 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); }Agrega las importaciones necesarias para las anotaciones nuevas,
RequestMappingyResponseBody.
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 que se implementen los cambios, confirma las actualizaciones.
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 configuraciones de Skaffold
Cuando desarrollas aplicaciones de microservicios, puede ser útil trabajar en secciones separadas de forma independiente para simplificar la depuración y la implementación.
Puedes desarrollar y depurar partes de tu aplicación de forma independiente si divides
tu aplicación en módulos de Skaffold. Por ejemplo, la
muestra de Bank of Anthos
es una aplicación que contiene diez microservicios. El archivo
skaffold.yaml
de la muestra agrupa estos servicios en cinco módulos de Skaffold llamados setup, db,
frontend, backend y loadgenerator.
Define módulos de Skaffold y dependencias de configuración
Para definir módulos de Skaffold y dependencias de configuración, sigue estos pasos:
Abre el proyecto en el que deseas definir los módulos.
Abre el archivo
skaffold.yaml.Si tu archivo
skaffold.yamltiene varias configuraciones, para convertir una configuración en un módulo de Skaffold, especifica la siguiente línea:metadata: name: MODULE_NAME_1Por ejemplo, en el archivo
skaffold.yamlde Bank of Anthos, el módulodbdefine las implementaciones de la base de datos:Para 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
configsa la secciónrequiresde tu archivoskaffold.yaml.Por ejemplo, el archivo
skaffold.yamlde Bank of Anthos incluye la dependencia de configuraciónsetup.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_NAMELas configuraciones que se enumeran de esta manera pueden hacer referencia a las dependencias definidas en el mismo archivo o en otros archivos
skaffold.yamldel proyecto actual.Para probar las dependencias de configuración, compila cada uno de los módulos de Skaffold por separado para asegurarte de que se implementen con sus dependencias. Para ello, sigue los pasos que se indican en Compila módulos de Skaffold específicos y sus dependencias.
Compila módulos de Skaffold específicos y sus dependencias
Después de definir tus módulos y sus dependencias, puedes especificar qué módulos deseas ejecutar en la pestaña Compilar / Implementar cuando seleccionas Ejecutar > Editar configuraciones.Instala las últimas compilaciones de usuarios con información privilegiada.
Ve a Ejecutar > Editar configuraciones y abre la pestaña Compilar / Implementar.
Para Configuración de Skaffold, selecciona skaffold.yaml.
Elige una de estas opciones:
- Compilar e implementar con todos los módulos y dependencias
- Compilar e implementar con (si hay módulos disponibles) y selecciona los módulos que deseas compilar e implementar.
Tu selección se conservará para implementaciones posteriores. Si seleccionas un subconjunto de módulos, Cloud Code muestra una advertencia sobre la implementación de un subconjunto de módulos y no de todo el sistema.
Desarrollo continuo en Kubernetes
Una vez que hayas configurado tu objetivo de ejecución con las opciones que desees, puedes optar por la ejecución habitual de la aplicación o iniciar un ciclo de iteración de desarrollo en tu IDE para propagar cualquier cambio realizado en la fuente y las dependencias de tu aplicación activa.
El objetivo de ejecución Develop on Kubernetes inicia el ciclo de desarrollo en tu clúster de Kubernetes. Después de iniciar el ciclo de desarrollo, Cloud Code, con Skaffold, compila una imagen para el proyecto, la etiqueta, la envía al repositorio configurado y usa kubectl para implementar los manifiestos de Kubernetes del proyecto.
- Haz clic en el ícono Develop on Kubernetes y, luego, en Edit Configurations para abrir el diálogo Run/Debug Configurations.
- Personaliza la implementación mediante las opciones de configuración disponibles.
- Si deseas que Cloud Code vuelva a implementar tu aplicación automáticamente después de guardar los cambios, en Modo de observación: volver a compilar y volver a implementar, selecciona Al guardar el archivo. Las aplicaciones nuevas de Kubernetes tienen A pedido seleccionada de forma predeterminada. Para obtener más información sobre los modos de observación, consulta Modos de observación.
- Si tu aplicación está configurada para usar módulos de Skaffold, puedes seleccionar solo para compilar o implementar módulos específicos.
- Cuando estés satisfecho con la configuración, haz clic en Aceptar y, luego, en el ícono Ejecutar.
¿Qué sigue?
- Usa el clúster de minikube integrado de Cloud Code para el desarrollo local.
- Depura tu aplicación en Cloud Code.
- Lee los detalles sobre la función de sincronización de archivos de Skaffold.