Accéder aux ressources mondiales au niveau régional pour la haute disponibilité

En utilisant des scripts d'autoscaling ou des services d'exécution sur Compute Engine, vous pouvez automatiser les pipelines d'intégration et de déploiement continus (CI/CD). Toutefois, comme ces ressources dépendent fortement des définitions de ressources globales lorsqu'elles interrogent des points de terminaison d'API globaux, cette approche peut introduire un point de défaillance unique dans votre architecture multirégionale.

Pour atténuer ce risque, vous pouvez configurer vos services afin qu'ils accèdent à des vues régionales des ressources globales. En envoyant des requêtes GET et LIST à des points de terminaison régionaux en lecture seule dans la région exacte où vos charges de travail de calcul s'exécutent, vos services isolent leur consommation d'API des pannes potentielles dans le plan de contrôle global ou dans d'autres régions. Pour en savoir plus sur les points de terminaison régionaux en lecture seule et les bonnes pratiques de résilience, consultez Utiliser des vues régionales pour les lectures résilientes du plan de contrôle.

Avant de commencer

  • Si ce n'est pas déjà fait, configurez l'authentification. L'authentification permet de valider votre identité pour accéder aux Google Cloud services et aux API. Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine en sélectionnant l'une des options suivantes :

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

    Console

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

    gcloud

    1. Installez la Google Cloud CLI. Une fois que la Google Cloud CLI est installée, initialisezla en exécutant la commande suivante :

      gcloud init

      Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  • Définissez une région et une zone par défaut.
  • REST

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

      Installez la Google Cloud CLI.

      Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

    Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l' Google Cloud authentification.

Rôles requis

Pour obtenir les autorisations nécessaires pour accéder aux ressources globales au niveau régional, demandez à votre administrateur de vous accorder le rôle IAM Administrateur d'instances Compute (v1) (roles/compute.instanceAdmin.v1) sur le projet ou les images d'OS. Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Ce rôle prédéfini contient les autorisations requises pour accéder aux ressources globales au niveau régional. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

Vous devez disposer des autorisations suivantes pour accéder aux ressources globales au niveau régional :

  • Pour obtenir des vues régionales d'un projet: compute.projects.get sur le projet
  • Pour obtenir des vues régionales des images de l'OS : compute.images.get et compute.images.list sur le projet ou les images de l'OS

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

Ressource de projet

Vous pouvez obtenir des vues régionales de votre ressource de projet globale à l'aide du point de terminaison en lecture seule projectViews. Lorsque vous interrogez le point de terminaison projectViews, Compute Engine renvoie l'objet de ressource compute.Project global standard. La ressource elle-même reste globale.

Obtenir une vue régionale d'une ressource de projet

Vous pouvez obtenir une vue régionale de votre projet global à l'aide de la Google Cloud CLI ou de l'API REST.

gcloud

Pour décrire votre projet global via le plan de contrôle d'une région spécifique, exécutez la gcloud compute project-views describe commande :

gcloud compute project-views describe \
    --region=REGION \
    --project=PROJECT_ID

Remplacez les éléments suivants :

  • REGION : Google Cloud région de la requête API, par exemple us-central1.
  • PROJECT_ID : ID du projet.

REST

Pour décrire votre projet global via le plan de contrôle d'une région spécifique, envoyez une GET requête à la projectViews méthode.

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/projectViews"

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet.
  • REGION : région de la requête API, par exemple us-central1. Google Cloud

L'API renvoie directement la représentation de ressource compute.Project standard.

{
  "kind": "compute#project",
  "id": "1234567890123456789",
  "creationTimestamp": "2024-01-15T10:00:00.000-08:00",
  "name": "my-project12345",
  "commonInstanceMetadata": {
    "items": [
      {
        "key": "example-key",
        "value": "example-value"
      }
    ]
  },
  "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project12345",
  "defaultServiceAccount": "SERVICE_ACCOUNT_EMAIL"
}

Ressource d'image de l'OS

Vous pouvez obtenir des vues régionales de votre ressource d'image de l'OS globale à l'aide du point de terminaison en lecture seule imageViews. Lorsque vous interrogez le point de terminaison imageViews, Compute Engine renvoie l'objet de ressource compute.Image global standard. La ressource elle-même reste globale.

Obtenir une liste régionale des ressources d'image d'OS

Vous pouvez lister toutes les images de l'OS globales disponibles pour votre projet via un point de terminaison régional spécifique à l'aide de la gcloud CLI ou de l'API REST.

gcloud

Pour lister les images de l'OS globales à l'aide d'un point de terminaison régional, exécutez la gcloud compute image-views list commande :

gcloud compute image-views list \
    --region=REGION \
    --project=PROJECT_ID

Remplacez les éléments suivants :

  • REGION : région de la requête API, par exemple us-central1. Google Cloud
  • PROJECT_ID : ID du projet.

REST

Pour lister les images de l'OS globales à l'aide d'un point de terminaison régional, envoyez une GET requête à la imageViews méthode :

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/imageViews"

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet.
  • REGION : région de la Google Cloud requête API, par exemple us-central1.

Obtenir une vue régionale d'une ressource d'image d'OS

Vous pouvez récupérer des informations sur une image de l'OS globale spécifique via un point de terminaison régional à l'aide de la gcloud CLI ou de l'API REST.

gcloud

Pour récupérer les détails d'une image de l'OS globale à l'aide d'un point de terminaison régional, exécutez la gcloud compute image-views describe commande :

gcloud compute image-views describe IMAGE_NAME \
    --region=REGION \
    --project=PROJECT_ID

Remplacez les éléments suivants :

  • IMAGE_NAME : nom de la ressource d'image d'OS globale.
  • REGION : région de la requête API, par exemple us-central1. Google Cloud
  • PROJECT_ID : ID du projet.

REST

Pour récupérer les détails d'une image de l'OS globale à l'aide d'un point de terminaison régional, envoyez une GET requête à la méthode imageViews spécifique :

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/imageViews/IMAGE_NAME"

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet.
  • REGION : Google Cloud région de la requête API, par exemple us-central1.
  • IMAGE_NAME: nom de la ressource d'image d'OS globale.

L'API renvoie directement la représentation de ressource compute.Image standard.

{
  "kind": "compute#image",
  "id": "1234567890123456789",
  "creationTimestamp": "2024-01-15T10:00:00.000-08:00",
  "name": "my-image12345",
  "sourceDisk": "https://www.googleapis.com/compute/v1/projects/my-project12345/zones/us-central1-a/disks/my-disk12345",
  "sourceDiskId": "1234567890123456789",
  "sourceType": "RAW",
  "status": "READY",
  "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project12345/global/images/my-image12345"
}

Étape suivante