Para acelerar tu desarrollo local en Cloud Code para Cloud Shell, aprovecha las herramientas la sincronización y la recarga en caliente, la implementación automática cuando se guarda, y el uso de 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, implementar y reiniciar los Pods, Skaffold admite copiar archivos modificados en un contenedor implementado Esto significa que cuando haces cambios en y de código fuente, puedes ver cómo se aplican los cambios en segundos, lo que acelera ciclo de retroalimentación.
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 los cambios en los archivos compatibles y los sincroniza cambios al 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 espacio de trabajo local y su destino en el contenedor en ejecución.
En la siguiente sección sync
de ejemplo de un archivo skaffold.yaml
, se especifica un
Sincronización de manual
para sincronizar todos los archivos HTML /static-html
con 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 cuando desarrollas 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 cuenta de Kubernetes clúster sin detener ni quitar el Deployment, compilarlo etiquetar la imagen o actualizar el clúster.
Un ciclo de iteración estándar se parece al siguiente:
Haz 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:Abre el archivo
FrontendController.java
desdesrc/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); }
Agrega las importaciones necesarias para las anotaciones nuevas,
RequestMapping
yResponseBody
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.
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 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:
Abre el proyecto en el que deseas definir los módulos.
Abre el archivo
skaffold.yaml
.Si tu archivo
skaffold.yaml
tiene varias configuraciones, para hacer una configura 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ódulodb
define implementaciones de bases de datos: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
a la secciónrequires
de tu archivoskaffold.yaml
.Por ejemplo, el archivo
skaffold.yaml
del Bank of Anthos incluye lo siguiente: 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_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.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 quieras ejecutar con Cloud Code en tu archivo launch.json
.
Si tu proyecto no tiene un archivo launch.json
definido cuando ejecutas Cloud Code: Run on Kubernetes o Cloud Code: Debug on Kubernetes, se te solicita que selecciones los módulos que deseas compilar:
- Abre la paleta de comandos (
Ctrl
/Cmd
+Shift
+P
) y, luego, ejecuta Cloud Código: Ejecuta en Kubernetes - Haz clic en Select modules.
- Elige los módulos que quieres implementar y haz clic en OK. Cada módulo se compila con sus dependencias.
- Cuando se te solicite, elige un registro de imágenes y, luego, presiona
Enter
.
Si tu proyecto tiene un launch.json
, sigue estos pasos para elegir los módulos de Skaffold que se compilarán:
Abre el archivo
launch.json
de tu proyecto.Edita la configuración de inicio para agregar la opción
skaffoldFlags
con una Lista delimitada por comas demodules
que se compilará. Si se omiteskaffoldFlags
, se compilan todos los módulos.{ "name": "Run on Kubernetes", "type": "cloudcode.kubernetes", "request": "launch", "skaffoldConfig": "${workspaceFolder}/skaffold.yaml", "skaffoldFlags": { "modules": ["MODULE_NAME_2,MODULE_NAME_2"], "watch": true, "cleanUp": true, } }
Ejecuta la configuración de inicio que editaste.
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 Run on Kubernetes inicia el ciclo de desarrollo en tu clúster de Kubernetes. Cuando comienzas el ciclo de desarrollo, Cloud Code, con Skaffold, compila una imagen para el proyecto y, luego, lo etiqueta, lo envía al repositorio configurado y kubectl para implementar los manifiestos del proyecto de Kubernetes.
- Personaliza la implementación mediante las opciones de configuración disponibles.
- Si tu aplicación está configurada para usar Módulos de Skaffold, puedes seleccionar módulos específicos para compilar o implementar.
- Abre la paleta de comandos (presiona
Ctrl
/Cmd
+Shift
+P
) y, luego, ejecuta la Comando Cloud Code: Run on Kubernetes. - Confirma si quieres usar el Contexto de Kubernetes para ejecutar la app (o cambiar a una preferida). Para obtener más información sobre cómo configurar un contexto de Kubernetes, consulta Cómo configurar la configuración.
Si elegiste un clúster remoto como contexto, elige una imagen cuando se te solicite. al que se enviarán las imágenes. Si usas Container Registry, puedes busca un registro existente o especifica el nombre del registro que deseas crear. Si tu proyecto tiene La API de Artifact Registry está habilitada y al menos un repositorio de Artifact Registry puedes navegar hasta un repositorio existente de Artifact Registry y seleccionarlo.
A continuación, Cloud Code compila los contenedores, los envía al registro, aplica las configuraciones de Kubernetes al clúster y espera el lanzamiento.
¿Qué sigue?
- Usa las funciones integradas clúster de minikube para el desarrollo local.
- Depura tu aplicación en Cloud Code
- Lee los detalles en Función de sincronización de archivos de Skaffold