Implementa en funciones de Cloud Run

En esta página, se explica cómo implementar aplicaciones en Cloud Run Functions con Cloud Build. Si eres nuevo en Cloud Build, primero lee las guías de inicio rápido y la descripción general de la configuración de compilación.

Cloud Run Functions es un entorno de ejecución sin servidores para crear y que conecta los servicios en la nube. Con las funciones de Cloud Run, puedes escribir funciones simples de un solo propósito vinculadas a eventos emitidos desde tus servicios y tu infraestructura de nube. La función se activa cuando ocurre un evento que se está supervisando. Para más información sobre Cloud Run Functions, lee Documentación de las funciones de Cloud Run.

Antes de comenzar

  • Habilita la API de Cloud Run Functions:

    Habilita la API de Cloud Run Functions

  • Otorga el rol de Desarrollador de funciones de Cloud Run al servicio de compilación. cuenta:

    1. Abre la página Configuración de Cloud Build:

      Abrir la página Configuración (Settings) de Cloud Build

    2. Configura el estado del rol Desarrollador de funciones de Cloud Run como Habilitado.

  • Para ejecutar los comandos de gcloud en esta página, instala los Google Cloud CLI.

  • Ten a mano el código fuente de la aplicación que deseas compilar y, luego, implementar en las funciones de Cloud Run. Tu código fuente debe almacenarse en un repositorio, como Cloud Source Repositories, GitHub o Bitbucket.

Configura la implementación

Cloud Build permite usar cualquier imagen de contenedor disponible a nivel público para ejecutar tareas. Para ello, especifica la imagen en una compilación step en el archivo de configuración de Cloud Build.

Cloud Run Functions proporciona el comando gcloud functions deploy, que implementa la función desde el directorio que contiene el código de la función. Puedes usar la imagen de cloud-sdk como un paso de compilación en tu archivo de configuración para invocar los comandos de gcloud dentro de la imagen. Los argumentos que se pasan a este paso de compilación se pasan directamente a Google Cloud CLI. lo que te permite ejecutar cualquier comando gcloud en esta imagen.

Para implementar una aplicación en las funciones de Cloud Run, sigue estos pasos:

  1. En el directorio raíz del proyecto, crea el archivo de configuración de Cloud Build con el nombre cloudbuild.yaml o cloudbuild.json.
  2. En el archivo de configuración, haz lo siguiente:

    • Agrega un campo name y especifica el paso de compilación de gcloud.
    • Agrega functions deploy al campo args para invocar el comando gcloud functions deploy. Para ver las opciones de configuración disponibles, consulta la referencia de gcloud functions deploy.
    • --source=. implica que el código fuente está en el directorio de trabajo actual.

    YAML

    steps:
    - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
      args:
      - gcloud
      - functions
      - deploy
      - FUNCTION_NAME
      - --region=FUNCTION_REGION
      - --source=.
      - --trigger-http
      - --runtime=RUNTIME
    

    JSON

    {
     "steps": [
      {
         "name": "gcr.io/google.com/cloudsdktool/cloud-sdk",
         "args": [
           "gcloud",
           "functions",
           "deploy",
            [
              "FUNCTION_NAME"
            ],
            "--region=FUNCTION_REGION",
            "--source=.",
            "--trigger-http",
            "--runtime=RUNTIME"
         ]
       }
      ]
    }
    

    Reemplaza los valores de marcador de posición en el archivo de configuración anterior por lo siguiente:

    • FUNCTION_NAME es el nombre de las funciones de Cloud Run que estás implementando. Si actualizas una función existente, este valor debe coincidir con el nombre de la función que actualizas.
    • FUNCTION_REGION es la región a la que te diriges para implementar funciones de Cloud Run. Para obtener una lista de las regiones admitidas, consulta Ubicaciones de las funciones de Cloud Run.
    • --trigger-http es el tipo de activador de esta función, en este caso, una solicitud HTTP (webhook).
    • RUNTIME es el entorno de ejecución en el que se ejecuta la función.

    Para obtener más información sobre el uso de gcloud functions deploy, consulta la Documentación de las funciones de Cloud Run.

  3. Inicia la compilación con el archivo de configuración creado en el paso anterior mediante el siguiente comando:

     gcloud builds submit --region=REGION --config CONFIG_FILE_PATH SOURCE_DIRECTORY
    

    Reemplaza los valores de marcador de posición en el archivo de configuración anterior por lo siguiente:

    • CONFIG_FILE_PATH es la ruta de acceso al archivo de configuración de compilación.
    • SOURCE_DIRECTORY es la ruta o la URL del código fuente.
    • REGION es una de las regiones de compilación admitidas.

    Si se no especifica CONFIG_FILE_PATH ni SOURCE_DIRECTORY en el comando gcloud builds submit, Cloud Build da por hecho que el archivo de configuración y el código fuente están en el directorio de trabajo actual.

Implementación continua

Puedes automatizar la implementación de tu software en Cloud Run Functions si creas Activadores de Cloud Build. Puedes configurar tus activadores para compilar y, luego, implementar imágenes cada vez que actualices tu código fuente.

Para automatizar tu implementación en Cloud Run Functions, haz lo siguiente:

  1. En la raíz de tu repositorio, agrega un archivo de configuración con pasos para invocar el comando gcloud functions deploy:

    YAML

    steps:
    - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
      args:
      - gcloud
      - functions
      - deploy
      - FUNCTION_NAME
      - --region=FUNCTION_REGION
      - --source=.
      - --trigger-http
      - --runtime=RUNTIME
    

    JSON

    {
     "steps": [
      {
         "name": "gcr.io/google.com/cloudsdktool/cloud-sdk",
         "args": [
           "gcloud",
           "functions",
           "deploy",
            [
              "FUNCTION_NAME"
            ],
            "--region=FUNCTION_REGION",
            "--source=.",
            "--trigger-http",
            "--runtime=RUNTIME"
         ]
       }
      ]
    }
    

    Reemplaza los valores de marcador de posición en el archivo de configuración anterior por lo siguiente:

    • FUNCTION_NAME es el nombre de las funciones de Cloud Run que estás implementando. Si actualizas una función existente, este valor debe coincidir con el nombre de la función que actualizas.
    • FUNCTION_REGION es la región en la que implementas las funciones de Cloud Run. Para obtener una lista de las regiones admitidas, consulta Ubicaciones de las funciones de Cloud Run.
    • --trigger-http es el tipo de activador de esta función, en este caso, una solicitud HTTP (webhook).
    • RUNTIME es el entorno de ejecución en el que se ejecuta la función.
  2. Crea un activador de compilación con el archivo de configuración generado en el paso anterior:

    1. Abre la página Activadores en la consola de Google Cloud:

      Abrir la página Activadores

    2. Selecciona tu proyecto en el menú desplegable del selector de proyectos, que se encuentra en la parte superior de la página.

    3. Haz clic en Crear activador.

    4. En el campo Nombre, ingresa un nombre para el activador.

    5. En Región, selecciona la región para tu activador.

    6. En Evento, selecciona el evento del repositorio para iniciar el activador.

    7. En Fuente, selecciona el repositorio y el nombre de la rama o de la etiqueta que iniciará el activador. Para obtener más información sobre cómo especificar qué ramas se deben compilar de manera automática, consulta Crea un activador de compilación.

    8. En Configuración, selecciona Archivo de configuración de Cloud Build (YAML o JSON).

    9. En el campo Ubicación del archivo de configuración de Cloud Build, escribe cloudbuild.yaml después de /.

    10. Haz clic en Crear para guardar el activador de compilación.

Cada vez que envíes código nuevo a tu repositorio, activarás automáticamente compilar e implementar en Cloud Run Functions.

Para obtener más información sobre cómo crear activadores de Cloud Build, consulta Crea y administra activadores de compilación.

¿Qué sigue?