Configurazione dei servizi multi-cluster con VPC condiviso


In questa pagina vengono descritti i Servizi multi-cluster (MCS) diversi scenari. Gli scenari presentati in questa pagina condividono le seguenti informazioni: caratteristiche:

  • Due cluster GKE: il primo cluster GKE registrato nel proprio progetto flotta. Questo è il progetto host del parco risorse. Il secondo cluster GKE un cluster è registrato nello stesso parco risorse, anche se, a seconda dello scenario, potrebbe non trovarsi nello stesso progetto. Sia GKE sono cluster nativi VPC.
  • Stessa rete VPC: entrambi i cluster GKE utilizzano di subnet nella stessa rete VPC condiviso.
  • La Federazione delle identità dei carichi di lavoro per GKE è abilitata in entrambi i cluster.

Terminologia

I termini progetto host VPC condiviso e parco risorse GKE progetto host hanno significati diversi.

  • Il progetto host del VPC condiviso è il progetto che contiene Rete VPC condiviso.
  • Il progetto host del parco risorse GKE è il progetto che contiene il parco risorse in cui registrare i cluster.

Scenari

La tabella seguente descrive gli scenari MCS comuni:

Scenario Progetto host del parco risorse (progetto contenente il primo cluster) La località del secondo cluster
Cluster nello stesso progetto di servizio del VPC condiviso Un progetto di servizio del VPC condiviso Lo stesso progetto di servizio del VPC condiviso del primo cluster
Progetto host VPC condiviso come progetto host del parco risorse (un cluster nel progetto host del VPC condiviso, un secondo cluster in un progetto di servizio del VPC condiviso) Progetto host del VPC condiviso Un progetto di servizio del VPC condiviso
Cluster in progetti di servizio VPC condiviso diversi Un progetto di servizio del VPC condiviso Un altro progetto di servizio del VPC condiviso

Prerequisiti

Prima di impostare una configurazione tra progetti di MCS, completa quanto segue passaggi:

Cluster nello stesso progetto di servizio del VPC condiviso

Questa sezione fornisce una configurazione MCS di esempio che coinvolge due Cluster GKE entrambi nello stesso progetto di servizio del VPC condiviso:

  • Entrambi i cluster utilizzano la stessa rete VPC condiviso SHARED_VPC_HOST_PROJ.
  • Il primo cluster GKE nativo di VPC FIRST_CLUSTER_NAME, con federazione delle identità per i carichi di lavoro per GKE attivata, viene creata in FLEET_HOST_PROJ. Il parco risorse è un progetto di servizio connesso SHARED_VPC_HOST_PROJ in questo scenario.
  • Il secondo cluster GKE nativo di VPC SECOND_CLUSTER_NAME, con federazione delle identità per i carichi di lavoro per GKE attivata, viene creata anche in FLEET_HOST_PROJ.

Abilita le API richieste

Abilita le API richieste. L'output di Google Cloud CLI mostra se L'API è già stata abilitata.

  1. Abilita l'API Cloud DNS:

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

    In questo scenario, il progetto host del parco risorse è un progetto di servizio connesso il progetto host del VPC condiviso. L'API Cloud DNS deve essere abilitata in il progetto host del VPC condiviso perché è qui che La rete VPC condiviso si trova. GKE crea Zone private gestite di Cloud DNS nel progetto host e le autorizza per la rete VPC condiviso.

  2. Abilita l'API GKE Hub (fleet). L'API GKE Hub deve essere abilitato solo nel progetto host del parco risorse.

    gcloud services enable gkehub.googleapis.com \
        --project FLEET_HOST_PROJ
    

    L'abilitazione di questa API nel progetto host del parco risorse crea o garantisce l'esistenza del seguente account di servizio: service-FLEET_HOST_PROJ_NUMBER@gcp-sa-gkehub.iam.gserviceaccount.com.

  3. Abilita Cloud Service Mesh, Resource Manager e servizio multi-cluster API di rilevamento nel progetto host del parco risorse:

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

Abilita i servizi multi-cluster nel progetto host del parco risorse

  1. Abilita i servizi multi-cluster nel progetto host del parco risorse:

    gcloud container fleet multi-cluster-services enable \
        --project FLEET_HOST_PROJ
    

    L'abilitazione di servizi multi-cluster nel progetto host del parco risorse crea o garantisce che esiste il seguente account di servizio: service-FLEET_HOST_PROJ_NUMBER@gcp-sa-mcsd.iam.gserviceaccount.com.

Crea associazioni IAM

  1. Crea associazione IAM che concede al progetto host del parco risorse MCS l'account di servizio del ruolo Agente di servizio MCS sull'host del VPC condiviso progetto:

    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
    
  2. Crea associazione IAM che concede al progetto host del parco risorse MCS account di servizio con il ruolo Utente di rete per il proprio progetto:

    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
    

    Poiché questo scenario utilizza la federazione delle identità per i carichi di lavoro per GKE, il progetto host del parco risorse L'account di servizio GKE di MCS Importer richiede il ruolo Utente di rete per il proprio progetto.

    Sostituisci quanto segue:

    • SHARED_VPC_HOST_PROJ: l'ID progetto del Progetto host VPC condiviso
    • FLEET_HOST_PROJ_NUMBER: il numero del progetto progetto host del parco risorse, che è il progetto di servizio del VPC condiviso questo scenario
    • FLEET_HOST_PROJ: l'ID progetto del primo nel progetto del cluster.

Registra i cluster nel parco risorse

  1. Registra il primo cluster nel parco risorse. --gke-cluster puoi utilizzare questo flag perché il primo cluster si trova nella stesso progetto del parco risorse a cui viene registrato.

    gcloud container fleet memberships register MEMBERSHIP_NAME_1 \
        --project FLEET_HOST_PROJ \
        --enable-workload-identity \
        --gke-cluster=LOCATION/FIRST_CLUSTER_NAME
    

    Sostituisci quanto segue:

    • MEMBERSHIP_NAME_1: un identificatore univoco per questo cluster in questo parco risorse. Ad esempio, puoi utilizzare il nome del primo cluster GKE in un cluster Kubernetes.
    • FLEET_HOST_PROJ: l'ID progetto per l'host del parco risorse identico al progetto host del VPC condiviso in questo scenario.
    • LOCATION: per i cluster di zona, Compute Engine una zona contenente il cluster; per i cluster a livello di regione, Compute Engine regione contenente il cluster.
    • FIRST_CLUSTER_NAME: il nome del primo cluster.
  2. Registra il secondo cluster nel progetto host del parco risorse. --gke-cluster per questo comando, perché anche il secondo cluster si trova progetto host del parco risorse.

    gcloud container fleet memberships register MEMBERSHIP_NAME_2 \
        --project FLEET_HOST_PROJ \
        --enable-workload-identity \
        --gke-cluster=LOCATION/SECOND_CLUSTER_NAME
    

    Sostituisci quanto segue:

    • MEMBERSHIP_NAME_2: un identificatore univoco per questo cluster in questo parco risorse. Ad esempio, puoi utilizzare il nome del secondo cluster GKE in un cluster Kubernetes.
    • FLEET_HOST_PROJ: l'ID progetto per l'host del parco risorse identico al progetto host del VPC condiviso in questo scenario.
    • LOCATION: per i cluster di zona, Compute Engine una zona contenente il cluster; per i cluster a livello di regione, Compute Engine regione contenente il cluster.
    • SECOND_CLUSTER_NAME: il nome del secondo cluster.

Crea uno spazio dei nomi comune per i cluster

  1. Assicurati che ogni cluster abbia uno spazio dei nomi in cui condividere i servizi. Se necessario, crea uno spazio dei nomi utilizzando il comando seguente in ogni cluster:

    kubectl create ns NAMESPACE
    

    Sostituisci NAMESPACE con un nome per lo spazio dei nomi.

Progetto host VPC condiviso come progetto host del parco risorse

Questa sezione fornisce una configurazione MCS di esempio che coinvolge due Cluster GKE:

  • Il primo cluster GKE nativo di VPC FIRST_CLUSTER_NAME, con la federazione delle identità per i carichi di lavoro per GKE abilitata, è stata creata in FLEET_HOST_PROJ. Il parco risorse è anche il progetto host del VPC condiviso in questo scenario.
  • Il secondo cluster GKE nativo di VPC SECOND_CLUSTER_NAME, con federazione delle identità per i carichi di lavoro per GKE abilitato, è stato creato in SECOND_CLUSTER_PROJ.

Abilita le API richieste

Abilita le API richieste. L'output di Google Cloud CLI mostra se L'API è già stata abilitata.

  1. Abilita l'API Cloud DNS:

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

    In questo scenario, il progetto host del parco risorse è anche l'host del VPC condiviso progetto. L'API Cloud DNS deve essere abilitata nell'host del VPC condiviso perché è dove si trova la rete VPC condiviso. GKE crea zone private gestite di Cloud DNS progetto host e li autorizza per la rete VPC condiviso.

  2. Abilita l'API GKE Hub (fleet). L'API GKE Hub deve essere abilitato solo nel progetto host del parco risorse.

    gcloud services enable gkehub.googleapis.com \
        --project FLEET_HOST_PROJ
    

    L'abilitazione dell'API GKE Hub nel progetto host del parco risorse crea o garantisce l'esistenza del seguente account di servizio: service-FLEET_HOST_PROJ_NUMBER@gcp-sa-gkehub.iam.gserviceaccount.com.

  3. Abilita Cloud Service Mesh, Resource Manager e servizio multi-cluster le API di rilevamento, sia nel progetto host del parco risorse sia nel cluster progetto:

    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
    

Abilita i servizi multi-cluster nel progetto host del parco risorse

  1. Abilita i servizi multi-cluster nel progetto host del parco risorse:

    gcloud container fleet multi-cluster-services enable \
        --project FLEET_HOST_PROJ
    

    L'abilitazione di servizi multi-cluster nel progetto host del parco risorse crea o garantisce che esiste il seguente account di servizio: service-FLEET_HOST_PROJ_NUMBER@gcp-sa-mcsd.iam.gserviceaccount.com.

Crea associazioni IAM

  1. Crea associazione IAM per concedere al progetto host del parco risorse Account di servizio del parco risorse GKE, l'agente di servizio GKE sul progetto del secondo 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
    
  2. Crea associazione IAM che concede l'MCS del progetto host del parco risorse account di servizio il ruolo di agente di servizio MCS nel progetto del secondo 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
    
  3. Crea associazione IAM per concedere l'account di servizio MCS di ogni progetto il ruolo Utente di rete per il proprio progetto:

    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
    

    Poiché questo scenario utilizza la federazione delle identità per i carichi di lavoro per GKE, l'importer MCS di ogni progetto L'account di servizio GKE richiede il ruolo Utente di rete progetto.

    Sostituisci quanto segue:

    • SECOND_CLUSTER_PROJ: l'ID progetto del secondo progetto del cluster
    • FLEET_HOST_PROJ: l'ID progetto del primo nel progetto del cluster.
    • FLEET_HOST_PROJ_NUMBER: il numero del progetto progetto host del parco risorse, che è uguale all'host del VPC condiviso progetto per questo scenario

Registra i cluster nel parco risorse

  1. Registra il primo cluster nel parco risorse. Il flag --gke-cluster può essere utilizzato per questo comando perché il primo cluster si trova nella stessa progetto come il parco risorse a cui viene registrato.

    gcloud container fleet memberships register MEMBERSHIP_NAME_1 \
        --project FLEET_HOST_PROJ \
        --enable-workload-identity \
        --gke-cluster=LOCATION/FIRST_CLUSTER_NAME
    

    Sostituisci quanto segue:

    • MEMBERSHIP_NAME_1: un identificatore univoco per questo cluster in questo parco risorse. Ad esempio, puoi utilizzare il nome del primo cluster GKE in un cluster Kubernetes.
    • FLEET_HOST_PROJ: l'ID progetto per progetto host del parco risorse, identico al progetto host del VPC condiviso in questo in questo scenario.
    • LOCATION: per i cluster di zona, la zona Compute Engine contenente il cluster; per i cluster a livello di regione, la regione contenente il cluster.
    • FIRST_CLUSTER_NAME: il nome del primo in un cluster Kubernetes.
  2. Registra il secondo cluster nel parco risorse. Il flag --gke-uri deve essere utilizzato per questo comando perché il secondo cluster non si trova nella nello stesso progetto del parco risorse. Tu può ottenere l'URI completo del cluster eseguendo gcloud 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
    

    Sostituisci quanto segue:

    • MEMBERSHIP_NAME_2: un identificatore univoco per questo cluster in questo parco risorse. Ad esempio, puoi utilizzare il nome del secondo cluster GKE in un cluster Kubernetes.
    • FLEET_HOST_PROJ: l'ID progetto per progetto host del parco risorse, identico al progetto host del VPC condiviso questo scenario.
    • LOCATION: sostituisci LOCATION con:
        .
      • alla zona Compute Engine del cluster se si tratta di un cluster di zona
      • la regione Compute Engine del cluster se si tratta di un cluster a livello di regione
    • SECOND_CLUSTER_PROJECT: il progetto contenente nel secondo cluster.
    • SECOND_CLUSTER_NAME: il nome del secondo cluster.

Crea uno spazio dei nomi comune per i cluster

  1. Assicurati che ogni cluster abbia uno spazio dei nomi in cui condividere i servizi. Se necessario, crea uno spazio dei nomi utilizzando il comando seguente in ogni cluster:

    kubectl create ns NAMESPACE
    

    Sostituisci NAMESPACE con un nome per lo spazio dei nomi.

Cluster in progetti di servizio VPC condiviso diversi

Questa sezione fornisce una configurazione MCS di esempio che coinvolge due Cluster GKE, ognuno in un progetto di servizio VPC condiviso diverso.

  • Entrambi i cluster utilizzano la stessa rete VPC condiviso SHARED_VPC_HOST_PROJ.
  • Il primo cluster GKE nativo di VPC FIRST_CLUSTER_NAME, con la federazione delle identità per i carichi di lavoro per GKE abilitata, è stata creata in FLEET_HOST_PROJ. Host del parco risorse è un progetto di servizio connesso SHARED_VPC_HOST_PROJ in questo scenario.
  • Il secondo cluster GKE nativo di VPC SECOND_CLUSTER_NAME, con la federazione delle identità per i carichi di lavoro per GKE abilitata, è stata creata in SECOND_CLUSTER_PROJ. SECOND_CLUSTER_PROJ è anche un progetto di servizio collegato al dispositivo SHARED_VPC_HOST_PROJ in questo scenario.

Abilita le API richieste

Abilita le API richieste. L'output di Google Cloud CLI mostra se L'API è già stata abilitata.

  1. Abilita l'API Cloud DNS:

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

    In questo scenario, il progetto host del parco risorse è un progetto di servizio connesso il progetto host del VPC condiviso. L'API Cloud DNS deve essere abilitata in il progetto host del VPC condiviso perché è qui che La rete VPC condiviso si trova. GKE crea Zone private gestite di Cloud DNS nel progetto host e le autorizza per la rete VPC condiviso.

  2. l'API GKE Hub (fleet). L'API GKE Hub deve essere abilitata in solo il progetto host del parco risorse FLEET_HOST_PROJ.

    gcloud services enable gkehub.googleapis.com \
        --project FLEET_HOST_PROJ
    

    L'abilitazione di questa API nel progetto host del parco risorse crea o garantisce l'esistenza del seguente account di servizio: service-FLEET_HOST_PROJ_NUMBER@gcp-sa-gkehub.iam.gserviceaccount.com.

  3. Abilita Cloud Service Mesh, Resource Manager e servizio multi-cluster le API di rilevamento, sia nel progetto host del parco risorse sia nel cluster progetto:

    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
    

Abilita i servizi multi-cluster nel progetto host del parco risorse

  1. Abilita i servizi multi-cluster nel progetto host del parco risorse:

    gcloud container fleet multi-cluster-services enable \
        --project FLEET_HOST_PROJ
    

    L'abilitazione di servizi multi-cluster nel progetto host del parco risorse crea o garantisce che esiste il seguente account di servizio: service-FLEET_HOST_PROJ_NUMBER@gcp-sa-mcsd.iam.gserviceaccount.com.

Crea associazioni IAM

  1. Crea associazione IAM per concedere al progetto host del parco risorse Account di servizio GKE Hub e l'agente di servizio GKE sul progetto del secondo 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
    
  2. Crea associazione IAM che concede l'MCS del progetto host del parco risorse account di servizio il ruolo di agente di servizio MCS nel progetto del secondo 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
    
  3. Crea associazione IAM che concede al progetto host del parco risorse MCS l'account di servizio del ruolo Agente di servizio MCS sull'host del VPC condiviso progetto:

    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
    
  4. Crea associazione IAM per concedere l'account di servizio MCS di ogni progetto il ruolo Utente di rete per il proprio progetto:

    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
    

    Poiché questo scenario utilizza la federazione delle identità per i carichi di lavoro per GKE, l'importer MCS di ogni progetto L'account di servizio GKE richiede il ruolo Utente di rete progetto.

    Sostituisci quanto segue nei comandi precedenti come necessario:

    • SECOND_CLUSTER_PROJ: l'ID progetto del secondo nel progetto del cluster.
    • SHARED_VPC_HOST_PROJ: l'ID progetto del Progetto host VPC condiviso. In questo esempio, entrambi i cluster utilizzano sulla stessa rete VPC condiviso, ma nessuno dei due cluster si trova nella Progetto host VPC condiviso.
    • FLEET_HOST_PROJ: l'ID progetto del primo nel progetto del cluster.
    • FLEET_HOST_PROJ_NUMBER: il numero del progetto progetto host del parco risorse.

Registra i cluster nel parco risorse

  1. Registra il primo cluster nel parco risorse. Il flag --gke-cluster può essere utilizzato per questo comando perché il primo cluster si trova nella stessa progetto come il parco risorse a cui viene registrato.

    gcloud container fleet memberships register MEMBERSHIP_NAME_1 \
        --project FLEET_HOST_PROJ \
        --enable-workload-identity \
        --gke-cluster=LOCATION/FIRST_CLUSTER_NAME
    

    Sostituisci quanto segue:

    • MEMBERSHIP_NAME_1: un identificatore univoco per questo cluster in questo parco risorse. Ad esempio, puoi utilizzare il nome del primo cluster GKE in un cluster Kubernetes.
    • FLEET_HOST_PROJ: l'ID progetto per l'host del parco risorse identico al progetto host del VPC condiviso in questo scenario.
    • LOCATION: per i cluster di zona, Compute Engine una zona contenente il cluster; per i cluster a livello di regione, Compute Engine regione contenente il cluster.
    • FIRST_CLUSTER_NAME: il nome del primo cluster.
  2. Registra il secondo cluster nel parco risorse. Il flag --gke-uri deve essere utilizzato per questo comando perché il secondo cluster non si trova in lo stesso progetto del parco risorse. Puoi ottenere l'URI completo del cluster eseguendo gcloud 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
    

    Sostituisci quanto segue:

    • MEMBERSHIP_NAME_2: un identificatore univoco per questo cluster in questo parco risorse. Ad esempio, puoi utilizzare il nome del secondo cluster GKE in un cluster Kubernetes.
    • FLEET_HOST_PROJ: l'ID progetto per l'host del parco risorse identico al progetto host del VPC condiviso in questo scenario.
    • LOCATION: sostituisci LOCATION con:
        .
      • alla zona Compute Engine del cluster se si tratta di un cluster di zona
      • la regione Compute Engine del cluster se si tratta di un cluster a livello di regione
    • SECOND_CLUSTER_PROJECT: il progetto contenente nel secondo cluster.
    • SECOND_CLUSTER_NAME: il nome del secondo cluster.

Crea uno spazio dei nomi comune per i cluster

  1. Assicurati che ogni cluster abbia uno spazio dei nomi in cui condividere i servizi. Se necessario, crea uno spazio dei nomi utilizzando il comando seguente in ogni cluster:

    kubectl create ns NAMESPACE
    

    Sostituisci NAMESPACE con un nome per lo spazio dei nomi.

Passaggi successivi