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:

  • 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é 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 IC/EC, pero actualmente no uso Skaffold

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

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

Cuando se crea una versión, Google Cloud Deploy llama a Skaffold para procesar tus manifiestos. En el momento de la implementación, Google Cloud Deploy vuelve a llamar a Skaffold a fin de aplicar esos manifiestos para implementar la aplicación en cada destino de tu progreso. Después de la implementación, Skaffold realiza verificaciones de estado a fin de supervisar el entorno de ejecución de destino para una implementación exitosa.

Skaffold para el desarrollo continuo

Cuando usas Skaffold para el desarrollo continuo, las imágenes se compilan, se prueban y se implementan en un clúster (o Minikube) a medida que cambias 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, procesamiento 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 integrarlo en herramientas de administración de manifiestos de terceros, como Helm y Kustomize. El uso de Skaffold de esta manera te permite usar las funciones de esas herramientas para renderizar manifiestos. kubectl sigue siendo el implementador para estos manifiestos.

Soy nuevo en la implementación de Kubernetes

Con Skaffold, puedes configurar un conjunto base de manifiestos para todas tus implementaciones. Luego, puedes 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.

Obtén más información para administrar manifiestos, incluidos ejemplos de uso de Skaffold y Google Cloud Deploy con herramientas comunes de detección de manifiestos, como Helm y Kustomize.

¿Cuáles son los requisitos 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 todas las configuraciones de skaffold.yaml necesitan:

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

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

    En la estrofa manifests, se muestra una lista de todos los manifiestos sin procesar de Kubernetes. Si planeas usar un procesador (como Helm o Kustomize) para procesar manifiestos, consulta Agrega compatibilidad con Kustomize a skaffold.yaml y Agrega compatibilidad con Helm a skaffold.yaml a fin de obtener instrucciones para configurar Skaffold a fin de usar estas herramientas.

    Para Cloud Run:

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

Crea un archivo skaffold.yaml

Google Cloud Deploy usa Skaffold para renderizar e implementar 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

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

El archivo generado de Skaffold estará disponible en el directorio de etapa de pruebas de origen de Cloud Storage una vez que se complete la actualización.

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

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

Para generar el skaffold.yaml desde 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. Una vez que estés familiarizado con Google Cloud Deploy y con las cargas de trabajo de producción, es posible que desees una configuración de Skaffold que diferencie tus objetivos (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 que aparece en el archivo de origen de renderización, no el archivo procesado. La fuente de procesamiento se puede descargar desde la pestaña Artefactos en la página **Detalles de la versión **.

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

    Para ver este archivo, debes descargar el archivo .tar.gz y extraerlo.

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

    En la sección Artefactos de destino, haz clic en Ver artefactos.

    Página de detalles de la versión que muestra la fuente de renderización y los artefactos 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 los archivos de origen y, cuando detecta un cambio, reconstruye las imágenes, vuelve a probar y, luego, implementa los contenedores en un clúster de minikube (por ejemplo, en la máquina local).

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

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

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

Usa Skaffold para IC/EC

Además de usar Skaffold para realizar implementaciones y compilaciones locales continuas, puedes usar Skaffold para IC/EC. Google Cloud Deploy usa las funciones de CI/CD en Skaffold para renderizar y aplicar tus manifiestos, así como implementar tu aplicación en los destinos definidos, a partir de las 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 procesamiento de manifiestos de la implementación. Google Cloud Deploy llama a skaffold render para renderizar los manifiestos y a skaffold apply para aplicarlos al destino.

Esta separación entre la renderización y la aplicación te permite capturar todo el estado declarativo de tu aplicación en la configuración, de modo que pueda aplicarse de forma segura y repetida (por ejemplo, para reversiones). Esta técnica 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 destino.

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 mediante kubectl como implementador, consulta Arquitectura de 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 tus destinos o algunos de ellos. Por ejemplo, perfiles diferentes para dev, staging y prod.

Los perfiles no son necesarios para usar Skaffold en Google Cloud Deploy, pero son útiles a fin de definir personalizaciones de manifiestos entre tus destinos, por ejemplo, mediante diferentes archivos kustomization.yaml de Kustomize por destino.

Agrega compatibilidad con Kustomize a tu skaffold.yaml

La integración de tu configuración de Kustomize a tu configuración de Google Cloud Deploy/Skaffold consta de 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 tienes 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. En cada perfil, hay una estrofa deploy.kustomize con una ruta que apunta a la ubicación de la kustomización que se debe usar para ese destino.

Agrega compatibilidad con Helm a tu skaffold.yaml

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

Para usar Helm, necesitas tus gráficos de Helm, almacenados en cualquier ubicación a la que puedas hacer referencia desde tu skaffold.yaml. Esta ubicación puede estar en un sistema de archivos, un repositorio, posiblemente junto con tu skaffold.yaml, o un repositorio de Open Container Initiative (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 de skaffold.yaml muestra lo que se requiere en esta estrofa helm.

Usa kpt con Skaffold

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

Características de Skaffold no admitidas

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 qué 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 qué versión de Skaffold usar, cuándo cambia la versión de Skaffold y cómo determinar qué versión está en uso.

  • Obtén información sobre cómo usar los perfiles de Skaffold con herramientas avanzadas de administración de manifiestos, como Helm, Kustomize y kpt.