Usa Skaffold con Cloud Deploy

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

Cloud Deploy usa Skaffold para las operaciones de renderización e implementación. También puedes usarlo para el desarrollo, la compilación y las pruebas locales, y para las funciones de implementación avanzadas. Sin embargo, Cloud Deploy solo requiere una configuración de Skaffold que identifique los manifiestos que se renderizarán y aplicarán.

Se incluye como parte de Cloud Deploy.

¿Qué es Skaffold?

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

Skaffold incluye las siguientes funciones:

  • Te brinda un control discreto de las actividades de canalización de CI/CD (compilación, renderización, implementación de pruebas, etcétera).

  • Es útil como herramienta de desarrollo local.

  • Los perfiles de Skaffold te permiten diferenciar entre diferentes entornos con diferentes opciones de configuración de compilación, prueba y, también, implementación, todas en el mismo archivo de configuración.

¿Por qué Cloud Deploy usa Skaffold?

Google Cloud Deploy usa Skaffold para separar las herramientas de renderización de la canalización de entrega. La canalización de entrega solo define la progresión de destino a destino, mientras que la configuración de Skaffold define qué manifiestos se renderizan y cómo. Esto hace que la renderización de manifiestos sea flexible sin afectar la forma en que defines tu canalización de entrega.

Estas son algunas de las ventajas que proporciona Skaffold cuando se usa con Cloud Deploy:

  • Integración sencilla

    Comienza con un bucle de desarrollo local. Puedes compartir tu archivo skaffold.yaml con tu equipo, lo que puede permitir la coherencia y ayudar a los nuevos miembros del equipo a comenzar.

  • Control coherente sobre la renderización en diversos destinos de implementación

    Puedes usar perfiles de Skaffold, con implementación y renderización diferentes para distintos destinos.

  • Elección de herramientas de renderización sin comprometer cómo se definen las canalizaciones de entrega

    El uso de Skaffold permite que Cloud Deploy separe la definición de la canalización de entrega de los detalles de renderización. Esta separación te permite experimentar con tus manifiestos sin interrumpir la canalización de entrega.

  • Proceso de renderización coherente

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

  • Verificaciones de estado de la implementación

    Skaffold las realiza y Cloud Deploy las usa.

¿Cómo usa Cloud Deploy Skaffold?

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

    Como parte de la creación de la versión, Cloud Deploy llama a Cloud Build que, a su vez, invoca a skaffold diagnose y skaffold render para renderizar el manifiesto o los manifiestos con esa fuente de renderización 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.

  • Cuando realizas una 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 implementar tu aplicación, a menos que uses destinos personalizados. Sin embargo, puedes usar herramientas como Helm o Kustomize como renderizadores. Para obtener más información sobre cómo Cloud Deploy realiza implementaciones sin usar implementadores específicos (como Helm), consulta Arquitectura de servicio.

Haz que Skaffold trabaje para ti

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

    1. Determina las necesidades de tu canalización de entrega.

      ¿Cuántos objetivos tendrás? La renderización y la implementación son las mismas para cada uno. Si la configuración es la misma para cada destino en tu progresión, no necesitarás usar perfiles de Skaffold. Solo necesitas un archivo skaffold.yaml que describa los manifiestos que se renderizarán.

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

      Define esto en tu archivo skaffold.yaml y vincúlalo en la secuencia de progresión de la definición de tu canalización de entrega.

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

    3. Cómo establecer el nivel de verbosidad del registro de Skaffold

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

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

    Al final de tu proceso de CI, pasa el skaffold.yaml, la fuente de renderización y las imágenes de contenedor que se propagarán al manifiesto renderizado.

  3. Opcional: Configura tu bucle de desarrollo local mediante Skaffold.

    El uso de Skaffold para el desarrollo es opcional en Cloud Deploy. Lo único que se requiere para que Cloud Deploy funcione es un archivo skaffold.yaml que identifica los manifiestos que se renderizarán.

¿Qué sigue?

  • Visita el sitio de Skaffold para obtener información sobre cómo funciona y qué puede hacer por ti.

  • Obtén información sobre cómo Cloud Deploy selecciona las versiones de las herramientas que se usarán y cómo determinar qué versiones están en uso.

  • Aprende a usar los perfiles de Skaffold junto con herramientas avanzadas de administración de manifiestos, como Helm, Kustomize y kpt.

  • Prueba la explicación de los perfiles de Skaffold.