Préparer la configuration de Cloud Service Mesh avec des services gRPC sans proxy
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 applications gRPC sans proxy. Ce document s'applique lorsque vous utilisez les API d'équilibrage de charge. Toutefois, nous vous recommandons vivement d'utiliser les API de routage de service. 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 Cloud Service Mesh avec des applications gRPC sans proxy:
- Présentation de Cloud Service Mesh
- Présentation de Cloud Service Mesh avec services gRPC sans proxy
- Présentation des nouvelles API de routage de service Cloud Service Mesh
Prérequis
Pour préparer votre environnement, effectuez les tâches suivantes :
- Activez la facturation.
- Accordez les autorisations requises.
- Activez l'API Traffic Director pour votre projet.
- 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 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 ) |
Créer et modifier un cluster GKE en cas d'utilisation de pods. | Administrateur de clusterroles/container.clusterAdmin |
Accéder aux comptes de service. | Utilisateur du compte de serviceroles/iam.serviceAccountUser |
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.
Avec xDS v3, attribuez le rôle roles/trafficdirector.client
au compte de service utilisé par les clients gRPC de Cloud Service Mesh.
Activer l'API Traffic Director
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.
gcloud
Exécutez la commande suivante :
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 à Cloud Service Mesh, 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 : La version du protocole xDS est spécifiée dans le fichier d'amorçage. Seule la version 3 de xDS est prise en charge.
Si vous utilisez xDS v2, vous devez migrer vers xDS v3. Pour en savoir plus sur la migration, consultez la section Migrer de xDS v2 à xDS v3.
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 Cloud Service Mesh d'IAM (roles/trafficdirector.client
), qui encapsule les deux autorisations.
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 Cloud Service Mesh.
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
Ensuite, suivez cette procédure globale pour configurer des applications gRPC sans proxy au sein d'un maillage :
- 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_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 mis en œuvre les conditions préalables décrites dans ce document, poursuivez avec l'un des documents suivants:
- Poursuivez avec Cloud Service Mesh : configurer GKE et les services gRPC sans proxy.
- Poursuivez avec la section Configurer Compute Engine et des services gRPC sans proxy dans le maillage de services Cloud.
- Poursuivez avec les guides de configuration de l'API Kubernetes Gateway GKE Cloud Service Mesh. Notez que la fonctionnalité de l'API Gateway est en version preview.