Descripción general del proceso de compilación

Cuando implementas el código fuente de la función en Cloud Functions, esa fuente se almacena en un bucket de Cloud Storage. A continuación, Cloud Build compila el código de forma automática en una imagen de contenedor y envía esa imagen a un registro de imágenes. Cloud Functions accede a esta imagen cuando necesita ejecutar el contenedor para ejecutar la función.

Todo el proceso de compilación de la imagen es automático y no requiere ninguna entrada de tu parte. Todos los recursos usados en el proceso de compilación se ejecutan en tu propio proyecto de usuario.

Ejecutar el proceso de compilación dentro de tu proyecto implica lo siguiente:

  • Tienes acceso directo a todos los registros de compilaciones.

  • No existe una cuota de tiempo de compilación predeterminada, aunque Cloud Build tiene su propia cuota de simultaneidad predeterminada.

  • Puedes visualizar la imagen del contenedor actual y las imágenes de contenedores implementadas con anterioridad, las cuales se almacenan en Container Registry.

  • Cloud Storage se usa directamente en tu proyecto, y el directorio del código fuente de las funciones se almacena en un bucket dentro de tu proyecto. Ten en cuenta lo siguiente:

    • Si usas la encriptación predeterminada, este bucket se llama gcf-sources-PROJECT_NUMBER-REGION.
    • Si proteges tus datos con CMEK, el bucket se llama gcf-sources-PROJECT_NUMBER-REGION-CMEK_KEY_HASH.
    • El bucket no tiene período de retención.

Características del proceso de compilación

El proceso de compilación tiene las siguientes características:

  • La API de Cloud Build debe estar habilitada en tu proyecto.

    Para habilitar la API de forma manual, haz clic en el vínculo anterior, selecciona tu proyecto en el menú desplegable y sigue las indicaciones para habilitar la IU.

  • Debido a que todo el proceso de compilación se produce dentro del contexto de tu proyecto, este está sujeto a los precios de los recursos incluidos:

    • Para obtener los precios de Cloud Build, consulta la página Precios. Este proceso usa el tamaño de instancia predeterminado de Cloud Build, ya que estas instancias se preparan de forma previa y están disponibles más rápido. Cloud Build proporciona un nivel gratuito: revisa el documento de precios para obtener más detalles.

    • Para obtener los precios de Cloud Storage, consulta la página Precios. Cloud Storage proporciona un nivel gratuito: revisa el documento de precios para obtener más información.

    • Para obtener los precios de Artifact Registry, consulta la página Precios.

    • Para obtener los precios de Container Registry (obsoleto), consulta la página Precios.

  • Debido a que el proceso de compilación está sujeto a facturación, tu proyecto debe tener una cuenta de Facturación de Cloud adjunta.

Visualiza los registros de imágenes de compilación

Un beneficio clave de tener el proceso de imagen de compilación en tu proyecto de usuario es acceso a los registros de compilación. Puedes usar la CLI de  o la consola de Google Cloud para acceder a los registros, que están disponibles a través de Cloud Logging.

gcloud

  1. Implementa la función mediante el comando gcloud functions deploy.

  2. La URL de los registros se muestra como parte de la respuesta en la ventana de la terminal. Por ejemplo:

    Deploying function (may take a while - up to 2 minutes)...⠹
    **For Cloud Build Stackdriver Logs**, visit:
    https://console.cloud.google.com/logs/viewer?project=&advancedFilter=resource.type%
    3Dbuild%0Aresource.labels.build_id%3D38d5b662-2315-45dd-8aa2-
    380d50d4f5e8%0AlogName%3Dprojects%2F%
    2Flogs%2Fcloudbuild
    Deploying function (may take a while - up to 2 minutes)...done.
    

Consola de Google Cloud

  1. En la ventana Descripción general de Cloud Functions, haz clic en el nombre de la función que investigas.
  2. Haga clic en la pestaña Detalles.
  3. En el panel Información general, haz clic en el vínculo Registro de compilación del contenedor para abrir el panel Explorador de registros.
  4. Haz clic en cualquier fila para ver los detalles de esa entrada de registro de compilación. Si es una entrada de error asociada con un archivo, estos detalles incluyen el nombre, la línea y la columna del archivo.

Registro de imágenes

Cloud Functions (2nd gen) usa Artifact Registry de forma exclusiva para almacenar las imágenes compiladas a partir del código fuente de tu función. Las imágenes se almacenan en un repositorio llamado REGION-docker.pkg.dev/PROJECT_ID/gcf-artifacts.

Cloud Functions (1ª gen.) usa Artifact Registry de forma predeterminada. Container Registry estará obsoleto.

Artifact Registry debe estar en el mismo proyecto que tu función. Puedes crear o actualizar una función basada en Artifact Registry de la siguiente manera:

gcloud

Para Artifact Registry administrado por el cliente, ejecuta el siguiente comando:

gcloud functions deploy FUNCTION \
--docker-repository=REPOSITORY
[FLAGS...]

Reemplaza lo siguiente:

  • FUNCTION: Es el nombre de la función.
  • REPOSITORY: El nombre del repositorio de Artifact Registry completamente calificado, en el siguiente formato: projects/PROJECT_NAME/locations/LOCATION/repositories/REPOSITORY.

Para Artifact Registry administrado por Google, usa lo siguiente:

gcloud functions deploy FUNCTION \
--docker-registry=artifact-registry
[FLAGS...]

Consola de Google Cloud

  1. Ve a la página de Cloud Functions en la consola de Google Cloud:
    Ir a la página de Cloud Functions

  2. Haz clic en el nombre de la función para la que deseas usar Artifact Registry.

  3. Haz clic en Editar.

  4. Haz clic en Entorno de ejecución, compilación… para expandir las opciones de configuración avanzada.

  5. Haz clic en Seguridad y repositorio de imágenes en la barra de menú para abrir la pestaña de seguridad.

  6. En Repositorio de imágenes, selecciona una de las siguientes opciones, según el tipo de Artifact Registry que uses:

    • Artifact Registry administrado por el cliente Usa esta opción si configuras tu propio repositorio de Docker.
    • Artifact Registry administrado por Google Usa esta opción si deseas usar un repositorio de Docker administrado por Google en lugar de configurar el tuyo.
  7. En Artifact Managed Registry, usa el menú desplegable Artifact Registry para seleccionar el repositorio de Artifact Registry que desees o sigue las indicaciones y crea un nuevo uno.

  8. Haga clic en Siguiente.

  9. Haz clic en Implementar.

Para obtener información detallada sobre los precios, consulta Precios de Cloud Functions.

Protege tu compilación con grupos privados

Para permitir que las funciones usen dependencias (por ejemplo, paquetes de Administración de socios de red), Cloud Build tiene acceso ilimitado a Internet de forma predeterminada durante el proceso de compilación. Si configuraste un perímetro de los Controles del servicio de VPC (VPC SC) y deseas limitar el acceso de la compilación solo a las dependencias almacenadas dentro del perímetro, puedes usar la función de los Grupos de trabajadores privados de Cloud Build.

En general, sigue estos pasos para configurar tu grupo privado:

  1. Crea tu grupo de trabajadores privados. Consulta Crea y administra grupos privados.
  2. Configura el perímetro de los Controles del servicio de VPC. Consulta Usa los Controles del servicio de VPC.

  3. Si tu grupo de trabajadores privados está en un proyecto diferente al de tu función, debes otorgar a la cuenta de servicio (service-FUNCTION_PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com) del agente de servicio de Cloud Functions la función cloudbuild.workerPoolUser para que el servicio de Cloud Build pueda acceder al grupo de trabajadores.

    gcloud projects add-iam-policy-binding PRIVATE_POOL_PROJECT_ID \
        --member serviceAccount:service-FUNCTION_PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com
        --role roles/cloudbuild.workerPoolUser
    

    donde FUNCTION_PROJECT_NUMBER es el número del proyecto en el que se ejecuta la función y PRIVATE_POOL_PROJECT_ID es el id del proyecto en el que se encuentra el grupo de trabajadores. Consulta Ejecuta compilaciones en un grupo privado para obtener más información.

  4. Implementa la función para compilar con un grupo privado:

gcloud

gcloud functions deploy FUNCTION_NAME \
  --runtime RUNTIME \
  --build-worker-pool PRIVATE_POOL_NAME
  [FLAGS...]

donde FUNCTION_NAME es el nombre de la función, RUNTIME es el entorno de ejecución que usas y PRIVATE_POOL_NAME es el nombre de tu grupo.

Para dejar de usar un grupo privado determinado y, en su lugar, usar el grupo predeterminado de Cloud Build, usa la marca --clear-build-worker-pool cuando vuelvas a implementar.

gcloud functions deploy FUNCTION_NAME \
  --runtime RUNTIME \
  --clear-build-worker-pool
  [FLAGS...]

donde FUNCTION_NAME es el nombre de la función y RUNTIME es el entorno de ejecución que usas.

Consola de Google Cloud

  1. En la página Descripción general de Cloud Functions, selecciona Crear función.

  2. En la sección Entorno de ejecución, compilación..., haz clic en la pestaña Compilar y, luego, ingresa el nombre completo del recurso de tu grupo privado en Compilar grupos de trabajadores.

Para obtener más información, consulta Ejecuta compilaciones en un grupo privado.