Comienza a usar Skaffold en Google Cloud Deploy

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

En este documento, se describe cómo comenzar a usar Skaffold como parte de Google Cloud Deploy, incluido lo siguiente:

  • Configura Skaffold para usarlo con una canalización de entrega de Google Cloud Deploy
  • Usar Skaffold y Google Cloud Deploy con herramientas de procesamiento de terceros, como Helm y Kustomize
  • De forma opcional, usa Skaffold para el desarrollo local
  • De forma opcional, usa Skaffold para la integración y la implementación continuas (IC/EC)

¿Por qué usar Skaffold?

¿Quieres saber por qué Google Cloud Deploy usa Skaffold y por qué necesitas administrar una configuración de Skaffold? Más información.

Tengo experiencia con la CI/CD, pero actualmente no uso Skaffold

Skaffold es una herramienta de línea de comandos de código abierto para mejorar la productividad de los desarrolladores. Organiza el desarrollo continuo, la integración continua (IC) y la entrega continua (CD).

Skaffold proporciona una configuración declarativa y portátil mediante el uso de una arquitectura conectable, lo que te permite usar diferentes herramientas para la fase de renderización.

Cuando se crea una versión, Google Cloud Deploy llama a Skaffold a fin de procesar tus manifiestos y, luego, aplicarlos para implementar tu aplicación en cada destino de tu progreso. Después de la implementación, las verificaciones de estado de Skaffold supervisan el clúster de destino para una implementación exitosa.

Skaffold para el desarrollo continuo

Puedes usar Skaffold para el desarrollo continuo a fin de que las imágenes se compilen, se prueben y se implementen en un clúster (o Minikube) a medida que realizas cambios en el código. Las extensiones de IDE de Cloud Code para VS Code y Cloud Code para IntelliJ integran Skaffold en los IDE de Visual Studio Code y JetBrains para el desarrollo continuo.

Skaffold para entrega continua

También puedes usar Skaffold para la entrega continua con pasos de compilación, implementación, renderización y aplicación. Google Cloud Deploy usa las funciones de procesamiento y aplicación de Skaffold. Para usar Google Cloud Deploy, necesitas al menos un archivo de configuración skaffold.yaml válido.

A través de Skaffold, también puedes integrarlas en herramientas de administración de manifiesto de terceros, como Helm y Kustomize. Esto te permite usar las funciones de esas herramientas para la renderización de manifiestos. kubectl sigue siendo el implementador para estos manifiestos.

Soy novato en la implementación en Kubernetes.

Con Skaffold, puedes configurar un conjunto base de manifiestos para todas las implementaciones y, luego, usar el motor de procesamiento de Skaffold, mediante Google Cloud Deploy, para renderizar y, luego, implementar cada manifiesto específico de la implementación a partir de uno de esos manifiestos base.

Puedes leer más sobre cómo administrar manifiestos, incluidos ejemplos de cómo usar Skaffold y Google Cloud Deploy con herramientas comunes de plantillas de manifiestos, como Helm y Kustomize.

¿Qué se necesita para que Google Cloud Deploy funcione?

Para usar una canalización de entrega básica de Google Cloud Deploy, el archivo de configuración skaffold.yaml necesita al menos la siguiente configuración:

  • La información del encabezado que necesitan todas las configuraciones de skaffold.yaml:

    apiVersion: skaffold/v2beta28
    Kind: Config
    
  • Una estrofa deploy, con deploy.kubectl para implementar en GKE o Anthos, o en deploy.cloudrun para implementar en Cloud Run.

    Para GKE: yaml deploy: kubectl: manifests: - ...

    En manifests, una lista de todos los manifiestos sin procesar de Kubernetes. Si planeas usar un procesador (Helm o Kustomize, por ejemplo) para renderizar los manifiestos que se implementarán, consulta Agrega compatibilidad con Kustomize a skaffold.yaml y Agrega compatibilidad con Helm a skaffold.yaml a fin de obtener orientación sobre cómo configurar Skaffold para usar estas herramientas.

    Para Cloud Run:

    metadata:
      name:
    manifests:
      rawYaml:
      - ...
    deploy:
      cloudrun: {}
    

Crea un archivo skaffold.yaml

Google Cloud Deploy usa Skaffold para implementar y renderizar tus aplicaciones.

Como mínimo, debes proporcionar un archivo skaffold.yaml que identifique los manifiestos que se usarán. Por ejemplo:

apiVersion: skaffold/v2beta28
kind: Config
deploy:
  kubectl:
    manifests:
      - MANIFEST

En esta configuración, MANIFEST es la ruta de acceso al manifiesto o los manifiestos que procesará Skaffold.

Haz que Google Cloud Deploy genere tu skaffold.yaml

Google Cloud Deploy puede generar un archivo skaffold.yaml por ti, si no tienes uno, pero tienes un solo manifiesto de Kubernetes o un solo archivo de definición de servicio de Cloud Run.

El archivo de Skaffold generado estará disponible en el directorio de etapa de pruebas de origen de Cloud Storage después de que se complete la versión.

El siguiente comando incluye la marca --from-k8s-manifest y pasa el manifiesto de Kubernetes. Google Cloud Deploy usa la información del manifiesto a fin de generar el skaffold.yaml, que luego se usa para el lanzamiento.

gcloud deploy releases create  RELEASE_NAME --delivery-pipeline=PIPELINE_NAME --from-k8s-manifest=MANIFEST --region=REGION

Para generar el skaffold.yaml a partir de un YAML del servicio de Cloud Run, usa el mismo comando, pero con --from-run-manifest en lugar de --from-k8s-manifest.

El uso de cualquiera de estas marcas con las marcas --skaffold-file o --source genera un error.

Usa el archivo skaffold.yaml generado

El skaffold.yaml generado es adecuado para la integración, el aprendizaje y la demostración de Google Cloud Deploy. En el futuro, y para las cargas de trabajo de producción, es posible que desees una configuración de Skaffold que diferencie entre tus destinos (mediante perfiles de Skaffold).

Cuando uses el archivo skaffold.yaml generado como punto de partida para crear tu propia configuración diferenciada de Skaffold, asegúrate de usar el archivo en el archivo de origen de procesamiento, no el archivo procesado. La fuente de procesamiento está disponible para descargar desde la pestaña Artifacts en la página **Detalles de la versión **.

  • Este skaffold.yaml generado se incluye en la fuente de renderización almacenada en un depósito de Cloud Storage.

    Para ver este archivo, descarga el archivo .tar.gz y extráelo.

  • El skaffold.yaml procesado está disponible en Artefactos de destino.

    En Target artifacts, haz clic en View artifacts.

    Página de detalles de la versión, que muestra los artefactos de origen y de destino

Usa Skaffold para el desarrollo local

Una de las ventajas de Skaffold es que puedes usarla para el desarrollo local y la CI/CD. En el modo dev, Skaffold observa tus archivos de origen y, cuando detecta un cambio, reconstruye las imágenes, vuelve a probar y vuelve a implementar los contenedores en un clúster de minikube (por ejemplo, en tu máquina local).

Cuando usas Skaffold de esta manera, puedes usar los mismos comandos de forma local que para la implementación remota.

Si usas Skaffold para el desarrollo local, puedes definir perfiles independientes de Skaffold para tus destinos y una estrofa de implementación predeterminada para el desarrollo local.

Cuando detienes el modo dev, Skaffold borra los artefactos implementados del clúster.

Usa Skaffold para IC/EC

Además de la compilación e implementación continuas continuas de Skaffold para tu bucle de desarrollo, Google Cloud Deploy usa las funciones de CI/CD de Skaffold a fin de renderizar y aplicar tus manifiestos, y para implementar tu aplicación en tus destinos definidos, a partir de imágenes de contenedor compiladas mediante una herramienta de CI como Cloud Build y un registro de imágenes como Artifact Registry.

Procesa, implementa y aplica

Skaffold separa el proceso de renderización del manifiesto de la implementación. Google Cloud Deploy llama a skaffold render para procesar los manifiestos y a skaffold apply para aplicarlos al destino.

Esta separación entre el procesamiento y la aplicación te permite capturar el estado declarativo completo de tu aplicación en la configuración, de modo que pueda aplicarse de manera repetible de forma segura, por ejemplo, para reversiones. Esto también facilita las aprobaciones. Debido a que los manifiestos se procesan para todos los destinos antes del primer lanzamiento, puedes ver el YAML procesado que se aplicará a cada uno de ellos.

Google Cloud Deploy no admite el uso de otros implementadores para implementar tu aplicación. Sin embargo, puedes usar herramientas como Helm o Kustomize para el procesamiento.

Para obtener más información sobre cómo se implementa Google Cloud Deploy con kubectl como implementador, consulta Arquitectura del servicio de Google Cloud Deploy.

Acerca de los perfiles de Skaffold

Puedes crear perfiles de Skaffold separados, que se identifican en skaffold.yaml, en una estrofa profiles:.

Cuando usas perfiles de Skaffold con Google Cloud Deploy, puedes crear perfiles independientes para todos o algunos de tus destinos. Por ejemplo, diferentes perfiles para dev, staging y prod.

Los perfiles no son necesarios para usar Skaffold en Google Cloud Deploy, pero son útiles para definir personalizaciones del manifiesto entre tus destinos, por ejemplo, con archivos Kustomize kustomization.yaml diferentes por destino.

Agrega compatibilidad con Kustomize a skaffold.yaml

La integración de tu configuración de Kustomize con la configuración de Google Cloud Deploy/Skaffold consiste en lo siguiente:

  1. Incluye un archivo kustomization.yaml entre tus archivos de configuración.

    Puedes almacenar los archivos de configuración en un directorio local o en un bucket de Cloud Storage.

  2. En el archivo skaffold.yaml, crea una estrofa deploy para cada perfil.

    También puedes tener una estrofa deploy fuera de cualquier perfil definido, si no usas perfiles o para una configuración de implementación predeterminada que no está vinculada a un perfil. Por ejemplo:

    apiVersion: skaffold/v2beta28
    kind: Config
    build:
      artifacts:
        - image: leeroy-web-profiles
          context: leeroy-web-profiles
        - image: leeroy-app-profiles
          context: leeroy-app-profiles
      googleCloudBuild:
        projectId: ${PROJECT_ID}
    profiles:
    - name: local
      deploy:
        kustomize:
          paths:
            - leeroy-app-profiles/kubernetes/local
    - name: test
      deploy:
        kustomize:
          paths:
            - leeroy-app-profiles/kubernetes/test
    - name: staging
      deploy:
        kustomize:
          paths:
            - leeroy-app-profiles/kubernetes/staging
    - name: prod
      deploy:
        kustomize:
          paths:
            - leeroy-app-profiles/kubernetes/prod
    

    La configuración de Skaffold que se muestra aquí tiene perfiles independientes para los objetivos test, staging y prod. También muestra un perfil para el desarrollo local. Debajo de cada perfil hay una estrofa deploy.kustomize con una ruta que apunta a la ubicación de la Kustomization para usar con ese objetivo.

Agregue compatibilidad con Helm a su skaffold.yaml

Puede usar Helm para procesar sus manifiestos. Google Cloud Deploy no usa Helm para implementar tus aplicaciones y solo admite kubectl como implementador.

Para usar Helm, necesitas los gráficos de Helm almacenados en cualquier ubicación a la que puedas hacer referencia dentro de tu skaffold.yaml. Puede estar en un sistema de archivos, un repositorio, posiblemente junto con tu skaffold.yaml, o un repositorio de inicio de contenedor abierto (OCI).

Para usar un gráfico de Helm, agrega una estrofa helm a tu archivo skaffold.yaml.

apiVersion: skaffold/v2beta28
kind: Config
build:
  artifacts:
  - image: skaffold-helm-image
deploy:
  helm:
    releases:
    - name: skaffold-helm-image
      chartPath: charts

La referencia skaffold.yaml muestra los requisitos de esta estrofa helm.

Usa kpt con Skaffold

Te recomendamos que no uses kpt con Skaffold V1 en Google Cloud Deploy.

Características de Skaffold no compatibles

Las siguientes funciones de Skaffold no se pueden usar en Google Cloud Deploy:

¿Qué sigue?

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

  • Practica cómo usar Google Cloud Deploy con los perfiles de Kustomize y Skaffold.

  • Obtén más información sobre cómo Google Cloud Deploy selecciona la versión de Skaffold para usar, cuándo cambia la versión de Skaffold y cómo determinar qué versión está en uso actualmente.

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