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 :
- Configurez des projets en fonction des besoins de votre entreprise.
- Activez la facturation.
- Accordez les autorisations requises.
- Activez l'API Traffic Director et d'autres API pour votre projet.
- Assurez-vous que le compte de service dispose des autorisations suffisantes pour accéder à l'API Traffic Director.
- 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 serviceroles.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
Dans la console Google Cloud, accédez à la page IAM et administration.
Sélectionnez votre projet.
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.
Développez le rôle. Pour le compte de service que vous souhaitez modifier, cliquez sur
Modifier.Sélectionnez le rôle Autre > Client Traffic Director.
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
: saisissezgcloud 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
Dans Google Cloud Console, accédez à la page Bibliothèque d'API de votre projet.
Dans le champ Rechercher des API et des services, saisissez
Traffic Director
.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.
Sur la page API Traffic Director, cliquez sur Activer.
Dans le champ Rechercher des API et des services, saisissez
OS Config
.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.
Sur la page API OS Config, cliquez sur Activer.
Dans le champ Rechercher des API et des services, saisissez
Compute
.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.
Sur la page API Compute Engine, cliquez sur Activer.
Dans le champ Rechercher des API et des services, saisissez
Network Services
.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.
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:
- Mettez à jour vos clients gRPC vers la dernière version de gRPC, avec le dernier correctif.
- 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.
- 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 |
projects/PROJECT_NUMBER/networks/NETWORK_NAME/nodes/ID Saisissez une chaîne unique en tant que valeur de |
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:
- Configurer des services gRPC sans proxy avec une ressource
Mesh
- Configurer des proxys Envoy avec des services HTTP
- Configurer une passerelle d'entrée
- Configurer des services TCP avec une ressource
TCPRoute
- Configurer des références multiprojets avec des ressources
Mesh
etRoute
- Configurer le routage TLS d'une passerelle