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

La configuration de Traffic Director comprend plusieurs phases. Ce document décrit la première phase : les instructions pour préparer la configuration de Traffic Director avec des applications gRPC sans proxy. Ce document s'applique si vous utilisez les anciennes API ou les nouvelles API de routage de services, qui sont en version bêta. Les autres phases sont décrites dans les guides spécifiques à la plate-forme répertoriés dans la section Continuer le processus de configuration plus loin dans le présent document.

Avant de lire ce guide, familiarisez-vous avec les documents suivants qui présentent l'utilisation de Traffic Director avec des applications gRPC sans proxy :

Prérequis

Pour préparer votre environnement, effectuez les tâches suivantes :

  1. Activez la facturation.
  2. Accordez les autorisations requises.
  3. Activez l'API Traffic Director pour votre projet.
  4. Assurez-vous que le compte de service dispose des autorisations suffisantes pour accéder à l'API Traffic Director.

Les sections suivantes fournissent des instructions pour chaque tâche.

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 Cloud IAM requises

Vous devez disposer des autorisations IAM suffisantes pour créer des instances de VM et modifier un réseau afin de configurer Traffic Director. Si vous disposez du rôle de propriétaire ou d'éditeur (roles/owner ou roles/editor) 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 indiqués dans le tableau suivant. 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
(roles/iam.serviceAccountAdmin)
Activer Traffic Director. Administrateur Service Usage
(roles/serviceusage.serviceUsageAdmin)
Créer des réseaux, des sous-réseaux et des composants de l'équilibreur de charge. Administrateur de réseaux Compute
(roles/compute.networkAdmin)
Ajouter et supprimer des règles de pare-feu. Administrateur de sécurité de Compute
(roles/compute.securityAdmin)
Créer des instances. Administrateur d'instances de Compute
(roles/compute.instanceAdmin)
Créer et modifier un cluster GKE en cas d'utilisation de pods. Administrateur de cluster
roles/container.clusterAdmin
Accéder aux comptes de service. Utilisateur du compte de service
roles/iam.serviceAccountUser

Les VM Compute Engine doivent avoir le champ d'application https://www.googleapis.com/auth/cloud-platform. Pour plus d'informations, consultez la section Résoudre des problèmes pour les déploiements qui utilisnt le protocole gRPC sans proxy.

Avec xDS v3, attribuez le rôle roles/trafficdirector.client au compte de service utilisé par les clients gRPC Traffic Director.

Activer l'API Traffic Director

Console

  1. Dans Google Cloud Console, accédez à la page Bibliothèque d'API de votre projet.

    Accéder à la bibliothèque d'API

  2. Dans le champ Rechercher des API et des services, saisissez Traffic Director.

  3. Dans la liste des résultats de recherche, cliquez sur API Traffic Director. 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.

  4. Sur la page API Traffic Director, cliquez sur Activer.

gcloud

Exécutez la commande ci-dessous.

gcloud services enable trafficdirector.googleapis.com

Permettre au compte de service d'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 présentent une identité de compte de service au serveur afin de garantir que les communications entre le plan de données et le plan de contrôle sont correctement autorisées.

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

Vous devez disposer des autorisations suivantes, en fonction de la version du protocole xDS utilisée par votre application gRPC. La version du protocole xDS est spécifiée dans le fichier d'amorçage. Nous vous recommandons vivement de configurer votre application avec xDS v3 ou de migrer vers xDS v3 si vous disposez d'un déploiement existant qui utilise xDS v2.

  • Lorsque vous utilisez xDS v3, le compte de service utilisé par vos applications gRPC doit disposer des autorisations trafficdirector.networks.reportMetrics et trafficdirector.networks.getConfigs. Vous pouvez utiliser le rôle client Traffic Director d'IAM (roles/trafficdirector.client), qui encapsule les deux autorisations.

  • Lorsque vous utilisez xDS v2, le compte de service utilisé par vos applications gRPC doit disposer de l'autorisation IAM compute.globalForwardingRules.get au niveau du projet. Vous pouvez également accorder cette autorisation en attribuant le rôle Lecteur de réseau Compute (roles/compute.networkViewer) au compte de service.

Console

  1. Dans la console Google Cloud, accédez à la page IAM et administration.

    Accéder à 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. Développez le rôle. Pour le compte de service que vous souhaitez modifier, cliquez sur Modifier.

  5. Sélectionnez le rôle Autre > Client Traffic Director.

  6. Pour appliquer le rôle au compte de service, cliquez sur Enregistrer.

gcloud

Exécutez la commande ci-dessous.

gcloud projects add-iam-policy-binding PROJECT \
    --member serviceAccount:SERVICE_ACCOUNT_EMAIL \
    --role=roles/trafficdirector.client

Remplacez les éléments suivants :

  • PROJECT : saisissez gcloud config get-value project
  • SERVICE_ACCOUNT_EMAIL : adresse e-mail associée au compte de service

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.

Le présent document 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 groupes de points de terminaison du réseau (NEG) GKE.

Versions et langages gRPC compatibles

gRPC est un projet Open Source. La compatibilité des versions est décrite dans les questions fréquentes sur gRPC. Nous vous recommandons d'utiliser la version la plus récente de gRPC pour vous assurer que les failles de sécurité connues sont corrigées. Cela garantit également que vos applications ont accès aux dernières fonctionnalités compatibles avec Traffic Director. Les fonctionnalités du maillage de services compatibles avec diverses mises en œuvre et versions de gRPC sont répertoriées sur GitHub. Pour obtenir la liste des langues et fonctionnalités gRPC compatibles avec Traffic Director et les services gRPC sans proxy, consultez la page Fonctionnalités de Traffic Director.

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

Mettez à jour la bibliothèque gRPC de votre application vers la version compatible avec les fonctionnalités dont vous avez besoin. Pour plus d'informations, 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 dans les sections suivantes. Les autres langages ne présentent aucune exigence supplémentaire.

Exigences pour Java

En Java, si vous utilisez Gradle, ajoutez la dépendance grpc-xds à votre fichier build.gradle. Remplacez LATEST_GRPC_VERSION par la dernière version de gRPC.

dependencies {
  runtimeOnly 'io.grpc:grpc-xds:LATEST_GRPC_VERSION'
}

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

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

Exigences pour Go

Si vous utilisez le langage Go, importez le package xds pour Go.

Paramétrer l'outil de résolution de noms gRPC pour qu'il utilise 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.

Incluez 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]")

Créer et configurer un 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é dans l'exemple suivant. 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. Pour plus de commodité, vous pouvez utiliser la dernière version du générateur d'amorçage gRPC de Traffic Director.

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"
        }
      ],
      "server_features": ["xds_v3"]
    }
  ],
  "node": {
    "id": "projects/123456789012/networks/default/nodes/b7f9c818-fb46-43ca-8662-d3bdbcf7ec18",
    "metadata": {
      "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 Veuillez en spécifier au moins un. 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.
server_features Liste des fonctionnalités compatibles avec le serveur, telles que la compatibilité xDS v3 La valeur par défaut est vide.
node Informations concernant le client qui se connecte au serveur xDS.
id

id doit être au format suivant, comme indiqué dans l'exemple précédent :


projects/PROJECT_NUMBER/networks/NETWORK_NAME/nodes/ID

Saisissez une chaîne unique en tant que valeur de ID. Elle vous permet d'identifier le client gRPC qui se connecte à Traffic Director.

metadata Informations spécifiques au serveur xDS.
TRAFFICDIRECTOR_NETWORK_NAME Si ce champ est vide ou n'est pas spécifié, la valeur est définie sur default.
locality Zone Google Cloud dans laquelle s'exécute le client gRPC.

Poursuivre la configuration

Une fois que vous avez rempli les conditions préalables décrites dans ce document, procédez comme suit: