Préparer la configuration de l'API Gateway pour Cloud Service Mesh
Cette page explique comment installer les définitions de ressources personnalisées requises pour la passerelle dans votre cluster.
Limites
- Il n'est pas possible de combiner des clusters d'API de configuration
gatewayetistiodans le même parc. Assurez-vous que config-api est défini surgatewaypour tous les clusters de votre parc. Utilisez la commandegcloud container fleet mesh describe --project FLEET_PROJECT_IDpour voir ce que vous avez configuré pour votre parc. - Détection de services et l'équilibrage de charge multiclusters ne sont pas compatibles avec les clusters
gatewayconfig-api. - Si un cluster est intégré à l'aide de l'indicateur
--management automaticexistant, il commence à utiliser l'API de configurationistioet ne peut pas passer à l'APIgateway. - Seuls les FQDN sont acceptés. Les noms courts ne sont pas acceptés.
Points à prendre en compte pour la gestion du plan de données
Pour les nouveaux pods, Google gère la version du proxy injectée. Notez que le plan de données géré s'appuie sur le version disponible Google Kubernetes Engine (GKE) pour déterminer la version du proxy.
Pour les pods existants, la gestion du proxy est effectuée de manière passive, en fonction du cycle de vie naturel des pods du cluster. Pour déclencher la mise à jour et réinjecter de nouvelles versions du proxy, redémarrez vos charges de travail.
Prérequis
Pour commencer, ce guide suppose que vous avez déjà
créé un Google Cloud projet et
installé kubectl.
Avant de commencer
- Connectez-vous à votre compte Google Cloud . Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits sans frais pour exécuter, tester et déployer des charges de travail.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Kubernetes Engine, GKE Hub, and Cloud Service Mesh APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Kubernetes Engine, GKE Hub, and Cloud Service Mesh APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.
Créer et enregistrer un cluster GKE
gcloud
Créez un cluster GKE :
gcloud container clusters create CLUSTER_NAME \
--location=LOCATION \
--enable-ip-alias \
--scopes=https://www.googleapis.com/auth/cloud-platform \
--release-channel=regular \
--project=PROJECT_ID \
--gateway-api=standard \
--workload-pool=PROJECT_ID.svc.id.goog \
--workload-metadata=GKE_METADATA
où :
- CLUSTER_NAME est le nom de votre cluster.
- LOCATION est l'emplacement de votre cluster.
- PROJECT_ID est l'ID du projet de votre cluster.
Console
Accédez à la page Google Kubernetes Engine dans la console Google Cloud .
Cliquez sur add_box Créer.
Dans la section Standard, cliquez sur Configurer.
Dans la section Paramètres de base du cluster, procédez comme suit :
- Saisissez le nom de votre cluster.
- Pour le type d'emplacement, sélectionnez une région Compute Engine pour votre cluster.
Dans le volet de navigation, cliquez sur default-pool dans la section Pools de nœuds, puis sélectionnez Sécurité.
Dans la liste Niveaux d'accès, sélectionnez Définir l'accès pour chaque API, puis définissez Cloud Platform sur Activé.
Dans le volet de navigation, cliquez sur Mise en réseau.
Dans la section Équilibreur de charge, Ingress et passerelle, sélectionnez Activer l'API Gateway.
Dans le volet de navigation, cliquez sur Paramètres avancés.
Sur la ligne Workload Identity, vérifiez que Détails indique Activé. Si l'état Désactivé s'affiche, cliquez sur edit Modifier la configuration de la fonctionnalité, sélectionnez Activer Workload Identity, puis cliquez sur Enregistrer.
Cliquez sur Créer.
Une fois le cluster créé,
Enregistrez votre cluster dans un parc :
gcloud container fleet memberships register CLUSTER_NAME \ --gke-cluster LOCATION/CLUSTER_NAME \ --project=PROJECT_IDVérifiez que le cluster est enregistré dans le parc :
gcloud container fleet memberships list --project=PROJECT_IDLe résultat est semblable à :
NAME EXTERNAL_ID LOCATION my-cluster 91980bb9-593c-4b36-9170-96445c9edd39 us-west1
Configurer les autorisations
Notez que les commandes suivantes accordent des autorisations à tous les utilisateurs authentifiés, mais vous pouvez utiliser Workload Identity Federation for GKE afin d'accorder des autorisations uniquement à certains comptes. Pour en savoir plus sur le fonctionnement de Workload Identity Federation for GKE, consultez À propos de Workload Identity Federation for GKE. Pour configurer Workload Identity Federation for GKE, consultez S'authentifier auprès des API Google Cloud à partir de charges de travail GKE.
Attribuez le rôle trafficdirector.client :
gcloud projects add-iam-policy-binding PROJECT_ID \
--member "group:PROJECT_ID.svc.id.goog:/allAuthenticatedUsers/" \
--role "roles/trafficdirector.client"
Activer Cloud Service Mesh
Activez la fonctionnalité de maillage :
gcloud container fleet mesh enable --project PROJECT_IDMettez à jour le maillage pour utiliser l'API Gateway :
gcloud alpha container fleet mesh update \ --config-api gateway \ --memberships CLUSTER_NAME \ --project PROJECT_IDVérifiez la mise à jour en décrivant l'état de la ressource Cloud Service Mesh :
gcloud alpha container fleet mesh describe \ --project PROJECT_ID
Définir les nouvelles appartenances à votre parc pour qu'elles utilisent l'API Gateway par défaut (facultatif)
Vous pouvez également créer des paramètres par défaut au niveau du parc pour que les nouveaux clusters GKE enregistrés dans le parc lors de leur création soient automatiquement configurés avec l'API Gateway.
Créez un fichier YAML spécifiant l'utilisation de l'API Gateway :
echo "configapi: gateway" > mesh.yamlMettez à jour votre réseau maillé :
gcloud alpha container fleet mesh update --project FLEET_PROJECT_ID \ --fleet-default-member-config mesh.yamlCréez un cluster et enregistrez-le dans votre parc en une seule étape pour utiliser la configuration par défaut :
gcloud container clusters create CLUSTER_NAME \ --project PROJECT_ID \ --fleet-project FLEET_PROJECT_ID \ --location=LOCATION \Activez la fédération d'identité de charge de travail pour GKE et exécutez le serveur de métadonnées GKE sur votre nœud.
Installer des définitions de ressources personnalisées
Générez une entrée kubeconfig pour votre cluster :
gcloud container clusters get-credentials CLUSTER_NAME --location LOCATION --project PROJECT_ID
où :
- CLUSTER_NAME est le nom de votre cluster.
- LOCATION est l'emplacement de votre cluster.
- PROJECT_ID est l'ID de projet de votre cluster.
Installez la définition de ressource personnalisée (CRD) GRPCRoute :
curl https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.1.0/config/crd/standard/gateway.networking.k8s.io_grpcroutes.yaml \
| kubectl apply -f -
Le résultat est semblable à :
customresourcedefinition.apiextensions.k8s.io/grpcroutes.gateway.networking.k8s.io created
Étapes suivantes
- Configurer un maillage de services side-car Envoy sur GKE
- Configurer un maillage de services gRPC sans proxy sur GKE