Como configurar serviços de vários clusters com a VPC compartilhada

Nesta página, mostramos como definir uma configuração entre projetos de Serviços de vários clusters (MCS, na sigla em inglês) para clusters do GKE que pertencem ao projeto de serviço de uma rede VPC e atualmente não estão registrados em uma frota.

Pré-requisitos

Antes de definir uma configuração entre projetos do MCS, conclua as etapas a seguir:

  • Verifique se você tem vários clusters do GKE nativos de VPC já implantados nos projetos de serviço de um projeto host de rede VPC. Saiba mais em Como configurar clusters com a VPC compartilhada.
  • Conclua os Pré-requisitos para registrar um cluster no projeto do hub.
  • Ative o MCS no projeto em que você pretende registrar os clusters do GKE em uma frota (projeto hub).
  • Verifique se cada cluster tem um namespace para compartilhar os serviços. Não é possível exportar serviços nos namespaces default e kube-system entre clusters.

Configuração da VPC compartilhada com dois projetos e dois clusters

Nesta seção, você verá um exemplo de configuração de VPC compartilhada com dois projetos e dois clusters, em que:

  • O projeto hub é o projeto host da VPC compartilhada.
  • O projeto membro registrado é um projeto de serviço da VPC compartilhada.

Como configurar projetos

  1. No projeto do membro registrado, crie uma conta de serviço da frota do GKE concluindo as etapas em Como registrar um cluster do GKE em um projeto diferente.

  2. No projeto de membro registrado, ative as APIs Cloud DNS, Traffic Director, Resource Manager e MCS:

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

    Substitua GKE_PROJECT_ID pelo ID do projeto membro registrado.

Como registrar seus clusters

Para registrar seus clusters, conclua as seguintes passos:

  1. Crie a vinculação do IAM permitindo que a conta de serviço do GKE do projeto hub acesse o projeto membro registrado:

    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
    

    Substitua:

    • GKE_PROJECT_ID: o ID do projeto do membro registrado.
    • HUB_PROJECT_NUMBER: o número do projeto do hub.
  2. Crie a vinculação do IAM permitindo que a conta de serviço MCS do projeto hub acesse o projeto de membro registrado:

    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
    

    Substitua:

    • GKE_PROJECT_ID: o ID do projeto do membro registrado.
    • HUB_PROJECT_NUMBER: o número do projeto do hub.
  3. Registre o cluster do GKE do projeto de membro registrado no projeto 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
    

    Substitua:

    • MEMBERSHIP_NAME: esse valor representa a relação entre o cluster de membro registrado e o projeto hub registrado. Ele precisa ser único. Use o nome do cluster do GKE no projeto membro registrado.
    • GKE_PROJECT_ID: o ID do projeto do membro registrado.
    • ZONE: a zona do cluster dentro do projeto membro registrado.
    • CLUSTER_NAME: o nome do cluster do GKE do projeto de membro registrado.
    • HUB_PROJECT_ID, o ID do projeto hub.
  4. Conceda as permissões do IAM necessárias ao importador do MCS nos seguintes projetos:

    Projeto 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"
    

    Projeto de membro registrado:

    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"
    

    Substitua:

    • HUB_PROJECT_ID, o ID do projeto hub.
    • GKE_PROJECT_ID: o ID do projeto do membro registrado.

Configuração da VPC compartilhada com três projetos e dois clusters

Nesta seção, você verá etapas para um exemplo de configuração de VPC compartilhada com três projetos e dois clusters, em que:

  • O projeto hub é um projeto de serviço da VPC compartilhada.
  • O projeto de membro registrado é um projeto de serviço da VPC compartilhada diferente do projeto hub.

Como configurar projetos

Para configurar projetos, siga estas etapas:

  1. No projeto host da VPC compartilhada, ative a API Cloud DNS:

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

    Substitua HOST_PROJECT_ID pelo ID do projeto host da rede VPC.

  2. No projeto do membro registrado, crie uma conta de serviço da frota do GKE concluindo as etapas em Como registrar um cluster do GKE em um projeto diferente.

  3. No projeto de membro registrado, ative as APIs Cloud DNS, Traffic Director, Resource Manager e MCS:

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

    Substitua GKE_PROJECT_ID pelo ID do projeto membro registrado.

Como registrar seus clusters

Para registrar seus clusters, conclua as seguintes passos:

  1. Crie a vinculação do IAM permitindo que a conta de serviço do GKE Hub do projeto hub acesse o projeto de membro registrado:

    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
    

    Substitua:

    • GKE_PROJECT_ID: o ID do projeto do membro registrado.
    • HUB_PROJECT_NUMBER: o número do projeto do hub.
  2. Crie a vinculação do IAM permitindo que a conta de serviço MCS do projeto hub acesse o projeto de membro registrado:

    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
    

    Substitua:

    • GKE_PROJECT_ID: o ID do projeto do membro registrado.
    • HUB_PROJECT_NUMBER: o número do projeto do hub.
  3. Crie a vinculação do IAM permitindo que o hub e a conta de serviço MCS do projeto de membro registrado acessem o projeto host da rede 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
    

    Substitua:

    • HOST_PROJECT_ID, o ID do projeto host da rede VPC.
    • HUB_PROJECT_NUMBER: o número do projeto do hub.
  4. Registre o cluster do GKE do projeto de membro registrado no projeto 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
    

    Substitua:

    • MEMBERSHIP_NAME: representa a relação entre o cluster do GKE do projeto de membro registrado e o projeto hub. Ele precisa ser único. Use o nome do cluster do GKE no projeto de membro registrado.
    • GKE_PROJECT_ID: o ID do projeto do membro registrado.
    • ZONE: a zona do cluster do GKE do projeto de membro registrado a ser registrado.
    • CLUSTER_NAME: o nome do cluster do GKE do projeto de membro registrado.
    • HUB_PROJECT_ID, o ID do projeto hub.
  5. Conceda as permissões do IAM necessárias ao importador do MCS nos seguintes projetos:

    Projeto 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"
    

    Projeto de membro registrado:

    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"
    

    Substitua:

    • HUB_PROJECT_ID, o ID do projeto hub.
    • GKE_PROJECT_ID: o ID do projeto do membro registrado.

A seguir