Usar Skaffold con Cloud Deploy

En este artículo se describe Skaffold, cómo y por qué lo usa Cloud Deploy, y qué debe hacer para que funcione.

Cloud Deploy usa Skaffold para las operaciones de renderizado y despliegue. También puedes usarlo para desarrollar, compilar y probar aplicaciones de forma local, así como para acceder a funciones de implementación avanzadas. Sin embargo, Cloud Deploy solo requiere una configuración de Skaffold que identifique los manifiestos que se van a renderizar y aplicar.

¿Qué es Skaffold?

Skaffold es una herramienta de línea de comandos que permite el desarrollo continuo de aplicaciones nativas de Kubernetes. Puedes usar Skaffold para configurar un espacio de trabajo de desarrollo local que se use con los flujos de procesamiento de entrega continua de Cloud Deploy.

Skaffold incluye las siguientes funciones:

  • Te permite controlar de forma independiente las actividades del flujo de procesamiento de CI/CD (compilación, renderización, prueba de despliegue, etc.).

  • Es útil como herramienta de desarrollo local.

  • Los perfiles de Skaffold te permiten diferenciar entre distintos entornos con diferentes configuraciones de compilación, prueba y despliegue, todo en el mismo archivo de configuración.

¿Por qué usa Cloud Deploy Skaffold?

Google Cloud Deploy usa Skaffold para separar las herramientas de renderizado de la canalización de entrega. Tu flujo de procesamiento de entrega solo define la progresión de un destino a otro, mientras que tu configuración de Skaffold define qué manifiestos se renderizan y cómo. De esta forma, el renderizado de manifiestos es flexible sin que afecte a la forma en que defines tu canal de distribución.

Estas son algunas de las ventajas que ofrece Skaffold cuando lo usas con Cloud Deploy:

  • Incorporación sencilla

    Empieza con un bucle de desarrollo local. Puedes compartir tu archivo skaffold.yaml con tu equipo, lo que puede fomentar la coherencia y ayudar a los nuevos miembros a empezar.

  • Control coherente sobre la renderización en diferentes objetivos de implementación

    Puedes usar perfiles de Skaffold con diferentes renderizaciones e implementaciones para distintos destinos.

  • Elección de herramientas de renderización sin comprometer la forma en que se definen las cadenas de suministro

    Skaffold permite a Cloud Deploy separar la definición del flujo de procesamiento de entrega de los detalles de renderizado. Esta separación te permite experimentar con tus manifiestos sin interrumpir la canalización de entrega.

  • Proceso de renderizado coherente

    La fuente de renderización y tus contenedores se usan para generar manifiestos renderizados.

  • Comprobaciones del estado de los despliegues

    Skaffold las lleva a cabo y Cloud Deploy las usa.

¿Cómo usa Cloud Deploy Skaffold?

  • La fuente de renderización y las referencias a las imágenes de contenedor se transfieren a Cloud Deploy cuando crea una versión.

    Como parte de la creación de la versión, Cloud Deploy llama a Cloud Build, que, a su vez, invoca skaffold diagnose y skaffold render para renderizar el archivo o los archivos de manifiesto con ese origen de renderizado y esas imágenes.

  • Puedes usar perfiles de Skaffold para diferenciar los manifiestos que se aplicarán a diferentes destinos.

  • Cloud Deploy admite módulos estáticos de Skaffold.

  • Durante la implementación, Cloud Deploy llama a skaffold apply para aplicar el manifiesto o los manifiestos renderizados al clúster de destino.

  • Cloud Deploy no admite el uso de otros implementadores para desplegar tu aplicación, a menos que utilices destinos personalizados. Sin embargo, puedes usar herramientas como Helm o Kustomize como renderizadores. Para obtener más información sobre cómo implementa Cloud Deploy sin usar implementadores específicos (como Helm), consulta el artículo sobre la arquitectura de servicios.

Haz que Skaffold trabaje para ti

  1. Configura Skaffold según las necesidades de tu canalización.

    1. Determina las necesidades de tu flujo de procesamiento de entrega.

      ¿Cuántos objetivos tendrás? ¿El renderizado y la implementación son iguales para cada uno? Si la configuración es la misma para cada destino de tu progresión, no tendrás que usar perfiles de Skaffold. Solo necesitas un skaffold.yaml archivo que describa los manifiestos que se van a renderizar.

    2. Si procede, crea un perfil de Skaffold para cada destino

      Defínelo en el archivo skaffold.yaml y vincúlalo en la secuencia de progresión de la definición del flujo de procesamiento de entrega.

      Consulta la documentación de Skaffold para obtener más información sobre los perfiles de Skaffold. Además, el documento Gestionar archivos de manifiesto en Cloud Deploy incluye ejemplos de configuraciones de perfil.

    3. Definir el nivel de detalle de los registros de Skaffold

      De forma predeterminada, el nivel de registro de Skaffold se define en warn. Puedes cambiarlo a debug en la configuración del entorno de ejecución de un destino si defines verbose: true.

  2. Conecta Cloud Deploy a tu sistema de integración continua.

    Al final del proceso de integración continua, pasa el skaffold.yaml, la fuente de renderización y las imágenes del contenedor que se van a rellenar en el manifiesto renderizado.

  3. Opcional: configura tu bucle de desarrollo local con Skaffold.

    Usar Skaffold para el desarrollo es opcional en Cloud Deploy. Lo único que se necesita para que Cloud Deploy funcione es un archivo skaffold.yaml que identifique los manifiestos que se van a renderizar.

Siguientes pasos

  • Visita el sitio de Skaffold para descubrir cómo funciona y qué puede hacer por ti.

  • Consulta cómo selecciona Cloud Deploy la versión de Skaffold que se va a usar, cuándo cambia la versión de Skaffold y cómo determinar qué versión se está usando.

  • Consulta cómo usar perfiles de Skaffold junto con herramientas avanzadas de gestión de archivos de manifiesto, como Helm, Kustomize y kpt.

  • Consulta la guía de perfiles de Skaffold.