Préparer la configuration des API de routage de services avec Envoy et des charges de travail sans proxy

Ce document fournit des informations sur les tâches préalables à la configuration du service de maillage de services Cloud à l'aide des API de routage de services avec des proxys Envoy ou avec gRPC sans proxy comme plan de données.

La configuration de Cloud Service Mesh comprend plusieurs phases. Ce document décrit la première phase: les instructions pour préparer la configuration de Cloud Service Mesh avec des instances de VM ou des applications gRPC sans proxy. Les phases supplémentaires 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 Cloud Service Mesh avec les API de routage de services et les API Gateway:

Prérequis

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

  1. Configurez des projets en fonction des besoins de votre entreprise.
  2. Activez la facturation.
  3. Accordez les autorisations requises.
  4. Activez l'API Traffic Director et d'autres API pour votre projet.
  5. Assurez-vous que le compte de service dispose des autorisations suffisantes pour accéder à l'API Traffic Director.
  6. Activez l'API Cloud DNS et configurez Cloud DNS.

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

Configurer des projets

Pour configurer et gérer vos projets, consultez la section Créer et gérer des projets et la documentation associée.

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 Cloud Service Mesh. Si vous disposez du rôle de propriétaire ou d'éditeur (roles/owner ou roles/editor) pour le projet dans lequel vous activez Cloud Service Mesh, 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)
Activez Cloud Service Mesh. 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)
Accéder aux comptes de service. Utilisateur du compte de service
(roles/iam.serviceAccountUser)
Autorisez le compte de service à effectuer les tâches requises. Utilisateur du compte de service
roles.trafficdirector.client)

Les VM Compute Engine doivent posséder 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.

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 à Cloud Service Mesh, vos clients xDS, qu'ils soient des proxys Envoy ou des clients gRPC sans proxy, 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.

À moins de modifier la configuration, Google Cloud utilise le compte de service Compute Engine par défaut.

Pour accorder au compte de service l'accès à l'API Traffic Director, suivez les instructions ci-dessous.

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 suivante :

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

Remplacez l'élément suivant :

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

Activer les API requises

Activez les API requises suivantes.

  • osconfig.googleapis.com
  • trafficdirector.googleapis.com
  • compute.googleapis.com
  • networkservices.googleapis.com

Pour activer les API requises, suivez les instructions ci-dessous.

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.

  5. Dans le champ Rechercher des API et des services, saisissez OS Config.

  6. Dans la liste des résultats, cliquez sur OS Config. Si l'API OS Config ne figure pas dans la liste, cela signifie que vous ne disposez pas des autorisations nécessaires pour l'activer.

  7. Sur la page API OS Config, cliquez sur Activer.

  8. Dans le champ Rechercher des API et des services, saisissez Compute.

  9. Dans la liste des résultats de recherche, cliquez sur API Compute Engine. Si l'API Compute Engine ne figure pas dans la liste, cela signifie que vous ne disposez pas des autorisations nécessaires pour l'activer.

  10. Sur la page API Compute Engine, cliquez sur Activer.

  11. Dans le champ Rechercher des API et des services, saisissez Network Services.

  12. Dans la liste des résultats de recherche, cliquez sur API Network Services. Si l'API Network Services ne figure pas dans la liste, cela signifie que vous ne disposez pas des autorisations nécessaires pour l'activer.

  13. Sur la page API Network Services, cliquez sur Activer.

gcloud

Exécutez la commande suivante :

gcloud services enable osconfig.googleapis.com \
trafficdirector.googleapis.com \
compute.googleapis.com \
networkservices.googleapis.com

Version xDS

Les API de routage de services nécessitent que vous utilisiez xDS v3. Pour savoir comment passer de xDS v2 à xDS v3, consultez la section API de plan de contrôle xDS.

Exigences supplémentaires avec les proxys Envoy

Cette section décrit les exigences supplémentaires pour utiliser Cloud Service Mesh avec les API de routage de service et les proxys Envoy. Si vous effectuez un déploiement avec gRPC sans proxy, consultez la section Exigences supplémentaires avec gRPC sans proxy.

Comment installer Envoy

Lors du processus de déploiement de Cloud Service Mesh, vous créez un modèle de VM qui installe automatiquement Envoy sur les VM sur lesquelles vos applications s'exécutent.

À propos des versions d'Envoy

Vous devez utiliser Envoy version 1.20.0 ou ultérieure pour qu'il fonctionne avec Cloud Service Mesh. Nous vous recommandons de toujours utiliser la version la plus récente d'Envoy pour vous assurer que les failles de sécurité connues ont été corrigées.

Si vous décidez de déployer Envoy à l'aide de l'une de nos méthodes automatisées, nous nous chargeons de cette tâche comme suit :

Le déploiement Envoy automatique avec des VM Compute Engine installe la version Envoy que nous avons validée pour fonctionner avec Cloud Service Mesh. Lorsqu'une VM est créée à l'aide du modèle d'instance, elle reçoit la dernière version validée. Si votre VM est de longue durée, vous pouvez utiliser une mise à jour progressive pour remplacer les VM existantes et récupérer la dernière version.

Pour plus d'informations sur des versions Envoy spécifiques, consultez la section Historique des versions. Pour plus d'informations sur les failles de sécurité, consultez la page Conseils de sécurité.

Exigences supplémentaires avec gRPC sans proxy

Cette section décrit les exigences supplémentaires pour utiliser Cloud Service Mesh avec les API de routage de services et gRPC sans proxy. Si vous effectuez un déploiement avec des proxys Envoy, consultez la section Exigences supplémentaires avec les proxys Envoy.

Processus global avec gRPC sans proxy

Suivez cette procédure globale pour configurer des applications gRPC sans proxy au sein d'un maillage de services:

  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 Cloud Service Mesh.
  3. Configurez les ressources Cloud Service Mesh et 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 Cloud Service Mesh. 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 Cloud Service Mesh et les services gRPC sans proxy, consultez la page Fonctionnalités de Cloud Service Mesh.

Cloud Service Mesh 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 langues 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 de Cloud Service Mesh. 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 à Cloud Service Mesh 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 (Cloud Service Mesh) 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 Cloud Service Mesh.

Un fichier d'amorçage contenant les informations nécessaires pour se connecter à Cloud Service Mesh 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 à Cloud Service Mesh.

metadata Informations spécifiques au serveur xDS.
TRAFFICDIRECTOR_MESH_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 mis en œuvre les conditions préalables décrites dans ce document, consultez l'un des documents suivants si vous configurez Cloud Service Mesh avec les API de routage de services: