Présentation du processus de compilation

Lorsque vous déployez le code source de votre fonction dans Cloud Functions, ce code source est stocké dans un bucket Cloud Storage. Cloud Build compile ensuite automatiquement votre code dans une image de conteneur, puis transfère cette image dans un registre d'images. Cloud Functions accède à cette image lorsqu'il doit exécuter le conteneur pour exécuter votre fonction.

Le processus de création de l'image est entièrement automatique et ne nécessite aucune saisie directe de votre part. Toutes les ressources utilisées dans le processus de compilation s'exécutent dans votre propre projet utilisateur.

L'exécution du processus de compilation présente les aspects suivants :

  • Vous disposez d'un accès direct à tous les journaux de compilation.

  • Il n'y a pas de quota prédéfini pour la durée de compilation, bien que Cloud Build dispose de son propre quota de simultanéité par défaut.

  • Vous pouvez afficher l'image de conteneur actuelle et les images de conteneur précédemment déployées, toutes stockées dans Container Registry.

  • Cloud Storage est utilisé directement dans votre projet et le répertoire du code source de vos fonctions est stocké dans un bucket au sein de votre projet. Veuillez noter les points suivants :

    • Si vous utilisez le chiffrement par défaut, ce bucket est nommé gcf-sources-PROJECT_NUMBER-REGION.
    • Si vous protégez vos données avec des CMEK, le bucket est nommé gcf-sources-PROJECT_NUMBER-REGION-CMEK_KEY_HASH.
    • La durée de conservation du bucket n'est pas définie.

Caractéristiques du processus de compilation

Le processus de compilation présente les caractéristiques suivantes :

  • L'API Cloud Build doit être activée pour votre projet.

    Pour activer l'API manuellement, cliquez sur le lien ci-dessus, sélectionnez votre projet dans le menu déroulant, puis suivez les instructions pour activer l'interface utilisateur.

  • Étant donné que l'intégralité du processus de compilation a lieu dans le contexte de votre projet, celui-ci est soumis à la tarification des ressources incluses :

    • Pour en savoir plus sur les tarifs de Cloud Build, consultez la page Tarifs. Ce processus utilise la taille d'instance par défaut de Cloud Build, car ces instances sont préalablement démarrées et disponibles plus rapidement. Cloud Build propose une version gratuite. Consultez les tarifs pour plus de détails.

    • Pour en savoir plus sur les tarifs de Cloud Storage, consultez la page Tarifs. Cloud Storage propose un quota gratuit : consultez les tarifs pour plus de détails.

    • Pour en savoir plus sur les tarifs d'Artifact Registry, consultez la page Tarifs.

    • Pour en savoir plus sur les tarifs (obsolètes) de Container Registry, consultez la page Tarifs.

  • Comme le processus de compilation est susceptible d'être facturé, votre projet doit être associé à un compte Cloud Billing.

Afficher les journaux de vos images de build

L'un des principaux avantages d'avoir le processus d'image de build dans votre projet utilisateur est de pouvoir accéder aux journaux de compilation. Vous pouvez utiliser gcloud CLI ou la console Google Cloud pour accéder aux journaux, qui sont disponibles via Cloud Logging.

gcloud

  1. Déployez votre fonction à l'aide de la commande gcloud functions deploy.

  2. L'URL des journaux est affichée dans la réponse de votre fenêtre de terminal. Exemple :

    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.
    

Console Google Cloud

  1. Dans la fenêtre Présentation de Cloud Functions, cliquez sur le nom de la fonction que vous étudiez.
  2. Cliquez sur l'onglet Détails.
  3. Dans le volet Informations générales, cliquez sur le lien Journal des builds de conteneurs pour ouvrir le volet Explorateur de journaux.
  4. Cliquez sur une ligne pour afficher les détails de cette entrée de journal de build. S'il s'agit d'une entrée d'erreur associée à un fichier, ces informations incluent le nom, la ligne et la colonne du fichier.

Registre d'images

Cloud Functions (2e génération) utilise exclusivement Artifact Registry pour stocker les images compilées à partir du code source de votre fonction. Les images sont stockées dans un dépôt nommé REGION-docker.pkg.dev/PROJECT_ID/gcf-artifacts.

Cloud Functions (1re génération) utilise Artifact Registry par défaut. Container Registry est désormais obsolète.

Artifact Registry doit se trouver dans le même projet que votre fonction. Vous pouvez créer ou mettre à jour une fonction basée sur Artifact Registry comme suit :

gcloud

Pour l'Artefact Registry géré par le client, exécutez la commande suivante :

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

Remplacez les éléments suivants :

  • FUNCTION : nom de la fonction.
  • REPOSITORY : nom complet du dépôt Artifact Registry, au format suivant : projects/PROJECT_NAME/locations/LOCATION/repositories/REPOSITORY.

Pour l'Artifact Registry géré par Google, utilisez cette commande :

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

Console Google Cloud

  1. Accédez à la page Cloud Functions dans Google Cloud Console :
    Accéder à la page Cloud Functions

  2. Cliquez sur le nom de la fonction pour laquelle vous souhaitez utiliser Artifact Registry.

  3. Cliquez sur Modifier.

  4. Cliquez sur Exécution, compilation... pour développer les options de configuration avancées.

  5. Cliquez sur Sécurité et dépôt d'images dans la barre de menu pour ouvrir l'onglet "Sécurité".

  6. Sous Dépôt d'images, sélectionnez l'une des options suivantes, selon le type d'Artifact Registry que vous utilisez :

    • Artifact Registry géré par le client Utilisez cette option si vous configurez votre propre dépôt Docker.
    • Artifact Registry géré par Google Utilisez cette option si vous souhaitez utiliser un dépôt Docker géré par Google au lieu de configurer votre propre dépôt.
  7. Pour Artifact Registry géré par le client, utilisez le menu déroulant Artifact Registry pour sélectionner le dépôt Artifact Registry souhaité, ou suivez les invites et créez un nouveau dépôt Artifact Registry.

  8. Cliquez sur Suivant.

  9. Cliquez sur Déployer.

Pour obtenir des informations détaillées sur les prix, consultez la section Tarifs de Cloud Functions.

Sécuriser votre build à l'aide de pools privés

Pour permettre à vos fonctions d'utiliser des dépendances (par exemple, des packages npm), Cloud Build dispose par défaut d'un accès illimité à Internet durant le processus de compilation. Si vous avez configuré un périmètre VPC Service Controls (VPC SC) et que vous souhaitez limiter l'accès de la compilation uniquement aux dépendances stockées dans ce périmètre, vous pouvez utiliser la fonctionnalité de pools de nœuds de calcul privés de Cloud Build.

En général, vous pouvez utiliser la procédure suivante pour configurer votre pool privé :

  1. Créez votre pool de nœuds de calcul privé. Consultez la page Créer et gérer des pools privés.
  2. Configurez votre périmètre VPC Service Controls. Consultez la page Utiliser VPC Service Controls.

  3. Si votre pool de nœuds de calcul privé se trouve dans un projet différent de celui de votre fonction, vous devez attribuer au compte de service de l'agent de service Cloud Functions (service-FUNCTION_PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com) le rôle cloudbuild.workerPoolUser afin que le service Cloud Build puisse accéder au pool de nœuds de calcul.

    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
    

    FUNCTION_PROJECT_NUMBER correspond au numéro du projet dans lequel la fonction est exécutée et PRIVATE_POOL_PROJECT_ID à l'ID du projet dans lequel le nœud de calcul est exécuté. Pour en savoir plus, consultez la page Exécuter des compilations dans un pool privé.

  4. Déployez votre fonction pour qu'elle soit compilée à l'aide d'un pool privé :

gcloud

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

FUNCTION_NAME correspond au nom de la fonction, RUNTIME à l'environnement d'exécution que vous utilisez et PRIVATE_POOL_NAME au nom de votre pool.

Pour arrêter d'utiliser un pool privé donné et utiliser à la place le pool Cloud Build par défaut, utilisez l'option --clear-build-worker-pool lors du redéploiement.

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

FUNCTION_NAME correspond au nom de la fonction et RUNTIME à l'environnement d'exécution que vous utilisez.

Console Google Cloud

  1. Dans la page Présentation de Cloud Functions, sélectionnez Créer une fonction.

  2. Dans Environnement d'exécution, compilation... cliquez sur le bouton Compilation puis saisissez le nom de ressource complet de votre pool privé dans la zone de texte Créer des pools de nœuds de calcul.

Pour en savoir plus, consultez la page Exécuter des builds dans un pool privé.