Cette page décrit des scénarios de services multiclusters (MCS) courants. Les scénarios présentés sur cette page partagent les caractéristiques suivantes :
- Deux clusters GKE : le premier cluster GKE est enregistré dans le parc de son projet. Il s'agit du projet hôte du parc. Le deuxième cluster GKE est enregistré dans le même parc. Toutefois, selon le scénario, il se peut qu'il ne se trouve pas dans le même projet. Les deux clusters GKE sont des clusters de VPC natif.
- Même réseau VPC : les deux clusters GKE utilisent des sous-réseaux faisant partie du même réseau VPC partagé.
- La fédération d'identité de charge de travail pour GKE est activée dans les deux clusters.
Terminologie
Les termes projet hôte de VPC partagé et projet hôte de parc GKE ont des significations différentes.
- Le projet hôte de VPC partagé est le projet qui contient le réseau VPC partagé.
- Le projet hôte du parc GKE est le projet contenant le parc dans lequel vous enregistrez les clusters.
Exemple
Le tableau suivant décrit des scénarios MCS courants :
Scénario | Projet hôte de parc (projet contenant le premier cluster) | L'emplacement du deuxième cluster |
---|---|---|
Clusters dans le même projet de service VPC partagé | Un projet de service de VPC partagé | Le même projet de service VPC partagé que le premier cluster |
Projet hôte de VPC partagé faisant office de projet hôte de parc (un cluster dans le projet hôte de VPC partagé, un deuxième cluster dans un projet de service de VPC partagé) | Le projet hôte de VPC partagé | Un projet de service de VPC partagé |
Clusters dans différents projets de service de VPC partagé | Un projet de service de VPC partagé | Un autre projet de service de VPC partagé |
Prérequis
Avant de configurer une configuration inter-projets MCS, procédez comme suit:
- Assurez-vous de bien maîtriser les concepts liés aux VPC partagés.
- Assurez-vous de bien maîtriser la configuration de clusters avec un VPC partagé.
- Assurez-vous de bien comprendre les limitations et les problèmes connus de la ressource MCS.
Clusters dans le même projet de service VPC partagé
Cette section fournit un exemple de configuration MCS impliquant deux clusters GKE existants, tous deux étant situés dans le même projet de service VPC partagé :
- Les deux clusters utilisent le même réseau VPC partagé dans le projet
SHARED_VPC_HOST_PROJ
. - Le premier cluster GKE de VPC natif
FIRST_CLUSTER_NAME
, dans lequel la fédération d'identité de charge de travail pour GKE est activée, est créé dans le projetFLEET_HOST_PROJ
. Le projet hôte de parc est un projet de service connecté àSHARED_VPC_HOST_PROJ
dans ce scénario. - Le deuxième cluster GKE de VPC natif
SECOND_CLUSTER_NAME
, dans lequel la fédération d'identité de charge de travail pour GKE est activée, est également créé dans le projetFLEET_HOST_PROJ
.
Activer les API requises
Activer les API requises. La sortie Google Cloud CLI indique si une API a déjà été activée.
Activez l'API Cloud DNS :
gcloud services enable dns.googleapis.com \ --project SHARED_VPC_HOST_PROJ
Dans ce scénario, le projet hôte de parc est un projet de service connecté au projet hôte de VPC partagé. L'API Cloud DNS doit être activée dans le projet hôte de VPC partagé, car il s'agit de l'emplacement où se trouve le réseau VPC partagé. GKE crée des zones privées gérées Cloud DNS dans le projet hôte et les autorise pour le réseau VPC partagé.
Activer l'API GKE Hub (parc) L'API GKE Hub ne doit être activée que dans le projet hôte de parc.
gcloud services enable gkehub.googleapis.com \ --project FLEET_HOST_PROJ
L'activation de cette API dans le projet hôte du parc crée ou garantit que le compte de service suivant existe :
service-FLEET_HOST_PROJ_NUMBER@gcp-sa-gkehub.iam.gserviceaccount.com
.Activez les API Traffic Director, Resource Manager et de détection de services multiclusters dans le projet hôte de parc :
gcloud services enable trafficdirector.googleapis.com \ cloudresourcemanager.googleapis.com \ multiclusterservicediscovery.googleapis.com \ --project FLEET_HOST_PROJ
Activer les services multiclusters dans le projet hôte de parc
Activez les services multiclusters dans le projet hôte du parc :
gcloud container fleet multi-cluster-services enable \ --project FLEET_HOST_PROJ
L'activation des services multiclusters dans le projet hôte de parc entraîne la création du compte de service suivant ou garantit que celui-ci existe :
service-FLEET_HOST_PROJ_NUMBER@gcp-sa-mcsd.iam.gserviceaccount.com
.
Créer des liaisons IAM
Créez une liaison IAM attribuant au compte de service MCS du projet hôte de parc le rôle d'agent de service MCS sur le projet hôte de VPC partagé :
gcloud projects add-iam-policy-binding SHARED_VPC_HOST_PROJ \ --member "serviceAccount:service-FLEET_HOST_PROJ_NUMBER@gcp-sa-mcsd.iam.gserviceaccount.com" \ --role roles/multiclusterservicediscovery.serviceAgent
Créez une liaison IAM attribuant au compte de service MCS du projet hôte de parc le rôle d'utilisateur de réseau pour son propre projet :
gcloud projects add-iam-policy-binding FLEET_HOST_PROJ \ --member "serviceAccount:FLEET_HOST_PROJ.svc.id.goog[gke-mcs/gke-mcs-importer]" \ --role roles/compute.networkViewer
Comme ce scénario utilise la fédération d'identité de charge de travail pour GKE, le compte de service GKE de l'importateur MCS du projet hôte de parc doit disposer du rôle d'utilisateur du réseau pour son propre projet.
Remplacez les éléments suivants :
SHARED_VPC_HOST_PROJ
: ID de projet du projet hôte de VPC partagéFLEET_HOST_PROJ_NUMBER
: numéro du projet hôte du parc, qui correspond au projet de service VPC partagé pour ce scénarioFLEET_HOST_PROJ
: ID de projet du projet du premier cluster.
Enregistrer les clusters dans le parc
Enregistrez le premier cluster dans le parc. L'option
--gke-cluster
peut être utilisée pour cette commande, car le premier cluster est situé dans le même projet que le parc sur lequel il est enregistré.gcloud container fleet memberships register MEMBERSHIP_NAME_1 \ --project FLEET_HOST_PROJ \ --enable-workload-identity \ --gke-cluster=LOCATION/FIRST_CLUSTER_NAME
Remplacez les éléments suivants :
MEMBERSHIP_NAME_1
: identifiant unique de ce cluster dans ce parc. Par exemple, vous pouvez utiliser le nom du premier cluster GKE.FLEET_HOST_PROJ
: ID de projet du projet hôte de parc, identique à celui du projet hôte de VPC partagé dans ce scénario.LOCATION
: pour les clusters zonaux, la zone Compute Engine contenant le cluster, et pour les clusters régionaux, la région Compute Engine contenant le cluster.FIRST_CLUSTER_NAME
: nom du premier cluster.
Enregistrez le deuxième cluster dans le projet hôte de parc. L'option
--gke-cluster
peut être utilisée pour cette commande, car le deuxième cluster se trouve également dans le projet hôte du parc.gcloud container fleet memberships register MEMBERSHIP_NAME_2 \ --project FLEET_HOST_PROJ \ --enable-workload-identity \ --gke-cluster=LOCATION/SECOND_CLUSTER_NAME
Remplacez les éléments suivants :
MEMBERSHIP_NAME_2
: identifiant unique de ce cluster dans ce parc. Par exemple, vous pouvez utiliser le nom du deuxième cluster GKE.FLEET_HOST_PROJ
: ID de projet du projet hôte de parc, identique à celui du projet hôte de VPC partagé dans ce scénario.LOCATION
: pour les clusters zonaux, la zone Compute Engine contenant le cluster, et pour les clusters régionaux, la région Compute Engine contenant le cluster.SECOND_CLUSTER_NAME
: nom du deuxième cluster.
Créer un espace de noms commun pour les clusters
Assurez-vous que chaque cluster dispose d'un espace de noms dans lequel partager les services. Si nécessaire, créez un espace de noms en utilisant la commande suivante dans chaque cluster :
kubectl create ns NAMESPACE
Remplacez
NAMESPACE
par le nom de l'espace de noms.
Projet hôte de VPC partagé faisant office de projet hôte de parc
Cette section fournit un exemple de configuration MCS impliquant deux clusters GKE existants :
- Le premier cluster GKE de VPC natif
FIRST_CLUSTER_NAME
, dans lequel la fédération d'identité de charge de travail pour GKE est activée, a été créé dans le projetFLEET_HOST_PROJ
. Le projet hôte de parc est également le projet hôte de VPC partagé dans ce scénario. - Le deuxième cluster GKE de VPC natif
SECOND_CLUSTER_NAME
, dans lequel la fédération d'identité de charge de travail pour GKE est activée, a été créé dans le projetSECOND_CLUSTER_PROJ
.
Activer les API requises
Activer les API requises. La sortie Google Cloud CLI indique si une API a déjà été activée.
Activez l'API Cloud DNS :
gcloud services enable dns.googleapis.com \ --project FLEET_HOST_PROJ
Dans ce scénario, le projet hôte de parc est également le projet hôte de VPC partagé. L'API Cloud DNS doit être activée dans le projet hôte de VPC partagé, car il s'agit de l'emplacement où se trouve le réseau VPC partagé. GKE crée des zones privées gérées par Cloud DNS dans le projet hôte et les autorise pour le réseau VPC partagé.
Activer l'API GKE Hub (parc) L'API GKE Hub ne doit être activée que dans le projet hôte de parc.
gcloud services enable gkehub.googleapis.com \ --project FLEET_HOST_PROJ
L'activation de l'API GKE Hub dans le projet hôte de parc entraîne la création du compte de service suivant ou garantit que celui-ci existe :
service-FLEET_HOST_PROJ_NUMBER@gcp-sa-gkehub.iam.gserviceaccount.com
.Activez les API Traffic Director, Resource Manager et de détection de services multiclusters dans le projet hôte de parc, ainsi que dans le projet du deuxième cluster :
gcloud services enable trafficdirector.googleapis.com \ cloudresourcemanager.googleapis.com \ multiclusterservicediscovery.googleapis.com \ --project FLEET_HOST_PROJ
gcloud services enable trafficdirector.googleapis.com \ cloudresourcemanager.googleapis.com \ multiclusterservicediscovery.googleapis.com \ --project SECOND_CLUSTER_PROJ
Activer les services multiclusters dans le projet hôte de parc
Activez les services multiclusters dans le projet hôte du parc :
gcloud container fleet multi-cluster-services enable \ --project FLEET_HOST_PROJ
L'activation des services multiclusters dans le projet hôte de parc entraîne la création du compte de service suivant ou garantit que celui-ci existe :
service-FLEET_HOST_PROJ_NUMBER@gcp-sa-mcsd.iam.gserviceaccount.com
.
Créer des liaisons IAM
Créez une liaison IAM attribuant au compte de service du parc GKE du projet hôte de parc le rôle d'agent de service GKE sur le projet du deuxième cluster :
gcloud projects add-iam-policy-binding SECOND_CLUSTER_PROJ \ --member "serviceAccount:service-FLEET_HOST_PROJ_NUMBER@gcp-sa-gkehub.iam.gserviceaccount.com" \ --role roles/gkehub.serviceAgent
Créez une liaison IAM attribuant au compte de service MCS du projet hôte de parc le rôle d'agent de service MCS sur le projet du deuxième cluster :
gcloud projects add-iam-policy-binding SECOND_CLUSTER_PROJ \ --member "serviceAccount:service-FLEET_HOST_PROJ_NUMBER@gcp-sa-mcsd.iam.gserviceaccount.com" \ --role roles/multiclusterservicediscovery.serviceAgent
Créez une liaison IAM attribuant au compte de service MCS de chaque projet le rôle d'utilisateur du réseau pour son propre projet :
gcloud projects add-iam-policy-binding FLEET_HOST_PROJ \ --member "serviceAccount:FLEET_HOST_PROJ.svc.id.goog[gke-mcs/gke-mcs-importer]" \ --role roles/compute.networkViewer
gcloud projects add-iam-policy-binding SECOND_CLUSTER_PROJ \ --member "serviceAccount:SECOND_CLUSTER_PROJ.svc.id.goog[gke-mcs/gke-mcs-importer]" \ --role roles/compute.networkViewer
Comme ce scénario utilise la fédération d'identité de charge de travail pour GKE, le compte de service GKE de l'importateur MCS de chaque projet doit disposer du rôle d'utilisateur du réseau pour son propre projet.
Remplacez les éléments suivants :
SECOND_CLUSTER_PROJ
: ID de projet du projet du deuxième cluster.FLEET_HOST_PROJ
: ID de projet du projet du premier cluster.FLEET_HOST_PROJ_NUMBER
: numéro du projet hôte de parc, lequel correspond au projet hôte de VPC partagé pour ce scénario.
Enregistrer les clusters dans le parc
Enregistrez le premier cluster dans le parc. L'option
--gke-cluster
peut être utilisée pour cette commande, car le premier cluster est situé dans le même projet que le parc sur lequel il est enregistré.gcloud container fleet memberships register MEMBERSHIP_NAME_1 \ --project FLEET_HOST_PROJ \ --enable-workload-identity \ --gke-cluster=LOCATION/FIRST_CLUSTER_NAME
Remplacez les éléments suivants :
MEMBERSHIP_NAME_1
: identifiant unique de ce cluster dans ce parc. Par exemple, vous pouvez utiliser le nom du premier cluster GKE.FLEET_HOST_PROJ
: ID de projet du projet hôte de parc, identique à celui du projet hôte de VPC partagé dans ce scénario.LOCATION
: pour les clusters zonaux, la zone Compute Engine contenant le cluster, et pour les clusters régionaux, la région Compute Engine contenant le cluster.FIRST_CLUSTER_NAME
: nom du premier cluster.
Enregistrez le deuxième cluster dans le parc. L'option
--gke-uri
doit être utilisée pour cette commande, car le deuxième cluster ne se trouve pas dans le même projet que le parc. Vous pouvez obtenir l'URI complet du cluster en exécutant la commandegcloud container clusters list --uri
.gcloud container fleet memberships register MEMBERSHIP_NAME_2 \ --project FLEET_HOST_PROJ \ --enable-workload-identity \ --gke-uri https://container.googleapis.com/v1/projects/SECOND_CLUSTER_PROJ/locations/LOCATION/clusters/SECOND_CLUSTER_NAME
Remplacez les éléments suivants :
MEMBERSHIP_NAME_2
: identifiant unique de ce cluster dans ce parc. Par exemple, vous pouvez utiliser le nom du deuxième cluster GKE.FLEET_HOST_PROJ
: ID de projet du projet hôte de parc, identique à celui du projet hôte de VPC partagé dans ce scénario.LOCATION
: remplacezLOCATION
par :- la zone Compute Engine du cluster s'il s'agit d'un cluster zonal ;
- la région Compute Engine du cluster s'il s'agit d'un cluster régional.
SECOND_CLUSTER_PROJECT
: projet contenant le deuxième cluster.SECOND_CLUSTER_NAME
: nom du deuxième cluster.
Créer un espace de noms commun pour les clusters
Assurez-vous que chaque cluster dispose d'un espace de noms dans lequel partager les services. Si nécessaire, créez un espace de noms en utilisant la commande suivante dans chaque cluster :
kubectl create ns NAMESPACE
Remplacez
NAMESPACE
par le nom de l'espace de noms.
Clusters dans différents projets de service de VPC partagé
Cette section fournit un exemple de configuration MCS impliquant deux clusters GKE existants, chacun étant situé dans un projet de service de VPC partagé distinct.
- Les deux clusters utilisent le même réseau VPC partagé dans le projet
SHARED_VPC_HOST_PROJ
. - Le premier cluster GKE de VPC natif
FIRST_CLUSTER_NAME
, dans lequel la fédération d'identité de charge de travail pour GKE est activée, a été créé dans le projetFLEET_HOST_PROJ
. Le projet hôte de parc est un projet de service connecté àSHARED_VPC_HOST_PROJ
dans ce scénario. - Le deuxième cluster GKE de VPC natif
SECOND_CLUSTER_NAME
, dans lequel la fédération d'identité de charge de travail pour GKE est activée, a été créé dans le projetSECOND_CLUSTER_PROJ
. Le projetSECOND_CLUSTER_PROJ
est également un projet de service connecté àSHARED_VPC_HOST_PROJ
dans ce scénario.
Activer les API requises
Activer les API requises. La sortie Google Cloud CLI indique si une API a déjà été activée.
Activez l'API Cloud DNS :
gcloud services enable dns.googleapis.com \ --project SHARED_VPC_HOST_PROJ
Dans ce scénario, le projet hôte de parc est un projet de service connecté au projet hôte de VPC partagé. L'API Cloud DNS doit être activée dans le projet hôte de VPC partagé, car il s'agit de l'emplacement où se trouve le réseau VPC partagé. GKE crée des zones privées gérées Cloud DNS dans le projet hôte et les autorise pour le réseau VPC partagé.
API GKE Hub (parc) L'API GKE Hub ne doit être activée que dans le projet hôte de parc
FLEET_HOST_PROJ
.gcloud services enable gkehub.googleapis.com \ --project FLEET_HOST_PROJ
L'activation de cette API dans le projet hôte du parc crée ou garantit que le compte de service suivant existe :
service-FLEET_HOST_PROJ_NUMBER@gcp-sa-gkehub.iam.gserviceaccount.com
.Activez les API Traffic Director, Resource Manager et de détection de services multiclusters dans le projet hôte de parc, ainsi que dans le projet du deuxième cluster :
gcloud services enable trafficdirector.googleapis.com \ cloudresourcemanager.googleapis.com \ multiclusterservicediscovery.googleapis.com \ --project=FLEET_HOST_PROJ
gcloud services enable trafficdirector.googleapis.com \ cloudresourcemanager.googleapis.com \ multiclusterservicediscovery.googleapis.com \ --project SECOND_CLUSTER_PROJ
Activer les services multiclusters dans le projet hôte de parc
Activez les services multiclusters dans le projet hôte du parc :
gcloud container fleet multi-cluster-services enable \ --project FLEET_HOST_PROJ
L'activation des services multiclusters dans le projet hôte de parc entraîne la création du compte de service suivant ou garantit que celui-ci existe :
service-FLEET_HOST_PROJ_NUMBER@gcp-sa-mcsd.iam.gserviceaccount.com
.
Créer des liaisons IAM
Créez une liaison IAM attribuant au compte de service GKE Hub du projet hôte de parc le rôle d'agent de service GKE sur le projet du deuxième cluster :
gcloud projects add-iam-policy-binding SECOND_CLUSTER_PROJ \ --member "serviceAccount:service-FLEET_HOST_PROJ_NUMBER@gcp-sa-gkehub.iam.gserviceaccount.com" \ --role roles/gkehub.serviceAgent
Créez une liaison IAM attribuant au compte de service MCS du projet hôte de parc le rôle d'agent de service MCS sur le projet du deuxième cluster :
gcloud projects add-iam-policy-binding SECOND_CLUSTER_PROJ \ --member "serviceAccount:service-FLEET_HOST_PROJ_NUMBER@gcp-sa-mcsd.iam.gserviceaccount.com" \ --role roles/multiclusterservicediscovery.serviceAgent
Créez une liaison IAM attribuant au compte de service MCS du projet hôte de parc le rôle d'agent de service MCS sur le projet hôte de VPC partagé :
gcloud projects add-iam-policy-binding SHARED_VPC_HOST_PROJ \ --member "serviceAccount:service-FLEET_HOST_PROJ_NUMBER@gcp-sa-mcsd.iam.gserviceaccount.com" \ --role roles/multiclusterservicediscovery.serviceAgent
Créez une liaison IAM attribuant au compte de service MCS de chaque projet le rôle d'utilisateur du réseau pour son propre projet :
gcloud projects add-iam-policy-binding FLEET_HOST_PROJ \ --member "serviceAccount:FLEET_HOST_PROJ.svc.id.goog[gke-mcs/gke-mcs-importer]" \ --role roles/compute.networkViewer
gcloud projects add-iam-policy-binding SECOND_CLUSTER_PROJ \ --member "serviceAccount:SECOND_CLUSTER_PROJ.svc.id.goog[gke-mcs/gke-mcs-importer]" \ --role roles/compute.networkViewer
Comme ce scénario utilise la fédération d'identité de charge de travail pour GKE, le compte de service GKE de l'importateur MCS de chaque projet doit disposer du rôle d'utilisateur du réseau pour son propre projet.
Remplacez les éléments suivants si nécessaire dans les commandes précédentes :
SECOND_CLUSTER_PROJ
: ID de projet du projet du deuxième cluster.SHARED_VPC_HOST_PROJ
: ID de projet du projet hôte de VPC partagé. Dans cet exemple, les deux clusters utilisent le même réseau VPC partagé, mais aucun ne se trouve dans le projet hôte de VPC partagé.FLEET_HOST_PROJ
: ID de projet du projet du premier cluster.FLEET_HOST_PROJ_NUMBER
: numéro du projet hôte de parc.
Enregistrer les clusters dans le parc
Enregistrez le premier cluster dans le parc. L'option
--gke-cluster
peut être utilisée pour cette commande, car le premier cluster est situé dans le même projet que le parc sur lequel il est enregistré.gcloud container fleet memberships register MEMBERSHIP_NAME_1 \ --project FLEET_HOST_PROJ \ --enable-workload-identity \ --gke-cluster=LOCATION/FIRST_CLUSTER_NAME
Remplacez les éléments suivants :
MEMBERSHIP_NAME_1
: identifiant unique de ce cluster dans ce parc. Par exemple, vous pouvez utiliser le nom du premier cluster GKE.FLEET_HOST_PROJ
: ID de projet du projet hôte de parc, identique à celui du projet hôte de VPC partagé dans ce scénario.LOCATION
: pour les clusters zonaux, la zone Compute Engine contenant le cluster, et pour les clusters régionaux, la région Compute Engine contenant le cluster.FIRST_CLUSTER_NAME
: nom du premier cluster.
Enregistrez le deuxième cluster dans le parc. L'option
--gke-uri
doit être utilisée pour cette commande, car le deuxième cluster ne se trouve pas dans le même projet que le parc. Vous pouvez obtenir l'URI complet du cluster en exécutant la commandegcloud container clusters list --uri
.gcloud container fleet memberships register MEMBERSHIP_NAME_2 \ --project FLEET_HOST_PROJ \ --enable-workload-identity \ --gke-uri https://container.googleapis.com/v1/projects/SECOND_CLUSTER_PROJ/locations/LOCATION/clusters/SECOND_CLUSTER_NAME
Remplacez les éléments suivants :
MEMBERSHIP_NAME_2
: identifiant unique de ce cluster dans ce parc. Par exemple, vous pouvez utiliser le nom du deuxième cluster GKE.FLEET_HOST_PROJ
: ID de projet du projet hôte de parc, identique à celui du projet hôte de VPC partagé dans ce scénario.LOCATION
: remplacezLOCATION
par :- la zone Compute Engine du cluster s'il s'agit d'un cluster zonal ;
- la région Compute Engine du cluster s'il s'agit d'un cluster régional.
SECOND_CLUSTER_PROJECT
: projet contenant le deuxième cluster.SECOND_CLUSTER_NAME
: nom du deuxième cluster.
Créer un espace de noms commun pour les clusters
Assurez-vous que chaque cluster dispose d'un espace de noms dans lequel partager les services. Si nécessaire, créez un espace de noms en utilisant la commande suivante dans chaque cluster :
kubectl create ns NAMESPACE
Remplacez
NAMESPACE
par le nom de l'espace de noms.
Étape suivante
- Découvrez comment utiliser des services multiclusters.