Implementa tu aplicación

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

En esta página, se describe cómo usar Google Cloud Deploy para poner tu aplicación en los entornos de ejecución de destino deseados. Antes de hacerlo, debes crear tu canalización de entrega y objetivos.

Antes de comenzar

En esta sección, se describe lo que necesitas para implementar tu aplicación con Google Cloud Deploy.

  • Asegúrate de que tu cuenta de servicio de ejecución tenga las funciones y permisos de IAM necesarios.

  • Crea tu canalización de entrega y objetivos.

    Google Cloud Deploy puede realizar implementaciones en clústeres de Google Kubernetes Engine, Cloud Run y Anthos. La configuración de destino difiere según cuál de estas implementes.

  • Ten tus imágenes de contenedor y manifiestos.

    Necesitas una o más imágenes de contenedor para implementar y uno o más manifiestos de Kubernetes (para implementar en GKE) o archivos YAML de servicio (para implementar en Cloud Run).

    Necesitas una canalización de integración continua o algún otro proceso para compilar y ubicar las imágenes. Tu herramienta de CI puede ser Cloud Build, Jenkins o cualquier elemento que dé como resultado imágenes de contenedor que puedes proporcionar a tu canalización de entrega de Google Cloud Deploy.

  • Ten un archivo de configuración skaffold.yaml.

    Google Cloud Deploy llama a skaffold render para procesar los manifiestos de Kubernetes con este archivo y a skaffold apply para implementarlos en tu destino. Para ello, Skaffold requiere al menos un skaffold.yaml mínimo. Puedes obtener uno de los dos métodos siguientes:

    • Crea el tuyo.

      Ten en cuenta que el archivo skaffold.yaml debe hacer referencia al espacio de nombres correspondiente a una versión de Skaffold compatible en la primera línea, como en este ejemplo:

      `apiVersion: skaffold/v2beta28`
      
    • Generalo para ti.

      Si aún no tienes un archivo skaffold.yaml, puedes hacer que Google Cloud Deploy cree uno por ti. Este archivo es adecuado para la integración, el aprendizaje o la demostración de Google Cloud Deploy y no debe usarse para las cargas de trabajo de producción.

    Consulta Cómo usar Skaffold con Google Cloud Deploy para obtener más detalles. Además, en Administra manifiestos en Google Cloud Deploy, encontrarás más detalles sobre el uso de Skaffold y Google Cloud Deploy con herramientas de administración de manifiestos, como Helm, Kustomize y kpt.

Configura Google Cloud Deploy para el entorno de ejecución que prefieras

Google Cloud Deploy puede implementar tu aplicación en cualquiera de los siguientes entornos de ejecución:

Invoca la canalización de entrega para crear una versión

Después de configurar Google Cloud Deploy para que se implemente en el entorno de ejecución, puedes enviar la aplicación para que se implemente de acuerdo con la canalización de entrega que creaste.

  1. Ejecuta el proceso habitual de integración continua (CI) y crea los artefactos implementables.

  2. Inicia la canalización de entrega mediante una llamada a Google Cloud Deploy para crear una versión.

    Ejecuta el siguiente comando desde el directorio que contiene la configuración de Skaffold:

    gcloud deploy releases create RELEASE_NAME --delivery-pipeline=PIPELINE_NAME --region=REGION
    

    Aquí:

    RELEASE_NAME es un nombre para esta versión. El nombre debe ser único entre todas las versiones de esta canalización de entrega.

    Puedes especificar nombres de versiones dinámicas si incluyes '$DATE', '$TIME' o ambos. Por ejemplo, si invocas este comando a las 3:07 p.m. UTC, 'rel-$TIME' se resuelve en rel-1507. '$DATE' y '$TIME' deben estar entre comillas simples, y la hora es UTC en la máquina en la que invocas el comando.

    PIPELINE_NAME es el nombre de la canalización de entrega que administrará la implementación de esta versión a través del progreso de los destinos. Este nombre debe coincidir con el campo name en la definición de la canalización.

    REGION es el nombre de la región en la que creas la versión, por ejemplo, us-central1. Este campo es obligatorio.

Este comando sube un archivo comprimido que contiene tus archivos de configuración a un bucket de Cloud Storage y crea la actualización. Google Cloud Deploy también crea un lanzamiento y, luego, implementa tu imagen en el primer destino definido en la canalización de entrega.

Además de los parámetros que se muestran con este comando, puedes incluir cualquiera de las siguientes opciones:

  • --images=<name=path/name:$IMAGE_SHA>,<name=path/name:$IMAGE_SHA>

    Una colección de reemplazos de ruta de acceso de imagen a nombre completo.

  • --build-artifacts=<path/file>

    Una referencia a un archivo de salida de artefactos de compilación de Skaffold, que se puede pasar para representar los reemplazos de rutas de acceso completas de imágenes

Estas dos opciones son mutuamente excluyentes.

También puedes incluir una de las siguientes marcas para que Google Cloud Deploy genere un archivo skaffold.yaml:

  • --from-k8s-manifest=K8S_MANIFEST

    La configuración de Skaffold generada se basa en el manifiesto de Kubernetes que pasas esta marca. Si usas esta marca con las marcas --skaffold-file o --source, se genera un error. Consulta Genera tu skaffold.yaml para obtener más detalles.

  • --from-run-manifest=RUN_MANIFEST

    La configuración de Skaffold generada se basa en el servicio YAML de Cloud Run que pasas esta marca. Si usas esta marca con las marcas --skaffold-file o --source, se genera un error. Consulta Genera tu skaffold.yaml para obtener más detalles.

Estas dos opciones son mutuamente excluyentes.

Cambia el tiempo de espera de la implementación

Para las implementaciones en clústeres de destino de GKE y Anthos, hay tres tiempos de espera separados que afectan el tiempo que el sistema espera para que Kubernetes informe una implementación estable:

  • Cloud Build tiene un tiempo de espera de 1 hora en las operaciones que realiza Cloud Build para Google Cloud Deploy.

    Puedes cambiar este tiempo de espera en la configuración del entorno de ejecución.

  • Skaffold tiene un tiempo de espera de la verificación de estado (deploy.statusCheckDeadlineSeconds), que es la cantidad de tiempo, en segundos, hasta que se estabilice la implementación.

    El valor predeterminado es de 600 segundos (10 minutos). Para usar este tiempo de espera, deploy.statusCheck debe configurarse como true. De forma predeterminada, lo es. Si statusCheck es false, no hay verificación de estado, el lanzamiento se marca como exitoso después de que kubectl apply finaliza correctamente.

  • Para los recursos de Kubernetes de kind: Deployment, existe Deployment.spec.progressDeadlineSeconds, que es la cantidad de tiempo que Kubernetes espera que el Deployment informe como estable.

    Este tiempo de espera solo se aplica a los recursos de Deployment. Estos son los dos primeros tiempos de espera que se combinan:

    • Si no se configura Deployment.spec.progressDeadlineSeconds, en Kubernetes, el tiempo de espera de la verificación de estado de Skaffold es el tiempo de espera efectivo, ya sea el predeterminado o establecido de forma explícita.

    • Si Deployment.spec.progressDeadlineSeconds, en Kubernetes está configurado, Skaffold ignora su propio tiempo de espera de la verificación de estado, y el plazo de progreso de Kubernetes es el tiempo de espera efectivo. Sin embargo, si el tiempo de espera de Kubernetes se establece de forma explícita en 600 (10 minutos), Skaffold asume que es el valor predeterminado (no establecido) y lo ignora, y se usa el tiempo de espera de Skaffold (si está configurado).

    • Si no se establece ninguno, el tiempo de espera efectivo es el predeterminado de Skaffold de 600 (10 minutos).

    Además de los Deployment, otros recursos de Kubernetes pueden tener tiempos de espera, que no influyen en el tiempo de espera de estabilidad. Si hay alguno, revísalos para asegurarte de que no entren en conflicto con el tiempo de espera de estabilidad.

    Si se agota el tiempo de espera de Skaffold (o Cloud Build), la implementación de GKE continúa ejecutándose. Google Cloud Deploy muestra una falla, pero aún puede tener éxito o fallar en el clúster de GKE.

Para cambiar el tiempo de espera de estabilidad de la implementación, sigue estos pasos:

  1. Asegúrate de que deploy.statusCheck esté configurado como true en skaffold.yaml.

    true es la configuración predeterminada. Cuando true, Skaffold espera que las verificaciones de estado informen una implementación estable, sujeta al valor de tiempo de espera en el paso siguiente.

  2. En skaffold.yaml, configura statusCheckDeadlineSeconds como la cantidad de segundos que deseas esperar.

    deploy:
      ...
      statusCheck: true
      statusCheckDeadlineSeconds: 600
      ...
    

    El valor predeterminado es 600 (10 minutos). Skaffold espera esta cantidad de tiempo para una implementación estable. Si se excede este tiempo antes de que la implementación sea estable, la implementación fallará.

  3. En tu manifiesto de Kubernetes, para los recursos de kind: Deployment, establece Deployment.spec.progressDeadlineSeconds en el mismo valor que estableciste para statusCheckDeadlineSeconds.

¿Qué sigue?