Desplegar una aplicación en Cloud Run con Cloud Deploy

En esta página se muestra cómo usar Cloud Deploy para entregar una imagen de aplicación de muestra llamada hello en una secuencia de dos servicios o dos trabajos de Cloud Run.

En esta guía de inicio rápido, harás lo siguiente:

  1. Crear una configuración de Skaffold

  2. Crea archivos de configuración para dos servicios o dos tareas de Cloud Run.

    Estos archivos definen los servicios o los trabajos y especifican las imágenes de contenedor (prediseñadas) que se van a implementar.

  3. Define tu flujo de trabajo de entrega y tus destinos de implementación de Cloud Deploy, que apuntan a los dos servicios o a los dos trabajos.

  4. Instancia tu flujo de procesamiento de entrega creando una versión, que se desplegará automáticamente en el primer destino.

  5. Promociona la versión al segundo destino.

  6. Consulta ambos lanzamientos en la Google Cloud consola.

Antes de empezar

  • Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  • In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  • Si vas a usar un proyecto que ya tengas para seguir esta guía, comprueba que tienes los permisos necesarios para completar la guía. Si has creado un proyecto, ya tienes los permisos necesarios.

  • Verify that billing is enabled for your Google Cloud project.

  • Enable the Cloud Deploy, Cloud Build, Cloud Run, and Cloud Storage APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  • Install the Google Cloud CLI.

  • Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  • Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  • In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  • Si vas a usar un proyecto que ya tengas para seguir esta guía, comprueba que tienes los permisos necesarios para completar la guía. Si has creado un proyecto, ya tienes los permisos necesarios.

  • Verify that billing is enabled for your Google Cloud project.

  • Enable the Cloud Deploy, Cloud Build, Cloud Run, and Cloud Storage APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  • Install the Google Cloud CLI.

  • Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  • Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  • Roles obligatorios

    Para obtener los permisos que necesitas para crear un flujo de trabajo de lanzamiento y un lanzamiento de Cloud Deploy, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Ejecutor de trabajos de Cloud Deploy (roles/clouddeploy.jobrunner) en tu proyecto.

    Para asegurarte de que la cuenta de servicio de Cloud Deploy tiene los permisos necesarios para ejecutar operaciones de Cloud Deploy y desplegar en Cloud Run, pide a tu administrador que le conceda los siguientes roles de gestión de identidades y accesos en tu proyecto:

    Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar acceso a proyectos, carpetas y organizaciones.

    Es posible que tu administrador también pueda conceder a la cuenta de servicio de Cloud Deploy los permisos necesarios a través de roles personalizados u otros roles predefinidos.

    Preparar la configuración de Skaffold

    Cloud Deploy usa Skaffold para proporcionar los detalles de qué desplegar y cómo hacerlo correctamente en tus destinos.

    En esta guía de inicio rápido, crearás un archivo skaffold.yaml, que identifica el servicio o la definición de trabajo de Cloud Run que se usará para desplegar la aplicación de ejemplo.

    1. Abre una ventana de terminal.

    2. Crea un directorio llamado deploy-run-quickstart y accede a él.

      mkdir deploy-run-quickstart
      cd deploy-run-quickstart
      
    3. Crea un archivo llamado skaffold.yaml con el siguiente contenido:

      Servicios

      apiVersion: skaffold/v4beta7
      kind: Config
      metadata: 
        name: deploy-run-quickstart
      profiles:
      - name: dev
        manifests:
          rawYaml:
          - run-service-dev.yaml
      - name: prod
        manifests:
          rawYaml:
          - run-service-prod.yaml
      deploy:
        cloudrun: {}
      

      Empleo

      apiVersion: skaffold/v4beta7
      kind: Config
      metadata: 
        name: deploy-run-quickstart
      profiles:
      - name: dev
        manifests:
          rawYaml:
          - run-job-dev.yaml
      - name: prod
        manifests:
          rawYaml:
          - run-job-prod.yaml
      deploy:
        cloudrun: {}
      

      Este archivo es una configuración mínima de Skaffold que identifica tus servicios o trabajos de Cloud Run. Consulta la referencia de skaffold.yaml para obtener más información sobre este archivo.

    Preparar los servicios o los trabajos de Cloud Run

    En esta guía de inicio rápido, crearás dos servicios de Cloud Run o dos trabajos de Cloud Run diferentes en el mismo proyecto. Cloud Deploy también permite desplegar en varios proyectos. También usamos perfiles de Skaffold para que sea posible tener dos servicios o trabajos en el mismo proyecto. Si usas diferentes proyectos, puede que no necesites usar perfiles de Skaffold.

    Servicios

    1. Crea un archivo llamado run-service-dev.yaml con el siguiente contenido:

      apiVersion: serving.knative.dev/v1
      kind: Service
      metadata:
        name: deploy-run-service-dev
      spec:
        template:
          spec:
            containers:
            - image: my-app-image
      

      Este archivo define un servicio de Cloud Run. Como su nombre indica, deploy-run-service-devdev es tu servicio y corresponde al primer objetivo de la progresión de tu canal de distribución.

    2. Crea un archivo llamado run-service-prod.yaml con el siguiente contenido:

      apiVersion: serving.knative.dev/v1
      kind: Service
      metadata:
        name: deploy-run-service-prod
      spec:
        template:
          spec:
            containers:
            - image: my-app-image
      

      Este archivo define otro servicio de Cloud Run y, como indica el nombre deploy-run-service-prod, se trata de tu servicio prod, que corresponde al segundo destino de la progresión de tu canal de distribución.

    Estos archivos son definiciones de servicios de Cloud Run, que se usan para desplegar la aplicación. La imagen del contenedor que se va a desplegar se define aquí como un marcador de posición, my-app-image, que se sustituye por la imagen específica cuando creas la versión.

    Empleo

    1. Crea un archivo llamado run-job-dev.yaml con el siguiente contenido:

      apiVersion: run.googleapis.com/v1
      kind: Job
      metadata:
        name: deploy-run-job-dev
      spec:
        template:
          spec:
            template:
              spec:
                containers:
                - image: my-app-image
      

      Este archivo define un trabajo de Cloud Run. Como indica el nombre, este es tu deploy-run-job-devdev y corresponde al primer objetivo de la progresión de tu canal de distribución.

    2. Crea un archivo llamado run-job-prod.yaml con el siguiente contenido:

      apiVersion: run.googleapis.com/v1
      kind: Job
      metadata:
        name: deploy-run-job-prod
      spec:
        template:
          spec:
            template:
              spec:
                containers:
                - image: my-app-image
      

      Este archivo define otro trabajo de Cloud Run. Como indica el nombre, esta es tu prod tarea y corresponde al segundo objetivo de tu proceso de entrega.deploy-run-job-prod

    Estos archivos son definiciones de trabajos de Cloud Run, que se usan para desplegar la aplicación. La imagen de contenedor que se va a desplegar se define aquí como un marcador de posición, my-app-image, que se sustituye por la imagen específica cuando creas la versión.

    Crea tu flujo de procesamiento y tus objetivos

    Puedes definir tu canalización y tus destinos en un archivo o en archivos independientes. En esta guía de inicio rápido, crearás un solo archivo.

    1. En el directorio deploy-run-quickstart, crea un archivo nuevo: clouddeploy.yaml, con el siguiente contenido:

      apiVersion: