Comienza a usar Skaffold en Cloud Deploy

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

  • Configura Skaffold para usarlo con una canalización de entrega de Cloud Deploy
  • Cómo usar Skaffold y Cloud Deploy con herramientas de renderización de terceros, como Helm y Kustomize
  • De manera opcional, usa Skaffold para el desarrollo local
  • De manera opcional, con Skaffold para la integración y la implementación continuas (CI/CD)

¿Por qué Skaffold?

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

Tengo experiencia con 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 desarrolladores. Organiza el desarrollo continuo, la integración continua (CI) y entrega continua (CD).

Skaffold proporciona configuración declarativa y portátil a través de un cable arquitectura, lo que te permite usar diferentes herramientas para la fase de renderización.

Cuando se crea una versión, Cloud Deploy llama a Skaffold para renderizar tus manifiestos. En el momento de la implementación, Cloud Deploy llama a Skaffold a aplicar esos manifiestos para implementar tu aplicación en cada destino en tu progresión. Después de la implementación, Skaffold realiza verificaciones de estado para supervisar el entorno de ejecución de destino si es correcto de Google Workspace.

Skaffold para el desarrollo continuo

Cuando usas Skaffold para el desarrollo continuo, las imágenes se compilan, prueban y, luego, se implementan en un clúster (o Minikube) a medida que cambias tu código. Cloud Code para VS Code y Cloud Code para IntelliJ Las extensiones de IDE integran Skaffold a los IDE de Visual Studio Code y JetBrains, para un desarrollo continuo.

Skaffold para la entrega continua

También puedes usar Skaffold para la entrega continua, con pasos de compilación, implementación, renderización y aplicación. Usos de Cloud Deploy Renderización y aplicación de Skaffold capacidades de integración. Para usar Cloud Deploy, necesitas al menos un Archivo de configuración skaffold.yaml.

Con Skaffold, también puedes realizar la integración con administración de manifiestos de terceros herramientas, como Helm y Kustomize. Usar Skaffold de esta manera te permite usar las funciones de esas herramientas para renderizar manifiestos. kubectl sigue siendo el implementador de estos manifiestos.

Soy nuevo en la implementación en Kubernetes

Con Skaffold, puedes configurar un conjunto básico de manifiestos para todas tus de Google Cloud. Luego, puedes usar el motor de renderización de Skaffold, a través de Cloud Deploy procesar y, luego, implementar cada manifiesto específico de la implementación de uno de esos manifiestos de base.

Obtén más información sobre cómo administrar manifiestos, incluidos ejemplos de uso de Skaffold y Cloud Deploy con herramientas de plantillas de manifiesto, como Helm y Kustomize.

¿Cuáles son los requisitos para que Cloud Deploy funcione?

Para usar una canalización de entrega básica de Cloud Deploy, la 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/v4beta7
    kind: Config
    
  • Una estrofa manifests para GKE, GKE Enterprise o Cloud Run enumera todos los manifiestos de Kubernetes sin procesar (a menos que uses un de administración de manifiestos, como Helm o Kustomize).

    Este es un ejemplo en el que se usa un manifiesto de Kubernetes sin procesar:

    manifests:
      rawYaml:
      - deployment.yaml
    

    Si planeas usar un renderizador (como Helm o Kustomize) para renderizar manifiestos, Consulta Cómo agregar compatibilidad con Helm a skaffold.yaml y Agrega compatibilidad con Kustomize a tu archivo skaffold.yaml. para obtener orientación sobre cómo configurar Skaffold para usar estas herramientas.

    Para ver ejemplos de Helm y Kustomize, consulta Cómo administrar manifiestos

  • Una estrofa deploy, con deploy.kubectl, para implementar en GKE o GKE Enterprise, o deploy.cloudrun para implementar a Cloud Run.

    Para los objetivos de GKE y GKE Enterprise:

    deploy:
      kubectl: {}
    

    La estrofa de implementación implementa los manifiestos de la aplicación que se proporcionaron en la se manifiesta la estrofa.

    Para los destinos de Cloud Run:

    deploy:
      cloudrun: {}
    

    La estrofa de implementación implementa los manifiestos de la aplicación proporcionados en ellos estrofa.

Si utilizas orientaciones personalizadas, tu skaffold.yaml debe tener el encabezado (apiVersion y kind:), además del acciones personalizadas que usará la segmentación personalizada si el tipo de segmentación personalizada aún no hacer referencia a configuración remota de Skaffold.

Crea un archivo skaffold.yaml

Cloud Deploy usa Skaffold para renderizar e implementar tus aplicaciones.

Para cada versión, debes proporcionar al menos un archivo skaffold.yaml que identifica los manifiestos que se usarán. Consulta la sección anterior para obtener orientación sobre lo que debe incluir este archivo.

Haz que Cloud Deploy genere tu skaffold.yaml

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

El archivo de Skaffold generado estará disponible en la fuente de Cloud Storage de etapa de pruebas después de que se complete el lanzamiento.

El siguiente comando incluye la marca --from-k8s-manifest y pasa el manifiesto de Kubernetes. Cloud Deploy usa la información de la para 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 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

Usa cualquiera de estas marcas con la marca --skaffold-file o La marca --source genera un error.

Usa el archivo skaffold.yaml generado

El skaffold.yaml generado es adecuado para la integración, el aprendizaje y una demostración de Cloud Deploy. Después de familiarizarte con Cloud Deploy, y para las cargas de trabajo de producción, puedes usar una configuración de Skaffold diferencia entre tus destinos (mediante perfiles de Skaffold).

Cuando uses el archivo skaffold.yaml generado como punto de partida para crear tu configuración diferenciada de Skaffold, asegúrate de usar el archivo en la el archivo fuente de renderización, no el archivo renderizado. La fuente de renderización es disponible para descargar desde la pestaña Artifacts en la sección **Release details ** .

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

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

  • El skaffold.yaml renderizado 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 los artefactos de origen y de destino de renderización

Usa Skaffold para el desarrollo local

Una de las fortalezas de Skaffold es que puedes usarlo para el desarrollo local y para CI/CD. En el modo dev, Skaffold supervisa tus archivos fuente y, cuando detecta un cambio, Skaffold vuelve a compilar 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 Skaffold por separado 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 CI/CD

Además de usar Skaffold para la compilación y la implementación locales continuas, puedes usar Skaffold para CI/CD. Cloud Deploy usa las funciones de CI/CD de Skaffold para renderizar y aplicar tus manifiestos e implementar tu aplicación en tu entorno destinos, determinadas imágenes de contenedor compiladas con una herramienta de CI como Cloud Build y un registro de imágenes como Artifact Registry.

Renderiza, implementa y aplica

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

Esta separación entre renderizar y aplicar te permite capturar toda la declarativo de tu aplicación en la configuración para que pueda se apliquen de forma segura y repetible (por ejemplo, para las reversiones). Esta técnica también facilita las aprobaciones. Debido a que los manifiestos se renderizan para todos los destinos antes el primer lanzamiento, puedes ver el YAML renderizado que se aplicará a cada objetivo.

Cloud Deploy no admite el uso de otros implementadores para implementar tu y mantener la integridad de su aplicación. Sin embargo, puedes usar herramientas como Helm o Kustomize para la renderización.

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

Acerca de los perfiles de Skaffold

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

Cuando uses perfiles de Skaffold con Cloud Deploy, puedes crear perfiles independientes para todos o algunos de sus objetivos. Por ejemplo, diferentes perfiles para dev, staging y prod.

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

Agrega asistencia de Kustomize a tu skaffold.yaml

Integra tu configuración de Kustomize a Cloud Deploy/Skaffold de Terraform 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 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 que no uses perfiles ni para una configuración de implementación predeterminada que no esté vinculada perfil.

    El siguiente es un ejemplo de configuración de Skaffold que muestra deploy estrofas por y usa una app de ejemplo ficticia llamada my-app:

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

    La configuración de Skaffold que se muestra aquí tiene perfiles independientes para test, Objetivos de 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 personalización que se usará para ese destino.

Agrega compatibilidad con Helm a tu skaffold.yaml

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

Para usar Helm, debe tener los gráficos de Helm almacenados en cualquier ubicación que pueda desde tu skaffold.yaml. Esta ubicación puede estar en un archivo un repositorio, posiblemente junto con tu skaffold.yaml, o un objeto Repositorio de Container Initiative (OCI).

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

apiVersion: skaffold/v4beta7
kind: Config
build:
  artifacts:
  - image: skaffold-helm-image
manifests:
  helm:
    releases:
    - name: skaffold-helm-image
      chartPath: charts
deploy:
  kubectl: {}

La referencia de skaffold.yaml muestra lo que se requiere en esta estrofa helm.

Funciones de Skaffold no compatibles

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

¿Qué sigue?

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

  • Practicar con Cloud Deploy con perfiles de Kustomize y Skaffold.

  • Descubre cómo Cloud Deploy selecciona la versión de Skaffold que se usará, cuándo cambia la versión de Skaffold y cómo para determinar qué versión está en uso.

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