Configurer des services multiclusters avec un VPC partagé

Cette page explique comment mettre en place une configuration inter-projets de services multiclusters (MCS) pour les clusters GKE appartenant à un projet de service de réseau VPC et qui sont Actuellement non enregistré dans un parc.

Prérequis

Avant de configurer une configuration inter-projets MCS, procédez comme suit:

  • Vérifiez que vous disposez déjà de plusieurs clusters GKE de VPC natif déployés dans les projets de service d'un projet hôte de réseau VPC. Pour en savoir plus, consultez la page Configurer des clusters avec un VPC partagé.
  • Remplissez les conditions préalables à l'enregistrement d'un cluster dans votre projet de hub.
  • Activez MCS dans le projet où vous souhaitez enregistrer les clusters GKE dans un parc (projet de hub).
  • Assurez-vous que chaque cluster dispose d'un espace de noms dans lequel partager les services. Vous ne pouvez pas exporter les services inclus dans les espaces de noms default et kube-system sur les clusters.

Configuration d'un VPC partagé avec deux projets et deux clusters

Cette section comprend un exemple de configuration de VPC partagé comportant deux projets et deux clusters, où :

  • Le projet de hub est le projet hôte de VPC partagé.
  • Le projet membre enregistré est un projet de service VPC partagé.

Configurer vos projets

  1. Dans le projet membre enregistré, créez un compte de service de parc GKE en suivant les étapes décrites dans la section Enregistrer un cluster GKE dans un autre projet.

  2. Dans le projet membre enregistré, activez les API Cloud DNS, Traffic Director, Resource Manager et MCS :

    gcloud services enable dns.googleapis.com \
      trafficdirector.googleapis.com \
      cloudresourcemanager.googleapis.com \
      multiclusterservicediscovery.googleapis.com \
      --project GKE_PROJECT_ID
    

    Remplacez GKE_PROJECT_ID par l'ID du projet membre enregistré.

Enregistrer vos clusters

Pour enregistrer vos clusters, procédez comme suit :

  1. Créez une liaison IAM permettant au compte de service GKE du projet de hub d'accéder au projet membre enregistré :

    gcloud projects add-iam-policy-binding "GKE_PROJECT_ID" \
        --member "serviceAccount:service-HUB_PROJECT_NUMBER@gcp-sa-gkehub.iam.gserviceaccount.com" \
        --role roles/gkehub.serviceAgent
    

    Remplacez les éléments suivants :

    • GKE_PROJECT_ID : ID du projet membre enregistré.
    • HUB_PROJECT_NUMBER : numéro du projet de hub.
  2. Créez une liaison IAM permettant au compte de service MCS du projet de hub d'accéder au projet membre enregistré :

    gcloud projects add-iam-policy-binding "GKE_PROJECT_ID" \
        --member "serviceAccount:service-HUB_PROJECT_NUMBER@gcp-sa-mcsd.iam.gserviceaccount.com" \
        --role roles/multiclusterservicediscovery.serviceAgent
    

    Remplacez les éléments suivants :

    • GKE_PROJECT_ID : ID du projet membre enregistré.
    • HUB_PROJECT_NUMBER : numéro du projet de hub.
  3. Enregistrez le cluster GKE du projet membre enregistré dans le projet de hub :

    gcloud container hub memberships register MEMBERSHIP_NAME \
        --gke-uri https://container.googleapis.com/v1/projects/GKE_PROJECT_ID/zones/ZONE/clusters/CLUSTER_NAME \
        --enable-workload-identity \
        --project HUB_PROJECT_ID
    

    Remplacez les éléments suivants :

    • MEMBERSHIP_NAME : cette valeur représente la relation entre le cluster membre enregistré et le projet de hub enregistré. Ce nom doit être unique. Vous pouvez utiliser le nom de votre cluster GKE dans le projet membre enregistré.
    • GKE_PROJECT_ID : ID du projet membre enregistré.
    • ZONE : zone du cluster dans le projet membre enregistré.
    • CLUSTER_NAME: nom du cluster GKE du projet membre enregistré.
    • HUB_PROJECT_ID : ID du projet de hub.
  4. Accordez les autorisations IAM requises à l'outil d'importation MCS dans les projets suivants :

    Projet de hub :

    gcloud projects add-iam-policy-binding HUB_PROJECT_ID \
        --member "serviceAccount:HUB_PROJECT_ID.svc.id.goog[gke-mcs/gke-mcs-importer]" \
        --role "roles/compute.networkViewer"
    

    Projet membre enregistré :

    gcloud projects add-iam-policy-binding GKE_PROJECT_ID \
        --member "serviceAccount:GKE_PROJECT_ID.svc.id.goog[gke-mcs/gke-mcs-importer]" \
        --role "roles/compute.networkViewer"
    

    Remplacez les éléments suivants :

    • HUB_PROJECT_ID : ID du projet de hub.
    • GKE_PROJECT_ID : ID du projet membre enregistré.

Configuration d'un VPC partagé avec trois projets et deux clusters

Cette section comprend un exemple de configuration de VPC partagé comportant trois projets et deux clusters, où :

  • Le projet de hub est un projet de service VPC partagé.
  • Le projet membre enregistré est un projet de service VPC partagé différent de celui du projet de hub.

Configurer vos projets

Pour configurer vos projets, procédez comme suit :

  1. Dans votre projet hôte de VPC partagé, activez l'API Cloud DNS:

    gcloud services enable dns.googleapis.com \
        --project HOST_PROJECT_ID
    

    Remplacez HOST_PROJECT_ID par l'ID du projet hôte de réseau VPC.

  2. Dans le projet membre enregistré, créez un compte de service de parc GKE en suivant les étapes décrites dans la section Enregistrer un cluster GKE dans un autre projet.

  3. Dans le projet membre enregistré, activez les API Cloud DNS, Traffic Director, Resource Manager et MCS :

    gcloud services enable dns.googleapis.com \
      trafficdirector.googleapis.com \
      cloudresourcemanager.googleapis.com \
      multiclusterservicediscovery.googleapis.com \
      --project GKE_PROJECT_ID
    

    Remplacez GKE_PROJECT_ID par l'ID du projet membre enregistré.

Enregistrer vos clusters

Pour enregistrer vos clusters, procédez comme suit :

  1. Créez une liaison IAM permettant au compte de service de hub GKE du projet de hub d'accéder au projet membre enregistré :

    gcloud projects add-iam-policy-binding "GKE_PROJECT_ID" \
        --member "serviceAccount:service-HUB_PROJECT_NUMBER@gcp-sa-gkehub.iam.gserviceaccount.com" \
        --role roles/gkehub.serviceAgent
    

    Remplacez les éléments suivants :

    • GKE_PROJECT_ID : ID du projet membre enregistré.
    • HUB_PROJECT_NUMBER : numéro du projet de hub.
  2. Créez une liaison IAM permettant au compte de service MCS du projet de hub d'accéder au projet membre enregistré :

    gcloud projects add-iam-policy-binding "GKE_PROJECT_ID" \
        --member "serviceAccount:service-HUB_PROJECT_NUMBER@gcp-sa-mcsd.iam.gserviceaccount.com" \
        --role roles/multiclusterservicediscovery.serviceAgent
    

    Remplacez les éléments suivants :

    • GKE_PROJECT_ID : ID du projet membre enregistré.
    • HUB_PROJECT_NUMBER : numéro du projet de hub.
  3. Créez une liaison IAM autorisant le compte de service MCS du projet de hub et du projet membre enregistré à accéder au projet hôte du réseau VPC:

    gcloud projects add-iam-policy-binding "HOST_PROJECT_ID" \
        --member "serviceAccount:service-HUB_PROJECT_NUMBER@gcp-sa-mcsd.iam.gserviceaccount.com" \
        --role roles/multiclusterservicediscovery.serviceAgent
    

    Remplacez les éléments suivants :

    • HOST_PROJECT_ID: ID du projet hôte de réseau VPC.
    • HUB_PROJECT_NUMBER : numéro du projet de hub.
  4. Enregistrez le cluster GKE du projet membre enregistré dans le projet de hub :

    gcloud container hub memberships register MEMBERSHIP_NAME \
        --gke-uri https://container.googleapis.com/v1/projects/GKE_PROJECT_ID/zones/ZONE/clusters/CLUSTER_NAME \
        --enable-workload-identity \
        --project HUB_PROJECT_ID
    

    Remplacez les éléments suivants :

    • MEMBERSHIP_NAME: relation entre le cluster GKE du projet membre enregistré et le projet de hub. Ce nom doit être unique. Vous pouvez utiliser le nom de votre cluster GKE dans le projet membre enregistré.
    • GKE_PROJECT_ID : ID du projet membre enregistré.
    • ZONE: zone du cluster GKE du projet membre enregistré à enregistrer.
    • CLUSTER_NAME: nom du cluster GKE du projet membre enregistré.
    • HUB_PROJECT_ID : ID du projet de hub.
  5. Accordez les autorisations IAM requises à l'outil d'importation MCS dans les projets suivants :

    Projet de hub :

    gcloud projects add-iam-policy-binding HUB_PROJECT_ID \
        --member "serviceAccount:HUB_PROJECT_ID.svc.id.goog[gke-mcs/gke-mcs-importer]" \
        --role "roles/compute.networkViewer"
    

    Projet membre enregistré :

    gcloud projects add-iam-policy-binding GKE_PROJECT_ID \
        --member "serviceAccount:GKE_PROJECT_ID.svc.id.goog[gke-mcs/gke-mcs-importer]" \
        --role "roles/compute.networkViewer"
    

    Remplacez les éléments suivants :

    • HUB_PROJECT_ID : ID du projet de hub.
    • GKE_PROJECT_ID : ID du projet membre enregistré.

Étape suivante