configura le risorse Google Cloud

Questa pagina descrive le risorse Google Cloud che devi creare e configurare prima di creare i cluster.

Prima di iniziare

  1. Crea un progetto Google Cloud e un account di fatturazione.

  2. Se non sei un proprietario del progetto Google Cloud, chiedi a un proprietario del progetto di concederti i seguenti ruoli IAM (Identity and Access Management):

    Ruolo Finalità
    roles/compute.viewer Obbligatorio: necessario quando bmctl convalida il campo clusterOperations.location nel file di configurazione del cluster.
    roles/iam.serviceAccountAdmin Obbligatorio: necessario per creare gli account di servizio richiesti da GKE su Bare Metal.
    roles/iam.securityAdmin Obbligatorio: necessario per concedere i ruoli IAM agli account di servizio richiesti da GKE su Bare Metal.
    roles/iam.serviceAccountKeyAdmin Obbligatorio: necessario per creare file chiave JSON per gli account di servizio richiesti da GKE su Bare Metal.
    roles/serviceusage.serviceUsageAdmin Obbligatorio: necessario per abilitare le API Google richieste da GKE su Bare Metal.
    roles/gkeonprem.admin (Facoltativo) Necessario se vuoi creare i cluster utilizzando i client API GKE On-Prem o configurare un cluster che deve essere gestito dall'API GKE On-Prem.
    roles/gkehub.viewer
    roles/container.viewer
    Facoltativo: necessario se vuoi accedere alle pagine GKE Enterprise e Google Kubernetes Engine nella console Google Cloud.

    Per informazioni sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Abilita le API

Devi abilitare diverse API di Google nel progetto Google Cloud associato. GKE su Bare Metal utilizza le API durante la creazione dei cluster. Le API sono necessarie anche per mantenere una connessione a Google Cloud. La connessione a Google Cloud consente a GKE su Bare Metal di utilizzare Cloud Logging e Cloud Monitoring, nonché funzionalità del parco risorse come Anthos Service Mesh, Config Sync, Policy Controller e Config Controller.

Se utilizzerai lo strumento bmctl per creare i cluster, puoi includere il flag --enable-apis quando esegui bmctl create config e bmctl abiliterà le API elencate nel seguente comando gcloud services enable. Se utilizzerai un client API GKE On-Prem per creare un cluster di amministrazione o un cluster utente, devi abilitare le API prima di creare il cluster.

Per abilitare le API, esegui questi comandi:

  1. Accedi a Google Cloud CLI:

    gcloud auth login
    
  2. Abilita le seguenti API:

    gcloud services enable --project=PROJECT_ID \
        anthos.googleapis.com \
        anthosaudit.googleapis.com \
        anthosgke.googleapis.com \
        cloudresourcemanager.googleapis.com \
        connectgateway.googleapis.com \
        container.googleapis.com \
        gkeconnect.googleapis.com \
        gkehub.googleapis.com \
        gkeonprem.googleapis.com \
        iam.googleapis.com \
        logging.googleapis.com \
        monitoring.googleapis.com \
        opsconfigmonitoring.googleapis.com \
        serviceusage.googleapis.com \
        stackdriver.googleapis.com \
        storage.googleapis.com
    
  1. Per vedere quali API e servizi sono abilitati nel tuo progetto, esegui questo comando:

    gcloud services list --project=PROJECT_ID \
        --enabled
    

Configura account di servizio

Per utilizzare le API di Google, GKE su Bare Metal richiede un account di servizio configurato con ruoli IAM specifici nel progetto Google Cloud associato. Come best practice, devi creare account di servizio separati per scopi diversi, soprattutto negli ambienti di produzione.

Se utilizzerai lo strumento bmctl per creare i cluster, puoi includere il flag --create-service-accounts quando esegui bmctl create config per consentire a bmctl di creare gli account di servizio con i ruoli IAM richiesti. Se utilizzi un client API GKE On-Prem per creare un cluster di amministrazione, per impostazione predefinita il comando bmctl register bootstrap crea gli account di servizio con i ruoli IAM richiesti quando esegui il comando per creare un cluster di bootstrap.

Gli account di servizio sono necessari anche per la creazione del cluster utente, ma gli account di servizio sono stati creati e configurati durante la creazione del cluster di amministrazione che gestisce i cluster utente.

La seguente tabella descrive gli account di servizio creati automaticamente:

Account di servizio Finalità Ruoli
anthos-baremetal-gcr GKE su Bare Metal utilizza questo account di servizio per scaricare immagini container da Container Registry. Nessuno
anthos-baremetal-connect L'agente Connect utilizza questo account di servizio per mantenere una connessione tra il cluster e Google Cloud. Consente l'accesso al cluster e alle funzionalità di gestione dei carichi di lavoro, tra cui la console Google Cloud e il gateway di connessione per interagire con il cluster. roles/gkehub.connect
anthos-baremetal-register L'agente Connect utilizza questo account di servizio per registrare i cluster con un parco risorse. roles/gkehub.admin
anthos-baremetal-cloud-ops L'agente Stackdriver utilizza questo account di servizio per esportare log e metriche dai cluster a Cloud Logging e Cloud Monitoring. role/logging.logWriter
roles/monitoring.metricWriter
roles/stackdriver.resourceMetadata.writer
roles/opsconfigmonitoring.resourceMetadata.writer
roles/monitoring.dashboardEditor

Configurare manualmente gli account di servizio

Se preferisci, puoi creare manualmente gli account di servizio, configurarli con i ruoli necessari e scaricare i file di chiavi JSON prima di creare i cluster. Se utilizzi bmctl per creare i cluster, aggiungi riferimenti ai file delle chiavi JSON nel file di configurazione del cluster appropriato. Per un esempio, vedi Modifica del file di configurazione. Se utilizzi un'API GKE On-Prem per creare un cluster di amministrazione, puoi specificare i file della chiave quando esegui bmctl register bootstrap per creare il cluster di bootstrap.

Per creare gli account di servizio e i file di chiavi:

  1. Sulla workstation di amministrazione, assicurati di essere nella directory baremetal.

  2. Se non l'hai già fatto, accedi a Google Cloud CLI:

    gcloud auth login
    
  3. Crea gli account di servizio:

    gcloud iam service-accounts create anthos-baremetal-gcr \
        --project=PROJECT_ID
    
    gcloud iam service-accounts create anthos-baremetal-connect \
        --project=PROJECT_ID
    
    gcloud iam service-accounts create anthos-baremetal-register \
        --project=PROJECT_ID
    
    gcloud iam service-accounts create anthos-baremetal-cloud-ops \
        --project=PROJECT_ID
    
  4. Concedi i ruoli IAM richiesti per gli account di servizio:

    gcloud projects add-iam-policy-binding  PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-connect@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/gkehub.connect"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-register@PROJECT_ID.iam.gserviceaccount.com" \
        --role=roles/gkehub.admin
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/logging.logWriter"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/monitoring.metricWriter"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/stackdriver.resourceMetadata.writer"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/opsconfigmonitoring.resourceMetadata.writer"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/monitoring.dashboardEditor"
    
  5. Scarica i file chiave JSON dell'account di servizio:

    gcloud iam service-accounts keys create anthos-baremetal-gcr.json \
        --project=PROJECT_ID \
        --iam-account=anthos-baremetal-gcr@PROJECT_ID.iam.gserviceaccount.com
    
    gcloud iam service-accounts keys create connect-agent.json \
        --project=PROJECT_ID \
        --iam-account=anthos-baremetal-connect@PROJECT_ID.iam.gserviceaccount.com
    
    gcloud iam service-accounts keys create connect-register.json \
        --project=PROJECT_ID \
        --iam-account=anthos-baremetal-register@PROJECT_ID.iam.gserviceaccount.com
    
    gcloud iam service-accounts keys create anthos-baremetal-cloud-ops.json \
        --project=PROJECT_ID \
        --iam-account=anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com
    

Configura un account di servizio che può accedere a un bucket Cloud Storage

Per accedere a Cloud Storage devi utilizzare un account di servizio e un file della chiave. Puoi utilizzare questo account di servizio per abilitare gli snapshot dei cluster da caricare automaticamente nei bucket Cloud Storage o per importare le immagini delle macchine virtuali (VM) dai bucket Cloud Storage per utilizzarle con il runtime VM su GDC.

Per creare l'account di servizio e il file della chiave, completa i seguenti passaggi:

  1. Assicurati di essere nella directory baremetal.

  2. Se non l'hai già fatto, accedi a Google Cloud CLI:

    gcloud auth login
    
  3. Se non lo è già, abilita l'API Cloud Storage, storage.googleapis.com nel tuo progetto Google Cloud:

    gcloud services enable --project=PROJECT_ID \
        storage.googleapis.com
    
  4. Crea un account di servizio che il cluster possa utilizzare per accedere ai bucket Cloud Storage:

    gcloud iam service-accounts create SA_NAME \
        --project=PROJECT_ID
    

    Sostituisci SA_NAME con il nome del nuovo account di servizio. Questo nome dell'account di servizio viene visualizzato nell'indirizzo email di cui viene eseguito il provisioning durante la creazione, nel formato SA_NAME@PROJECT_ID.iam.gserviceaccount.com.

  5. Crea un ruolo personalizzato con le seguenti autorizzazioni:

    • storage.buckets.create
    • storage.buckets.get
    • storage.buckets.list
    • storage.objects.create
    • resourcemanager.projects.get
    gcloud iam roles create ROLE_ID \
        --permissions=storage.buckets.create,storage.buckets.get,storage.buckets.list,storage.objects.create \
        --project=PROJECT_ID
    

    Sostituisci ROLE_ID con il nome del nuovo ruolo personalizzato, ad esempio snapshotUpload. Il percorso completo di questo ruolo personalizzato ha il formato projects/PROJECT_ID/roles/ROLE_ID.

  6. Aggiungi un'associazione di criteri all'account di servizio:

    gcloud iam service-accounts add-iam-policy-binding SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --member=serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --role='projects/PROJECT_ID/roles/ROLE_ID'
    
  7. Scarica il file di chiave JSON dell'account di servizio:

    gcloud iam service-accounts keys create OUTPUT_FILE \
        --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com
    

Per ulteriori informazioni su come creare snapshot dei cluster e caricarli automaticamente in un bucket Cloud Storage, consulta Creare snapshot per diagnosticare i problemi dei cluster.

Per saperne di più su come importare immagini VM da Cloud Storage, consulta Creare e utilizzare le credenziali per importare immagini da Cloud Storage per il runtime VM su GDC.