Créer une réservation partagée


Ce document explique comment créer des réservations partagées entre plusieurs projets et gérer les projets de votre organisation qui peuvent les utiliser.

Une réservation partagée peut être utilisée par le projet qui héberge la réservation (projet propriétaire) et par les projets avec lesquels la réservation est partagée (projets consommateurs). Utilisez les réservations partagées si votre organisation dispose de plusieurs projets nécessitant des instances de machine virtuelle (VM) avec les mêmes propriétés d'instance réservées. Les réservations partagées vous permettent d'améliorer l'utilisation de vos réservations et de réduire le nombre de réservations que vous devez créer et gérer. Pour en savoir plus, consultez la section Réservations de ressources zonales Compute Engine.

Pour découvrir d'autres méthodes de création de réservations, consultez les pages suivantes :

  • Si vous avez des engagements d'un ou de trois ans dans le projet en cours, vos ressources réservées reçoivent automatiquement les remises sur engagement d'utilisation applicables. Vous pouvez également créer et associer une réservation à un engagement lorsque vous souscrivez cet engagement. Pour en savoir plus, consultez la section Associer des réservations à des engagements.

  • Pour créer une réservation qui ne peut être utilisée que par un seul projet, consultez la page Créer une réservation pour un seul projet.

Avant de commencer

  • Consultez les exigences et restrictions applicables aux réservations.
  • Consultez les exigences relatives aux quotas et les restrictions applicables aux réservations partagées.
  • Assurez-vous que le projet que vous utilisez pour créer des réservations partagées a été ajouté à la liste d'autorisation pour la contrainte de règle d'organisation des projets propriétaires de réservations partagées (compute.sharedReservationsOwnerProjects) par un administrateur des règles d'administration. Cette liste d'autorisation est vide par défaut, ce qui signifie que vous ne pouvez pas créer de réservations partagées tant que votre organisation n'accorde pas cette autorisation à un ou plusieurs projets. Pour en savoir plus sur l'affichage et la modification de la contrainte de règle d'administration, consultez la section Autoriser et restreindre la création et la modification de réservations partagées pour des projets de ce document.
  • Si ce n'est pas déjà fait, configurez l'authentification. L'authentification est le processus permettant de valider votre identité pour accéder aux services et aux API Google Cloud. Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine comme suit :

    Sélectionnez l'onglet correspondant à la façon dont vous prévoyez d'utiliser les exemples de cette page :

    Console

    Lorsque vous utilisez la console Google Cloud pour accéder aux services et aux API Google Cloud, vous n'avez pas besoin de configurer l'authentification.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Définissez une région et une zone par défaut.

    Terraform

    Pour utiliser les exemples Terraform de cette page dans un environnement de développement local, installez et initialisez gcloud CLI, puis configurez le service Identifiants par défaut de l'application à l'aide de vos identifiants utilisateur.

    1. Install the Google Cloud CLI.
    2. To initialize the gcloud CLI, run the following command:

      gcloud init
    3. Create local authentication credentials for your user account:

      gcloud auth application-default login

    Pour en savoir plus, consultez les sections sur Configurer l'authentification pour un environnement de développement local.

    REST

    Pour utiliser les exemples d'API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à gcloud CLI.

      Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init

Rôles requis

Pour obtenir les autorisations nécessaires pour créer des réservations partagées, demandez à votre administrateur de vous accorder les rôles IAM suivants :

Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

Ces rôles prédéfinis contiennent les autorisations requises pour créer des réservations partagées. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

Les autorisations suivantes sont requises pour créer des réservations partagées :

  • compute.reservations.create sur le projet
  • Pour afficher les règles d'administration : orgpolicy.policy.get sur l'organisation
  • Pour modifier les règles d'administration : orgpolicy.policy.set sur l'organisation
  • Pour spécifier un modèle d'instance : compute.instanceTemplates.useReadOnly sur le modèle d'instance

Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.

Bonnes pratiques

Lorsque vous créez des réservations partagées, il est recommandé de suivre les bonnes pratiques suivantes. Ce faisant, vous pouvez optimiser la gestion et l'utilisation des réservations partagées dans votre organisation.

  • Demander au projet propriétaire de créer la réservation partagée, sans l'utiliser.
    • Pour répartir les dépenses entre plusieurs projets, il est recommandé de dédier l'utilisation d'une réservation partagée aux projets clients. Le projet propriétaire ne doit être utilisé que pour créer la réservation partagée.
    • Lors de la création d'une réservation partagée, le projet propriétaire doit disposer d'un quota suffisant pour le nombre total de ressources à réserver. Ensuite, une fois la réservation créée, le projet propriétaire doit disposer d'un quota pour toutes les ressources réservées qu'il souhaite consommer. Pour en savoir plus, consultez la section Exigences supplémentaires relatives aux quotas pour les réservations partagées.
  • Minimisez le nombre de projets dans votre organisation que vous autorisez à créer des réservations partagées. Pour ce faire, vous pouvez utiliser la contrainte de règle d'administration des projets propriétaires de réservations partagées (compute.sharedReservationsOwnerProjects).
    • Vous ne pouvez répertorier que les réservations créées par chaque projet. Cela signifie que les réservations partagées ne sont répertoriées que dans le projet propriétaire. Vous ne pouvez pas répertorier les réservations partagées avec chaque projet ni répertorier toutes les réservations partagées dans chaque organisation. Limiter le nombre de projets propriétaires facilite la surveillance et la gestion de vos réservations partagées.
    • Limitez le partage d'une réservation partagée à seulement quelques projets, afin de gérer plus facilement le quota de vos ressources réservées.
    • Pour en savoir plus, consultez la section Autoriser et restreindre la création et la modification de réservations partagées pour des projets.
  • Réduisez le nombre de réservations partagées distinctes avec des propriétés de VM identiques.
    • Une organisation peut avoir jusqu'à 100 réservations partagées pour chaque combinaison unique de propriétés de VM. Par conséquent, réduire le nombre de réservations partagées avec des propriétés de VM identiques que vous créez permet d'atténuer cette limite.
    • Un nombre réduit de réservations partagées facilite la gestion.
  • Ne partagez les réservations qu'entre des projets associés au même compte de facturation Cloud.
    • Limitez chaque réservation partagée uniquement aux projets clients qui ont le même compte de facturation Cloud que le projet propriétaire. Cela vous permet de voir plus facilement si une réservation a été consommée et comment elle a été facturée.
    • Si vous avez activé le partage de remises sur engagement d'utilisation et que vous pouvez bénéficier de remises sur engagement d'utilisation au niveau du compte de facturation Cloud, limitez le partage de vos réservations au compte de facturation Cloud de cet engagement pour maximiser les remises sur engagement d'utilisation que vous recevrez pour vos réservations consommées. Cela vous permet de maintenir une facturation cohérente entre les projets qui créent et consomment des réservations partagées.
  • Pour les demandes de réservations futures, examinez attentivement le nombre total de VM que vous demandez.
    • Si vous créez une demande de réservation future, veillez à demander un nombre total de VM qui tienne compte de tous les éléments suivants :
      • Toutes les VM réservées correspondantes qui existeront déjà à la date ultérieure.
      • Toutes les VM non réservées correspondantes qui existeront déjà à la date ultérieure.
      • Toutes les réservations à la demande correspondantes non utilisées qui existeront déjà à la date ultérieure.
      • Augmentation de l'utilisation que vous souhaitez réserver à la date ultérieure.

      Par exemple, supposons que vous ayez besoin de 10 VM supplémentaires à la date ultérieure et que vous ayez déjà les ressources suivantes à la date ultérieure :

      • 40 VM réservées correspondantes
      • 50 VM non réservées correspondantes

      ou

      • 40 VM réservées correspondantes
      • 50 réservations à la demande correspondantes non utilisées

      Étant donné que votre utilisation existante à la date future équivaut déjà à 90 VM et réservations correspondantes, et que vous avez besoin de 10 VM supplémentaires, vous devez spécifier un nombre total de 100 dans votre demande de réservation future.

      Pour en savoir plus, consultez la section Compter et provisionner les ressources réservées.

Autoriser et restreindre la création et la modification de réservations partagées pour des projets

Par défaut, aucun projet n'est autorisé à créer ou à modifier des réservations partagées dans une organisation. Ajoutez des projets à la contrainte de règle d'administration des projets propriétaires de réservations partagées (compute.sharedReservationsOwnerProjects) pour les autoriser à créer et modifier des réservations partagées. Pour en savoir plus sur les contraintes liées aux règles d'administration, consultez la section Présentation du service de règles d'administration.

Procédez comme suit pour afficher et modifier la contrainte de règle d'administration des projets propriétaires de réservations partagées (compute.sharedReservationsOwnerProjects).

Afficher la contrainte de règle d'administration des réservations partagées

Pour savoir quels projets sont autorisés à créer et modifier des réservations partagées, utilisez la console Google Cloud ou la gcloud CLI.

Console

Suivez les étapes pour Afficher les règles d'administration à l'aide de la contrainte Projets propriétaire de réservations partagées.

gcloud

Pour afficher les projets que la contrainte compute.sharedReservationsOwnerProjects autorise à créer et modifier des réservations partagées, procédez comme suit :

  1. Téléchargez la règle de votre organisation sous la forme d'un fichier nommé policy.yaml, à l'aide de la commande gcloud resource-manager org-policies describe :

    gcloud resource-manager org-policies describe compute.sharedReservationsOwnerProjects --organization=ORGANIZATION_ID > policy.yaml
    

    Remplacez ORGANIZATION_ID par l'ID de votre organisation.

  2. Utilisez un éditeur de texte pour ouvrir le fichier policy.yaml et afficher la contrainte compute.sharedReservationsOwnerProjects. Les projets autorisés à créer et à modifier des réservations partagées sont répertoriés sous sa propriété allowedValues :

    ...
    constraint: constraints/compute.sharedReservationsOwnerProjects
    listPolicy:
      allowedValues:
      - projects/PROJECT_NUMBER_1
      - projects/PROJECT_NUMBER_2
      - projects/PROJECT_NUMBER_3
    ...
    

    PROJECT_NUMBER_1, PROJECT_NUMBER_2 et PROJECT_NUMBER_3 sont les numéros de projets des seuls projets de votre organisation autorisés à créer des réservations partagées.

  3. Facultatif : supprimez le fichier policy.yaml.

    • Si vous utilisez un terminal Linux ou macOS, exécutez la commande suivante :

      rm policy.yaml
      
    • Si vous utilisez un terminal Windows, exécutez la commande suivante :

      del policy.yaml
      

Modifier la contrainte de règle d'administration des réservations partagées

Pour changer les projets autorisés à créer et modifier des réservations partagées, utilisez la console Google Cloud ou gcloud CLI.

Console

Suivez les étapes décrites dans la section Personnaliser les règles pour les contraintes de liste à l'aide de la contrainte Projets propriétaires de réservations partagées.

gcloud

Pour modifier les projets que la contrainte compute.sharedReservationsOwnerProjects autorise à créer et modifier des réservations partagées, utilisez l'une des méthodes suivantes :

  • Pour autoriser un seul projet à créer et modifier des réservations partagées, utilisez la commande gcloud resource-manager org-policies allow. Vous pouvez répéter cette commande pour chaque projet auquel vous souhaitez accorder cette autorisation.

    gcloud resource-manager org-policies allow compute.sharedReservationsOwnerProjects projects/PROJECT_NUMBER \
        --organization=ORGANIZATION_ID
    

    Remplacez les éléments suivants :

    • PROJECT_NUMBER : numéro de projet (et non ID) d'un projet de votre organisation que vous souhaitez autoriser à créer et à modifier les réservations partagées.
    • ORGANIZATION_ID : ID de votre organisation.
  • Pour accorder ou révoquer les autorisations de création et modification des réservations partagées pour plusieurs projets, remplacez la contrainte de règle d'administration :

    1. Pour télécharger la règle de votre organisation sous la forme d'un fichier nommé policy.yaml, utilisez la commande gcloud resource-manager org-policies describe :

      gcloud resource-manager org-policies describe compute.sharedReservationsOwnerProjects --organization=ORGANIZATION_ID > policy.yaml
      

      Remplacez ORGANIZATION_ID par l'ID de votre organisation.

    2. À l'aide d'un éditeur de texte, modifiez le fichier policy.yaml afin que la contrainte compute.sharedReservationsOwnerProjects répertorie tous les projets pour lesquels vous souhaitez autoriser la création et la modification de réservations partagées sous allowedValues.

      • Pour chaque projet que vous souhaitez autoriser à créer et à modifier des réservations partagées, ajoutez le projet sur une nouvelle ligne sous allowedValues.
      • Pour chaque projet pour lequel vous souhaitez révoquer l'autorisation de créer et de modifier des réservations partagées, supprimez la ligne pour ce projet.

      Lorsque vous avez terminé, assurez-vous que le fichier policy.yaml ressemble à ce qui suit :

      ...
      constraint: constraints/compute.sharedReservationsOwnerProjects
      listPolicy:
        allowedValues:
        - projects/PROJECT_NUMBER_1
        - projects/PROJECT_NUMBER_2
        - projects/PROJECT_NUMBER_3
      ...
      

      PROJECT_NUMBER_1, PROJECT_NUMBER_2 et PROJECT_NUMBER_3 sont les numéros de projet (et non les ID de projet) de tous les projets de l'organisation que vous souhaitez autoriser à créer et modifier les réservations partagées.

    3. Enregistrez le fichier policy.yaml et fermez l'éditeur.

    4. Pour mettre à jour la règle de votre organisation avec vos modifications, utilisez la commande gcloud resource-manager org-policies set-policy :

      gcloud resource-manager org-policies set-policy --organization=ORGANIZATION_ID policy.yaml
      

      Remplacez ORGANIZATION_ID par l'ID de votre organisation.

    5. Facultatif : supprimez le fichier policy.yaml.

      • Si vous utilisez un terminal Linux ou macOS, exécutez la commande suivante :

        rm policy.yaml
        
      • Si vous utilisez un terminal Windows, exécutez la commande suivante :

        del policy.yaml
        

Vous devrez peut-être patienter quelques minutes pour que la modification soit prise en compte.

Créer une réservation partagée

Cette section explique comment créer des réservations partagées. Une fois que vous avez créé une réservation partagée, celle-ci ne peut être modifiée que par le projet propriétaire, mais les ressources d'une réservation partagée peuvent être utilisées par le projet propriétaire ou par tout projet client.

Pour utiliser une réservation, une VM doit avoir des propriétés qui correspondent exactement à cette réservation. Pour spécifier les propriétés des VM que vous souhaitez réserver, accédez à l'une des sections suivantes de ce document :

  • Option recommandée : spécifier un modèle d'instance

    Cette section explique comment utiliser un modèle d'instance pour définir les propriétés d'une réservation partagée. En utilisant un modèle d'instance, vous pouvez définir les propriétés d'une réservation et les VM pouvant utiliser la réservation au même endroit. Toutefois, comme les modèles sont spécifiques à un projet, vous ne pouvez pas utiliser le même modèle pour créer des VM pouvant utiliser la réservation en dehors du projet qui a créé la réservation. Pour les projets avec lesquels la réservation partagée est partagée, vous devez créer des modèles similaires dans ces projets ou créer des VM en spécifiant directement les propriétés.

  • Spécifier les propriétés directement

    Cette section explique comment définir directement les propriétés d'une réservation partagée. Cette méthode nécessite de vous assurer manuellement que les propriétés de vos VM et de vos réservations correspondent exactement. Lespropriétés non concordantes empêchent l'utilisation des réservations.

Par défaut, une réservation peut être automatiquement utilisée par toutes les VM dont les propriétés correspondent. Si vous souhaitez contrôler l'utilisation des réservations, effectuez une ou plusieurs des opérations suivantes :

Spécifier un modèle d'instance

Avant de créer une réservation en spécifiant un modèle d'instance, vérifiez les points suivants :

  • Un modèle d'instance contient des paramètres spécifiques au projet. Vous ne pouvez donc accéder à un modèle d'instance et ne l'utiliser que dans le cadre du même projet. Si vous créez une réservation partagée en spécifiant un modèle d'instance, vous ne pouvez pas utiliser le même modèle pour créer des VM pouvant utiliser la réservation en dehors du projet qui a créé la réservation.

  • Créez votre réservation dans la même région et la même zone que les ressources du modèle d'instance. Toutes les ressources régionales ou zonales spécifiées dans un modèle d'instance (telles qu'un type de machine ou un volume de disque persistant) limitent l'utilisation du modèle aux emplacements où ces ressources existent. Par exemple, si votre modèle d'instance spécifie un volume de disque persistant existant dans la zone us-central1-a, vous ne pouvez créer votre réservation que dans la même zone. Pour vérifier si un modèle existant spécifie des ressources qui l'associent à une région ou à une zone spécifique, affichez les détails du modèle d'instance et recherchez des références à des ressources régionales ou zonales qu'il contient.

Pour créer une réservation partagée en spécifiant un modèle d'instance, sélectionnez l'une des options suivantes :

Console

  1. Dans la console Google Cloud, accédez à la page Réservations.

    Accéder à la page "Réservations"

    La page Réservations s'affiche.

  2. Cliquez sur Créer une réservation.

    La page Créer une réservation s'affiche.

  3. Dans le champ Nom, saisissez le nom de la réservation.

  4. Sélectionnez la région et la zone dans lesquelles vous souhaitez réserver des ressources.

  5. Dans la section Type de partage, procédez comme suit :

    1. Pour spécifier une réservation partagée, cliquez sur Partagé.

    2. Cliquez sur Ajouter des projets, puis sélectionnez les projets de l'organisation du projet actuel avec lesquels vous souhaitez partager la réservation.

  6. Dans la section Utiliser avec une instance de VM, sélectionnez l'une des options suivantes :

    • Pour autoriser les instances de VM correspondantes à utiliser automatiquement cette réservation, sélectionnez Utiliser automatiquement une réservation (par défaut).

    • Pour n'utiliser les ressources de cette réservation que lors de la création de VM correspondantes qui ciblent spécifiquement cette réservation par son nom, cliquez sur Sélectionner une réservation spécifique.

  7. Dans le champ Nombre d'instances de VM, saisissez le nombre de VM que vous souhaitez réserver.

  8. Dans la section Configuration de la machine, procédez comme suit :

    1. Pour spécifier les propriétés de vos VM à partir d'un modèle d'instance existant, sélectionnez Utiliser un modèle d'instance.

    2. Dans le champ Modèle d'instance, sélectionnez le modèle d'instance de votre choix. Si vous sélectionnez un modèle d'instance régional, vous ne pouvez réserver que des ressources dans la région du modèle d'instance.

  9. Dans la section Suppression automatique, vous pouvez activer l'option de suppression automatique pour permettre à Compute Engine de supprimer automatiquement la réservation à une date et une heure spécifiques. La suppression automatique des réservations peut vous permettre d'éviter des frais inutiles lorsque vous arrêtez de consommer la réservation.

  10. Pour créer la réservation, cliquez sur Créer.

    La création de la réservation partagée peut prendre un certain temps. Cette action vous redirige vers la page Réservations.

gcloud

Pour créer une réservation partagée, exécutez la commande gcloud compute reservations create avec les options --share-setting=projects et --share-with.

Pour créer une réservation partagée en spécifiant un modèle d'instance sans option facultative, exécutez la commande suivante :

gcloud compute reservations create RESERVATION_NAME \
    --project=PROJECT_ID \
    --share-setting=projects \
    --share-with=CONSUMER_PROJECT_IDS \
    --source-instance-template=projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME \
    --vm-count=NUMBER_OF_VMS \
    --zone=ZONE

Remplacez les éléments suivants :

  • RESERVATION_NAME : le nom de la réservation à créer.

  • PROJECT_ID : l'ID du projet dans lequel vous souhaitez réserver des ressources et où le modèle d'instance existe.

  • CONSUMER_PROJECT_IDS : liste d'ID de projets séparés par une virgule pouvant utiliser cette réservation, par exemple project-1,project-2. Vous pouvez inclure jusqu'à 100 projets clients. Ces projets doivent appartenir à la même organisation que le projet propriétaire. N'incluez pas le projet propriétaire. Par défaut, il est déjà autorisé à utiliser la réservation.

  • LOCATION : emplacement du modèle d'instance. Spécifiez une des valeurs suivantes :

    • Pour un modèle d'instance global : global

    • Pour un modèle d'instance régional : regions/REGION. Remplacez REGION par la région dans laquelle se trouve le modèle d'instance. Si vous spécifiez un modèle d'instance régional, vous ne pouvez réserver que des VM situées dans la région du modèle d'instance.

  • INSTANCE_TEMPLATE_NAME : nom d'un modèle d'instance existant. Si le modèle d'instance spécifie un type de machine A3, vous devez inclure l'option --require-specific-reservation. Cela indique que seules les VM qui ciblent spécifiquement cette réservation peuvent l'utiliser. Pour en savoir plus, consultez la section Consommer des VM d'une réservation spécifique.

  • NUMBER_OF_VMS : nombre de VM à réserver.

  • ZONE : la zone dans laquelle vous devez réserver des ressources.

Par exemple, pour créer une réservation en spécifiant un modèle d'instance global dans la zone us-central1-a, partager la réservation avec les projets project-1 et project-2, et réserver dix VM qui utilisent chacune un type de machine prédéfini N2 avec 4 processeurs virtuels, exécutez la commande suivante :

gcloud compute reservations create my-reservation \
    --project=example-project \
    --share-setting=projects \
    --share-with=project-1,project-2 \
    --source-instance-template=projects/example-project/global/example-instance-template \
    --vm-count=10 \
    --zone=us-central1-a

Vous pouvez éventuellement effectuer une ou plusieurs des opérations suivantes :

  • Pour spécifier que seules les VM qui ciblent spécifiquement cette réservation peuvent l'utiliser, incluez l'option --require-specific-reservation.

    gcloud compute reservations create example-reservation \
        --require-specific-reservation \
        ...
    
  • Pour permettre à Compute Engine de supprimer automatiquement la réservation, sélectionnez l'une des méthodes suivantes :

    • Pour supprimer la réservation à une date et une heure spécifiques, utilisez la commande gcloud beta compute reservations create avec l'option --delete-at-time.

      gcloud beta compute reservations create reservation-example \
          --delete-at-time=DELETE_AT_TIME \
          ...
      

      Remplacez DELETE_AT_TIME par une date et une heure au format de code temporel RFC 3339 comme suit :

      YYYY-MM-DDTHH:MM:SSOFFSET
      

      Remplacez les éléments suivants :

      • YYYY-MM-DD : date respectant la syntaxe année à 4 chiffres, mois à 2 chiffres et jour du mois à 2 chiffres, séparés par des traits d'union (-).

      • HH:MM:SS : heure respectant la syntaxe heures à 2 chiffres sur 24 heures, minutes à 2 chiffres et secondes à 2 chiffres, séparés par des signes deux-points (:).

      • OFFSET : fuseau horaire mis en forme en tant que décalage par rapport au temps universel coordonné (UTC). Par exemple, pour utiliser l'heure normale du Pacifique (PST), spécifiez -08:00. Sinon, pour n'utiliser aucun décalage, spécifiez Z.

    • Pour supprimer la réservation après une certaine durée, exécutez la commande gcloud beta compute reservations create avec l'option --delete-after-duration.

      gcloud beta compute reservations create reservation-example \
          --delete-after-duration=DELETE_AFTER_DURATION \
          ...
      

      Remplacez DELETE_AFTER_DURATION par une durée en jours, heures, minutes ou secondes. Par exemple, spécifiez 30m pour 30 minutes ou 1d2h3m4s pour 1 jour, 2 heures, 3 minutes et 4 secondes.

REST

Pour créer une réservation partagée, envoyez une requête POST à la méthode reservations.insert. Dans le corps de la requête, incluez les éléments suivants :

  • Le champ projectMap

  • Le champ shareType défini sur SPECIFIC_PROJECTS.

Par exemple, pour créer une réservation partagée en spécifiant un modèle d'instance sans champs facultatifs et partager la réservation avec deux projets clients, envoyez la requête POST suivante :

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations

{
  "name": "RESERVATION_NAME",
  "shareSettings": {
    "shareType": "SPECIFIC_PROJECTS",
    "projectMap": {
      "CONSUMER_PROJECT_ID_1": {
        "projectId": "CONSUMER_PROJECT_ID_1"
      },
      "CONSUMER_PROJECT_ID_2": {
        "projectId": "CONSUMER_PROJECT_ID_2"
      }
    }
  },
  "specificReservation": {
    "count": "NUMBER_OF_VMS",
    "sourceInstanceTemplate": "projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME"
  }
}

Remplacez les éléments suivants :

  • PROJECT_ID : l'ID du projet dans lequel vous souhaitez réserver des ressources et où le modèle d'instance existe.

  • ZONE : la zone dans laquelle vous devez réserver des ressources.

  • RESERVATION_NAME : le nom de la réservation à créer.

  • CONSUMER_PROJECT_ID_1 et CONSUMER_PROJECT_ID_2 : ID des projets pouvant utiliser cette réservation. Vous pouvez inclure jusqu'à 100 projets clients. Ces projets doivent appartenir à la même organisation que le projet propriétaire. N'incluez pas le projet propriétaire. Par défaut, il est déjà autorisé à utiliser la réservation.

  • NUMBER_OF_VMS : nombre de VM à réserver.

  • LOCATION : emplacement du modèle d'instance. Spécifiez une des valeurs suivantes :

    • Pour un modèle d'instance global : global

    • Pour un modèle d'instance régional : regions/REGION. Remplacez REGION par la région dans laquelle se trouve le modèle d'instance. Si vous spécifiez un modèle d'instance régional, vous ne pouvez réserver que des VM situées dans la région du modèle d'instance.

  • INSTANCE_TEMPLATE_NAME : nom d'un modèle d'instance existant. Si le modèle d'instance spécifie un type de machine A3, vous devez inclure le champ specificReservationRequired dans le corps de la requête, puis le définir sur true. Cela indique que seules les VM qui ciblent spécifiquement cette réservation peuvent l'utiliser. Pour en savoir plus, consultez la section Consommer des VM d'une réservation spécifique.

Par exemple, pour créer une réservation pour dix VM dans la zone us-central1-a en spécifiant un modèle d'instance global et partager la réservation avec les projets project-1 et project-2, effectuez la requête POST suivante :

POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations

{
  "name": "my-reservation",
  "shareSettings": {
    "shareType": "SPECIFIC_PROJECTS",
    "projectMap": {
      "project-1": {
        "projectId": "project-1"
      },
      "project-2": {
        "projectId": "project-2"
      }
    }
  },
  "specificReservation": {
    "count": "10",
    "sourceInstanceTemplate": "projects/example-project/global/instanceTemplates/example-instance-template"
  }
}

Vous pouvez éventuellement effectuer une ou plusieurs des opérations suivantes :

  • Pour spécifier que seules les VM qui ciblent spécifiquement cette réservation peuvent l'utiliser, incluez le champ specificReservationRequired dans le corps de la requête et définissez-le sur true.

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations
    
    {
      "name": "example-reservation",
      "specificReservationRequired": true,
      ...
    }
    
  • Pour permettre à Compute Engine de supprimer automatiquement la réservation, sélectionnez l'une des méthodes suivantes :

    • Pour supprimer la réservation à une date et une heure spécifiques, envoyez une requête POST à la méthode beta.reservations.insert. Dans le corps de la requête, incluez le champ deleteAtTime.

      POST https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a/reservations
      
      {
        "name": "example-reservation",
        "deleteAtTime": "DELETE_AT_TIME",
        ...
      }
      

      Remplacez DELETE_AT_TIME par une date et une heure au format de code temporel RFC 3339 comme suit :

      YYYY-MM-DDTHH:MM:SSOFFSET
      

      Remplacez les éléments suivants :

      • YYYY-MM-DD : date respectant la syntaxe année à 4 chiffres, mois à 2 chiffres et jour du mois à 2 chiffres, séparés par des traits d'union (-).

      • HH:MM:SS : heure respectant la syntaxe heures à 2 chiffres sur 24 heures, minutes à 2 chiffres et secondes à 2 chiffres, séparés par des signes deux-points (:).

      • OFFSET : fuseau horaire mis en forme en tant que décalage par rapport au temps universel coordonné (UTC). Par exemple, pour utiliser l'heure normale du Pacifique (PST), spécifiez -08:00. Sinon, pour n'utiliser aucun décalage, spécifiez Z.

    • Pour supprimer la réservation après une certaine durée, envoyez une requête POST à la méthode beta.reservations.insert. Dans le corps de la requête, incluez le champ deleteAfterDuration.

      POST https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a/reservations
      
      {
        "name": "example-reservation",
        "deleteAfterDuration": {
          "seconds": "DELETE_AFTER_DURATION"
        },
        ...
      }
      

      Remplacez DELETE_AFTER_DURATION par une durée en secondes. Par exemple, spécifiez 86400 pour 86 400 secondes (1 jour).

Spécifier les propriétés de la VM directement

Pour créer une réservation partagée en spécifiant directement les propriétés, sélectionnez l'une des options suivantes :

Console

  1. Dans la console Google Cloud, accédez à la page Réservations.

    Accéder à la page "Réservations"

    La page Réservations s'affiche.

  2. Cliquez sur Créer une réservation.

    La page Créer une réservation s'affiche.

  3. Dans le champ Nom, saisissez le nom de la réservation.

  4. Sélectionnez la région et la zone dans lesquelles vous souhaitez réserver des ressources.

  5. Dans la section Type de partage, procédez comme suit :

    1. Pour spécifier une réservation partagée, cliquez sur Partagé.

    2. Cliquez sur Ajouter des projets, puis sélectionnez les projets de l'organisation du projet actuel avec lesquels vous souhaitez partager la réservation.

  6. Dans la section Utiliser avec une instance de VM, sélectionnez l'une des options suivantes :

    • Pour autoriser les VM correspondantes à utiliser automatiquement cette réservation, sélectionnez l'option Utiliser automatiquement une réservation (par défaut).

    • Pour n'utiliser les ressources de cette réservation que lors de la création de VM correspondantes qui ciblent spécifiquement cette réservation par son nom, cliquez sur Sélectionner une réservation spécifique.

  7. Dans le champ Nombre d'instances de VM, saisissez le nombre de VM que vous souhaitez réserver.

  8. Dans la section Configuration de la machine, sélectionnez Spécifier un type de machine, puis spécifiez les éléments suivants :

    1. Dans les champs Famille de machines, Série et Type de machine, sélectionnez une famille de machines, une série et un type de machine.

    2. Facultatif : pour spécifier une configuration minimale de plate-forme de processeur ou associer des GPU à des VM N1, procédez comme suit :

      1. Développez la section Plate-forme du CPU et GPU en cliquant sur la flèche de développement .

      2. Facultatif : pour spécifier une configuration minimale de plate-forme de processeur, sélectionnez une option dans la liste Plate-forme du processeur.

      3. Facultatif : pour associer des GPU à des VM N1, cliquez sur Ajouter un GPU. Ensuite, dans les champs Type de GPU et Nombre de GPU, sélectionnez le type et le nombre de GPU à associer à chaque VM N1.

    3. Facultatif : pour ajouter des disques SSD locaux, procédez comme suit :

      1. Dans le champ Nombre de disques, sélectionnez le nombre de disques SSD locaux pour chaque VM.

      2. Dans le champ Type d'interface, sélectionnez l'interface des disques SSD locaux.

  9. Dans la section Suppression automatique, vous pouvez activer l'option de suppression automatique pour permettre à Compute Engine de supprimer automatiquement la réservation à une date et une heure spécifiques. La suppression automatique des réservations peut vous permettre d'éviter des frais inutiles lorsque vous arrêtez de consommer la réservation.

  10. Pour créer la réservation, cliquez sur Créer.

    La création de la réservation partagée peut prendre un certain temps. Cette action vous redirige vers la page Réservations.

gcloud

Pour créer une réservation partagée, exécutez la commande gcloud compute reservations create avec les options --share-setting=projects et --share-with.

Pour créer une réservation partagée en spécifiant directement les propriétés, sans inclure d'options facultatives, exécutez la commande suivante :

gcloud compute reservations create RESERVATION_NAME \
    --machine-type=MACHINE_TYPE \
    --project=PROJECT_ID \
    --share-setting=projects \
    --share-with=CONSUMER_PROJECT_IDS \
    --vm-count=NUMBER_OF_VMS \
    --zone=ZONE

Remplacez les éléments suivants :

  • RESERVATION_NAME : le nom de la réservation à créer.

  • MACHINE_TYPE : un type de machine à utiliser pour chaque VM. Si vous spécifiez un type de machine A3, vous devez inclure l'option --require-specific-reservation. Cela indique que seules les VM qui ciblent spécifiquement cette réservation peuvent l'utiliser. Pour en savoir plus, consultez la section Consommer des VM d'une réservation spécifique.

  • PROJECT_ID : ID du projet dans lequel vous souhaitez réserver des ressources.

  • CONSUMER_PROJECT_IDS : liste d'ID de projets séparés par une virgule pouvant utiliser cette réservation, par exemple project-1,project-2. Vous pouvez inclure jusqu'à 100 projets clients. Ces projets doivent appartenir à la même organisation que le projet propriétaire. N'incluez pas le projet propriétaire. Par défaut, il est déjà autorisé à utiliser la réservation.

  • NUMBER_OF_VMS : nombre de VM à réserver.

  • ZONE : la zone dans laquelle vous devez réserver des ressources.

Par exemple, pour créer une réservation dans la zone us-central1-a pour dix VM utilisant chacune un type de machine prédéfini N2 avec 4 processeurs virtuels, et qui partagent la réservation avec les projets project-1 et project-2, exécutez la commande suivante :

gcloud compute reservations create my-reservation \
    --machine-type=n2-standard-4 \
    --project=example-project \
    --share-setting=projects \
    --share-with=project-1,project-2 \
    --vm-count=10 \
    --zone=us-central1-a

Vous pouvez éventuellement effectuer une ou plusieurs des opérations suivantes :

  • Pour associer des GPU à vos VM N1 réservées, incluez l'option --accelerator.

    gcloud compute reservations create my-reservation \
        --accelerator=count=NUMBER_OF_ACCELERATORS,type=ACCELERATOR_TYPE
        ...
    

    Remplacez les éléments suivants :

  • Pour ajouter un ou plusieurs disques SSD locaux à chaque VM réservée, incluez une ou plusieurs options --local-ssd. Vous pouvez spécifier jusqu'à 24 disques SSD locaux. La capacité de chaque disque SSD local est de 375 Go.

    Par exemple, pour spécifier deux disques SSD locaux lors de la création d'une réservation, incluez deux options --local-ssd comme suit :

    gcloud compute reservations create my-reservation \
        --local-ssd=size=375,interface=INTERFACE_1 \
        --local-ssd=size=375,interface=INTERFACE_2 \
        ...
    

    Remplacez INTERFACE_1 et INTERFACE_2 par le type d'interface que chaque disque SSD local doit utiliser. Spécifiez une des valeurs suivantes :

    • Interfaces de disque NVME : nvme

    • Interfaces de disque SCSI : scsi

    Assurez-vous que le type de machine que vous spécifiez pour les VM réservées est compatible avec les interfaces de disque choisies. Sinon, la création de la réservation échoue. Pour en savoir plus, découvrez comment choisir une interface de disque.

  • Pour que les VM réservées utilisent une plate-forme CPU minimale spécifique au lieu de la plate-forme CPU par défaut de la zone, incluez l'option --min-cpu-platform.

    gcloud compute reservations create my-reservation \
        --min-cpu-platform="MIN_CPU_PLATFORM" \
        ...
    

    Remplacez MIN_CPU_PLATFORM par une plate-forme CPU minimale. Pour vous assurer qu'une plate-forme CPU est disponible dans la zone où vous réservez des ressources, affichez les plates-formes CPU disponibles par zone.

  • Pour spécifier que seules les VM qui --require-specific-reservationciblent spécifiquement cette réservation peuvent la consommer, incluez l'option .

    gcloud compute reservations create example-reservation \
        --require-specific-reservation \
        ...
    
  • Pour permettre à Compute Engine de supprimer automatiquement la réservation, sélectionnez l'une des méthodes suivantes :

    • Pour supprimer la réservation à une date et une heure spécifiques, utilisez la commande gcloud beta compute reservations create avec l'option --delete-at-time.

      gcloud beta compute reservations create reservation-example \
          --delete-at-time=DELETE_AT_TIME \
          ...
      

      Remplacez DELETE_AT_TIME par une date et une heure au format de code temporel RFC 3339 comme suit :

      YYYY-MM-DDTHH:MM:SSOFFSET
      

      Remplacez les éléments suivants :

      • YYYY-MM-DD : date respectant la syntaxe année à 4 chiffres, mois à 2 chiffres et jour du mois à 2 chiffres, séparés par des traits d'union (-).

      • HH:MM:SS : heure respectant la syntaxe heures à 2 chiffres sur 24 heures, minutes à 2 chiffres et secondes à 2 chiffres, séparés par des signes deux-points (:).

      • OFFSET : fuseau horaire mis en forme en tant que décalage par rapport au temps universel coordonné (UTC). Par exemple, pour utiliser l'heure normale du Pacifique (PST), spécifiez -08:00. Sinon, pour n'utiliser aucun décalage, spécifiez Z.

    • Pour supprimer la réservation après une certaine durée, exécutez la commande gcloud beta compute reservations create avec l'option --delete-after-duration.

      gcloud beta compute reservations create reservation-example \
          --delete-after-duration=DELETE_AFTER_DURATION \
          ...
      

      Remplacez DELETE_AFTER_DURATION par une durée en jours, heures, minutes ou secondes. Par exemple, spécifiez 30m pour 30 minutes ou 1d2h3m4s pour 1 jour, 2 heures, 3 minutes et 4 secondes.

Terraform

Pour créer une réservation, utilisez la ressource Terraform google_compute_reservation. Pour spécifier une réservation partagée, définissez le bloc share_settings :

  • Définissez le champ share_type sur SPECIFIC_PROJECTS.
  • Dans le bloc project_map, spécifiez les ID de projet des projets avec lesquels vous souhaitez partager cette réservation.

Pour en savoir plus sur l'utilisation de Terraform, consultez la page Utiliser Terraform avec Google Cloud.

REST

Pour créer une réservation partagée, envoyez une requête POST à la méthode reservations.insert. Dans le corps de la requête, incluez les éléments suivants :

  • Le champ projectMap

  • Le champ shareType défini sur SPECIFIC_PROJECTS.

Par exemple, pour créer une réservation partagée sans champs facultatifs et partager la réservation avec deux projets clients, envoyez la requête POST suivante :

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations

{
  "name": "RESERVATION_NAME",
  "shareSettings": {
    "shareType": "SPECIFIC_PROJECTS",
    "projectMap": {
      "CONSUMER_PROJECT_ID_1": {
        "projectId": "CONSUMER_PROJECT_ID_1"
      },
      "CONSUMER_PROJECT_ID_2": {
        "projectId": "CONSUMER_PROJECT_ID_2"
      }
    }
  },
  "specificReservation": {
    "count": "NUMBER_OF_VMS",
    "instanceProperties": {
      "machineType": "MACHINE_TYPE",
    }
  }
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet dans lequel vous souhaitez réserver des ressources.

  • ZONE : la zone dans laquelle vous devez réserver des ressources.

  • RESERVATION_NAME : le nom de la réservation à créer.

  • CONSUMER_PROJECT_ID_1 et CONSUMER_PROJECT_ID_2 : ID des projets pouvant utiliser cette réservation. Vous pouvez inclure jusqu'à 100 projets clients. Ces projets doivent appartenir à la même organisation que le projet propriétaire. N'incluez pas le projet propriétaire. Par défaut, il est déjà autorisé à utiliser la réservation.

  • NUMBER_OF_VMS : nombre de VM à réserver.

  • MACHINE_TYPE : un type de machine à utiliser pour chaque VM. Si vous spécifiez un type de machine A3, vous devez inclure le champ specificReservationRequired dans le corps de la requête, puis le définir sur true. Cela indique que seules les VM qui ciblent spécifiquement cette réservation peuvent l'utiliser.

Par exemple, pour créer une réservation en spécifiant un modèle d'instance global dans la zone us-central1-a, partager la réservation avec les projets project-1 et project-2, et réserver dix VM qui utilisent chacune un type de machine prédéfini N2 avec 4 processeurs virtuels, effectuez la requête POST suivante :

POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations

{
  "name": "my-reservation",
  "shareSettings": {
    "shareType": "SPECIFIC_PROJECTS",
    "projectMap": {
      "project-1": {
        "projectId": "project-1"
      },
      "project-2": {
        "projectId": "project-2"
      }
    }
  },
  "specificReservation": {
    "count": "10",
    "instanceProperties": {
      "machineType": "n2-standard-4",
    }
  }
}

Vous pouvez éventuellement effectuer une ou plusieurs des opérations suivantes :

  • Pour associer des GPU à vos VM N1 réservées, incluez le champ guestAccelerators dans le corps de la requête.

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations
    
    {
      "name": "example-reservation",
      "specificReservation": {
        "instanceProperties": {
          "guestAccelerators": [
            {
              "acceleratorCount": NUMBER_OF_ACCELERATORS,
              "acceleratorType": "ACCELERATOR_TYPE"
            }
          ],
          ...
        },
        ...
      }
    }
    

    Remplacez les éléments suivants :

  • Pour ajouter un ou plusieurs disques SSD locaux à chaque VM réservée, incluez le champ localSsds dans le corps de la requête. Vous pouvez spécifier jusqu'à 24 disques SSD locaux. La capacité de chaque disque SSD local est de 375 Go.

    Par exemple, pour spécifier deux disques SSD locaux lors de la création d'une réservation, spécifiez les éléments suivants :

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations
    
    {
      "name": "example-reservation",
      "specificReservation": {
        "instanceProperties": {
          "localSsds": [
            {
              "diskSizeGb": "375",
              "interface": "INTERFACE_1"
            },
            {
              "diskSizeGb": "375",
              "interface": "INTERFACE_2"
            }
          ],
          ...
        },
        ...
      }
    }
    

    Remplacez INTERFACE_1 et INTERFACE_2 par le type d'interface que chaque disque SSD local doit utiliser. Spécifiez une des valeurs suivantes :

    • Interfaces de disque NVME : NVME

    • Interfaces de disque SCSI : SCSI

    Assurez-vous que le type de machine que vous spécifiez pour les VM réservées est compatible avec les interfaces de disque choisies. Sinon, la création de la réservation échoue. Pour en savoir plus, découvrez comment choisir une interface de disque.

  • Pour que les VM réservées utilisent une plate-forme CPU minimale spécifique au lieu de la plate-forme CPU par défaut de la zone, incluez le champ minCpuPlatform dans le corps de la requête.

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations
    
    {
      "name": "example-reservation",
      "specificReservation": {
        "instanceProperties": {
          "minCpuPlatform": "MIN_CPU_PLATFORM",
          ...
        },
        ...
      }
    }
    

    Remplacez MIN_CPU_PLATFORM par une plate-forme CPU minimale. Pour vous assurer qu'une plate-forme CPU est disponible dans la zone où vous réservez des ressources, affichez les plates-formes CPU disponibles par zone.

  • Pour spécifier que seules les VM qui ciblent spécifiquement cette réservation peuvent l'utiliser, incluez le champ specificReservationRequired dans le corps de la requête et définissez-le sur true.

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations
    
    {
      "name": "example-reservation",
      "specificReservationRequired": true,
      ...
    }
    
  • Pour permettre à Compute Engine de supprimer automatiquement la réservation, sélectionnez l'une des méthodes suivantes :

    • Pour supprimer la réservation à une date et une heure spécifiques, envoyez une requête POST à la méthode beta.reservations.insert. Dans le corps de la requête, incluez le champ deleteAtTime.

      POST https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a/reservations
      
      {
        "name": "example-reservation",
        "deleteAtTime": "DELETE_AT_TIME",
        ...
      }
      

      Remplacez DELETE_AT_TIME par une date et une heure au format de code temporel RFC 3339 comme suit :

      YYYY-MM-DDTHH:MM:SSOFFSET
      

      Remplacez les éléments suivants :

      • YYYY-MM-DD : date respectant la syntaxe année à 4 chiffres, mois à 2 chiffres et jour du mois à 2 chiffres, séparés par des traits d'union (-).

      • HH:MM:SS : heure respectant la syntaxe heures à 2 chiffres sur 24 heures, minutes à 2 chiffres et secondes à 2 chiffres, séparés par des signes deux-points (:).

      • OFFSET : fuseau horaire mis en forme en tant que décalage par rapport au temps universel coordonné (UTC). Par exemple, pour utiliser l'heure normale du Pacifique (PST), spécifiez -08:00. Sinon, pour n'utiliser aucun décalage, spécifiez Z.

    • Pour supprimer la réservation après une certaine durée, envoyez une requête POST à la méthode beta.reservations.insert. Dans le corps de la requête, incluez le champ deleteAfterDuration.

      POST https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a/reservations
      
      {
        "name": "example-reservation",
        "deleteAfterDuration": {
          "seconds": "DELETE_AFTER_DURATION"
        },
        ...
      }
      

      Remplacez DELETE_AFTER_DURATION par une durée en secondes. Par exemple, spécifiez 86400 pour 86 400 secondes (1 jour).

Dépannage

Découvrez comment résoudre les problèmes de création de réservations.

Étapes suivantes