Préparer la configuration de Traffic Director avec des services gRPC sans proxy

Ce guide contient des instructions visant à préparer la configuration de Traffic Director dans le cadre d'applications gRPC sans proxy.

Avant de commencer

Assurez-vous de bien maîtriser les concepts généraux liés à Traffic Director. Consultez les documents suivants :

Ces documents présentent l'utilisation de Traffic Director avec des applications gRPC sans proxy.

Préparation générale

Avant toute chose, préparez votre environnement en effectuant les tâches décrites dans les sections suivantes.

Activer la facturation

Vérifiez que la facturation est activée pour votre projet Google Cloud. Pour en savoir plus, consultez la section Activer, désactiver ou modifier la facturation pour un projet.

Accorder les autorisations IAM requises

Configurer Traffic Director nécessite que vous disposiez d'autorisations suffisantes pour créer des instances de VM et modifier un réseau. Si vous disposez du rôle de propriétaire ou d'éditeur pour le projet dans lequel vous activez Traffic Director, vous disposez automatiquement des autorisations appropriées.

Sinon, vous devez posséder tous les rôles IAM Compute Engine suivants. Avec ces rôles, vous disposez alors également des autorisations associées, comme décrit dans la documentation IAM de Compute Engine.

Tâche Rôle requis
Définir la stratégie IAM d'un compte de service Administrateur de compte de service
Obtenir la ressource de règle de transfert globale Lecteur de réseau Compute
Activer Traffic Director Administrateur Service Usage
Créer des réseaux, des sous-réseaux et des composants de l'équilibreur de charge Administrateur réseau
Ajouter et supprimer des règles de pare-feu Administrateur de sécurité
Créer des instances Administrateur d'instances Compute

De plus, les VM Compute Engine doivent posséder le champ d'application https://www.googleapis.com/auth/cloud-platform.

Activer l'API Traffic Director

Console

  1. Dans Cloud Console, accédez à la page "API et services" de votre projet.
    Accéder à la page "Bibliothèque d'API"
  2. Recherchez l'API Traffic Director à l'aide du champ de recherche. Si l'API Traffic Director ne figure pas dans la liste, cela signifie que vous ne disposez pas des autorisations nécessaires pour l'activer.
  3. Cliquez sur l'API Traffic Director.
  4. Dans la page qui affiche les informations relatives à l'API, cliquez sur Activer.

gcloud

gcloud services enable trafficdirector.googleapis.com

Activer le compte de service pour accéder à l'API Traffic Director

Lorsque vous configurez votre plan de données et que vous le connectez à Traffic Director, vos clients xDS se connectent au serveur xDS trafficdirector.googleapis.com. Ces clients xDS se présentent au serveur à l'aide d'une identité de compte de service afin de garantir que les communications entre le plan de données et le plan de contrôle disposent des autorisations appropriées.

Pour une VM Compute Engine, le client xDS utilise le compte de service attribué à la VM.

Le compte de service utilisé par vos clients xDS doit disposer de l'autorisation IAM compute.globalForwardingRules.get au niveau du projet. Vous pouvez également accorder cette autorisation en attribuant le rôle compute.networkViewer au compte de service.

Console

  1. Ouvrez la page IAM et administration dans Cloud Console.

    Ouvrir la page IAM et Administration

  2. Sélectionnez votre projet.

  3. Identifiez le compte de service auquel vous souhaitez ajouter un rôle.

    • Si ce compte de service ne figure pas déjà sur la liste des membres, cela signifie qu'aucun rôle ne lui a encore été attribué. Cliquez sur Ajouter, puis saisissez l'adresse e-mail du compte de service.
    • Si le compte de service figure déjà sur la liste des membres, il possède des rôles. Sélectionnez le compte de service, puis cliquez sur l'onglet Rôles.
  4. Cliquez sur le bouton Modifier correspondant au compte de service que vous souhaitez modifier.

  5. Sélectionnez le rôle Compute Engine > Lecteur de réseau Compute.

  6. Cliquez sur Enregistrer pour appliquer le rôle au compte de service.

gcloud

Remplacez la variable ${SERVICE_ACCOUNT_EMAIL} par la valeur appropriée.

PROJECT=`gcloud config get-value project`
gcloud projects add-iam-policy-binding ${PROJECT} \
   --member serviceAccount:${SERVICE_ACCOUNT_EMAIL} \
   --role roles/compute.networkViewer

Ensuite, suivez cette procédure globale pour configurer des applications gRPC sans proxy au sein d'un maillage :

  1. Mettez à jour vos clients gRPC vers la dernière version de gRPC, avec le dernier correctif.
  2. Mettez à jour le schéma de résolution des noms gRPC de vos clients lorsque vous créez un canal et spécifiez un fichier d'amorçage Traffic Director.
  3. Configurez Traffic Director et les ressources Cloud Load Balancing.

Ce guide contient des informations permettant de réaliser les deux premières étapes. Le processus de configuration que vous utilisez à l'étape 3 varie selon que votre déploiement utilise des VM Compute Engine ou des NEG Google Kubernetes Engine.

Versions et langages gRPC compatibles

gRPC est un projet Open Source. Sa compatibilité de version est décrite ici. Nous vous recommandons vivement d'utiliser la version la plus récente de gRPC pour vous assurer que les failles de sécurité connues sont réduites. Cela garantit également que vos applications ont accès aux dernières fonctionnalités compatibles avec Traffic Director. Les fonctionnalités de maillage de services compatibles avec différentes mises en œuvre et versions de gRPC sont répertoriées ici. Les langages et fonctionnalités gRPC compatibles avec Traffic Director et les services gRPC sans proxy sont répertoriés ici.

Traffic Director assure la compatibilité avec les versions compatibles et actuelles de gRPC et s'efforce d'assurer la compatibilité avec les versions de gRPC antérieures à un an, conformément aux Conditions d'utilisation de Google Cloud Platform.

Mettre à jour vos clients gRPC

Tout d'abord, vous devez mettre à jour la bibliothèque gRPC de votre application afin d'utiliser la version compatible avec les fonctionnalités dont vous avez besoin. Pour en savoir plus, consultez la section précédente. Ajoutez le résolveur de noms xDS en tant que dépendance à vos applications gRPC. Les exigences spécifiques aux langages Java et Go sont présentées ci-dessous. Les autres langages ne présentent aucune exigence supplémentaire.

Exigences pour Java

Avec Java, si vous utilisez Gradle, ajoutez le dépôt d'instantanés et la dépendance grpc-xds au fichier build.gradle. Remplacez la version indiquée ci-dessous par la dernière version de gRPC.

repositories {
    mavenLocal()
}
dependencies {
  runtimeOnly 'io.grpc:grpc-xds:1.30.0-SNAPSHOT'
}

Si vous utilisez Maven, ajoutez les éléments suivants à la section <dependencies> du fichier pom.xml : Remplacez la version indiquée ci-dessous par la dernière version de gRPC.

    <dependency>
      <groupId>io.grpc</groupId>
      <artifactId>grpc-xds</artifactId>
      <version>1.30.0-SNAPSHOT</version>
      <scope>runtime</scope>
    </dependency>

Exigences pour Go

Si vous utilisez le langage Go, vous devez importer le package xds pour Go.

Le résolveur de noms gRPC doit être xds.

Configurez ou modifiez vos applications gRPC pour qu'elles fassent appel au schéma de résolution de noms xds dans l'URI cible au lieu d'utiliser le DNS ou tout autre schéma de résolution. Pour ce faire, utilisez le préfixe xds:/// dans le nom de la cible lorsque vous créez un canal gRPC. L'équilibrage de charge pour les clients gRPC s'effectue par canal.

Vous devez également inclure le nom du service utilisé dans l'URI cible dans la configuration Traffic Director. Par exemple, en Java, vous créez le canal à l'aide de la structure suivante, dans laquelle le nom du service est helloworld :

ManagedChannelBuilder.forTarget("xds:///helloworld[:PORT_NUMBER]")

Fichier d'amorçage

Le schéma de résolution xds indique à l'application gRPC de se connecter à Traffic Director pour obtenir des informations de configuration concernant le service cible. Par conséquent, procédez comme suit :

  • Créez un fichier d'amorçage comme illustré ci-dessous. Ce fichier indique à gRPC de se connecter à un serveur xDS (Traffic Director) pour obtenir la configuration de services spécifiques.
  • Définissez une variable d'environnement nommée GRPC_XDS_BOOTSTRAP, avec comme valeur le nom du fichier d'amorçage.

Les instructions de configuration incluent des exemples illustrant comment générer ce fichier d'amorçage.

Un fichier d'amorçage contenant les informations nécessaires pour se connecter à Traffic Director doit être inclus avec l'application. Voici un exemple de fichier d'amorçage :

{
  "xds_servers": [
    {
      "server_uri": "trafficdirector.googleapis.com:443",
      "channel_creds": [
        {
          "type": "google_default"
        }
      ]
    }
  ],
  "node": {
    "id": "b7f9c818-fb46-43ca-8662-d3bdbcf7ec18~10.0.0.1",
    "metadata": {
      "TRAFFICDIRECTOR_GCP_PROJECT_NUMBER": "123456789012",
      "TRAFFICDIRECTOR_NETWORK_NAME": "default"
    },
    "locality": {
      "zone": "us-central1-a"
    }
  }
}

Le tableau suivant décrit les champs du fichier d'amorçage.

Champ Valeur et description
xds_servers Liste de serveurs xDS. gRPC n'utilise que le premier serveur de cette liste.
server_uri Vous devez renseigner au moins un serveur. gRPC tente de se connecter uniquement au premier serveur xDS de la liste "xds_servers". La valeur par défaut est trafficdirector.googleapis.com:443.
channel_creds Identifiants à utiliser auprès du serveur xDS.
type Utilisez la valeur google_default. Pour en savoir plus sur l'obtention des identifiants, consultez la page Premiers pas avec l'authentification.
node Informations concernant le client qui se connecte au serveur xDS.
id Saisissez une chaîne unique dans le champ id. Elle vous permet d'identifier le client gRPC qui se connecte à Traffic Director.
metadata Informations spécifiques au serveur xDS.
TRAFFICDIRECTOR_GCP_PROJECT_NUMBER Numéro du projet dans lequel s'exécute Traffic Director.
TRAFFICDIRECTOR_NETWORK_NAME Si ce champ est vide ou n'est pas spécifié, la valeur est définie sur default.
locality Zone GCP dans laquelle s'exécute le client gRPC.

Étapes suivantes

Une fois que vous avez mis en œuvre la préparation décrite dans le présent document, continuez avec les instructions de l'un des documents suivants :