Configurazione del progetto e del cluster GKE in autonomia

<0x0 Google Cloud Per saperne di più, consulta la panoramica di Cloud Service Mesh.

Quando installi Cloud Service Mesh utilizzando asmcli, può configurare il progetto e il cluster GKE su Google Cloud per te se includi il flag --enable_all o i flag di attivazione più granulari. Se preferisci eseguire la configurazione autonomamente anziché far apportare le modifiche a asmcli, segui i passaggi descritti in questa pagina.

Se hai già installato una versione precedente di Cloud Service Mesh, non devi apportare modifiche al progetto o al cluster prima di utilizzare asmcli per eseguire l'upgrade all'ultima versione di Cloud Service Mesh.

Per impostazione predefinita, asmcli non installa istio-ingressgateway. Ti consigliamo di eseguire il deployment e la gestione del control plane e dei gateway separatamente. Cloud Service Mesh supporta l'iniezione automatica per i deployment del gateway, il che semplifica gli upgrade di Cloud Service Mesh. Dopo l'upgrade di Cloud Service Mesh, riavvia i gateway proprio come i servizi per recuperare la nuova configurazione del control plane. Per ulteriori informazioni, vedi Installazione e upgrade dei gateway.

Prima di iniziare

Configura il progetto

  1. Recupera l'ID e il numero del progetto in cui è stato creato il cluster.

    gcloud

    Esegui questo comando:

    gcloud projects list
    

    Console

    1. Vai alla pagina Dashboard nella console Google Cloud .

      Vai alla pagina Dashboard

    2. Fai clic sull'elenco a discesa nella parte superiore della pagina. Nella finestra Seleziona da visualizzata, seleziona il tuo progetto.

      L'ID e il numero del progetto vengono visualizzati nella scheda Informazioni sul progetto della dashboard.

  2. Crea le seguenti variabili di ambiente:

    • Imposta il pool di workload utilizzando l'ID progetto:

      export WORKLOAD_POOL=PROJECT_ID.svc.id.goog
      
    • Imposta l'ID mesh utilizzando il numero di progetto:

      export MESH_ID="proj-PROJECT_NUMBER"
      
  3. Imposta i ruoli IAM (Identity and Access Management) richiesti. Se sei un proprietario del progetto, disponi di tutte le autorizzazioni necessarie per completare l'installazione. Se non sei un proprietario del progetto, devi chiedere a qualcuno che lo sia di concederti i seguenti ruoli IAM specifici. Nel comando seguente, sostituisci PROJECT_ID con l'ID progetto del passaggio precedente e GCP_EMAIL_ADDRESS con l'account che utilizzi per accedere a Google Cloud.

    ROLES=(
    'roles/servicemanagement.admin' \
    'roles/serviceusage.serviceUsageAdmin' \
    'roles/meshconfig.admin' \
    'roles/compute.admin' \
    'roles/container.admin' \
    'roles/resourcemanager.projectIamAdmin' \
    'roles/iam.serviceAccountAdmin' \
    'roles/iam.serviceAccountKeyAdmin' \
    'roles/gkehub.admin')
    for role in "${ROLES[@]}"
    do
      gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "user:GCP_EMAIL_ADDRESS" \
        --role="$role"
    done
    

    Se includi il flag --enable_all o --enable_gcp_iam_roles quando esegui asmcli, vengono impostati i ruoli IAM richiesti.

  4. Abilita le API Google richieste:

    gcloud services enable \
        --project=PROJECT_ID \
        mesh.googleapis.com
    

    Oltre a mesh.googleapis.com, questo comando abilita anche le seguenti API:

    API Finalità Può essere disattivato
    meshconfig.googleapis.com Cloud Service Mesh utilizza l'API Mesh Configuration per trasmettere i dati di configurazione dalla mesh a Google Cloud. Inoltre, l'abilitazione dell'API Mesh Configuration ti consente di accedere alle pagine di Cloud Service Mesh nella console Google Cloud e di utilizzare la Certificate Authority di Cloud Service Mesh. No
    meshca.googleapis.com Relativo all'autorità di certificazione Cloud Service Mesh utilizzata da Cloud Service Mesh gestito. No
    container.googleapis.com Obbligatorio per creare cluster Google Kubernetes Engine (GKE). No
    gkehub.googleapis.com Obbligatorio per gestire la mesh come flotta. No
    monitoring.googleapis.com Obbligatorio per acquisire la telemetria per i carichi di lavoro mesh. No
    stackdriver.googleapis.com Obbligatorio per utilizzare la UI dei servizi. No
    opsconfigmonitoring.googleapis.com Obbligatorio per utilizzare l'interfaccia utente dei servizi per i cluster off-Google Cloud . No
    connectgateway.googleapis.com Obbligatorio per consentire al control plane di Cloud Service Mesh gestito di accedere ai carichi di lavoro del mesh. Sì*
    trafficdirector.googleapis.com Consente un control plane gestito altamente disponibile e scalabile. Sì*
    networkservices.googleapis.com Consente un control plane gestito altamente disponibile e scalabile. Sì*
    networksecurity.googleapis.com Consente un control plane gestito altamente disponibile e scalabile. Sì*

    L'abilitazione delle API può richiedere un minuto o più. Quando le API sono abilitate, visualizzi un output simile al seguente:

    Operation "operations/acf.601db672-88e6-4f98-8ceb-aa3b5725533c" finished
    successfully.
    

    Se includi il flag --enable_all o --enable_apis quando esegui asmcli, le API richieste vengono abilitate automaticamente.

Configurazione del cluster

Se includi il flag --enable_all o uno dei flag di attivazione più granulari, asmcli configura il cluster per te.

  1. Imposta la zona o la regione predefinita per Google Cloud CLI. Se non imposti il valore predefinito qui, assicurati di specificare l'opzione --zone o --region nei comandi gcloud container clusters di questa pagina.

    • Se hai un cluster a zona singola, imposta la zona predefinita:

      gcloud config set compute/zone CLUSTER_LOCATION
      
    • Se hai un cluster regionale, imposta la regione predefinita:

      gcloud config set compute/region CLUSTER_LOCATION
      
  2. Imposta l'mesh_id etichetta sul cluster. Se il cluster ha etichette esistenti che vuoi conservare, devi includerle quando aggiungi l'etichetta mesh_id.

    1. Per verificare se il cluster ha etichette esistenti:

      gcloud container clusters describe CLUSTER_NAME \
          --project PROJECT_ID
      

      Cerca il campo resourceLabels nell'output. Ogni etichetta viene memorizzata su una riga separata nel campo resourceLabels, ad esempio:

      resourceLabels:
        csm: ''
        env: dev
        release: stable

      Per comodità, puoi aggiungere le etichette a una variabile di ambiente. Nel seguente, sostituisci YOUR_EXISTING_LABELS con un elenco separato da virgole delle etichette esistenti nel cluster nel formato KEY=VALUE, ad esempio: env=dev,release=stable

      export EXISTING_LABELS="YOUR_EXISTING_LABELS"
      
    2. Imposta l'etichetta mesh_id:

      • Se il cluster ha etichette esistenti che vuoi conservare, aggiorna il cluster con mesh_id e le etichette esistenti:

        gcloud container clusters update CLUSTER_NAME \
            --project PROJECT_ID \
            --update-labels=mesh_id=${MESH_ID},${EXISTING_LABELS}
        
      • Se il cluster non ha etichette esistenti, aggiornalo con solo l'etichetta mesh_id:

        gcloud container clusters update CLUSTER_NAME \
            --project=PROJECT_ID \
            --update-labels=mesh_id=${MESH_ID}
        
  3. Abilita Workload Identity:

    gcloud container clusters update CLUSTER_NAME \
        --project=PROJECT_ID \
        --workload-pool=${WORKLOAD_POOL}
    

    L'attivazione di Workload Identity può richiedere fino a 10-15 minuti.

  4. Registra il cluster nel parco risorse.

  5. Inizializza il progetto per prepararlo all'installazione. Tra le altre cose, questo comando crea un account di servizio per consentire ai componenti del data plane, ad esempio il proxy sidecar, di accedere in modo sicuro ai dati e alle risorse del tuo progetto. Nel comando seguente, sostituisci FLEET_PROJECT_ID con il progetto host del parco risorse:

    curl --request POST  \
     --header "Authorization: Bearer $(gcloud auth print-access-token)" \
     --header "Content-Type: application/json" \
     --data '{"workloadIdentityPools":["FLEET_PROJECT_ID.hub.id.goog","FLEET_PROJECT_ID.svc.id.goog","PROJECT_ID.svc.id.goog"]}' \
     "https://meshconfig.googleapis.com/v1alpha1/projects/PROJECT_ID:initialize"
    

    Il comando risponde con parentesi graffe vuote: {}

  6. Abilita Cloud Monitoring e Cloud Logging su GKE:

    gcloud container clusters update CLUSTER_NAME \
        --project=PROJECT_ID \
        --enable-stackdriver-kubernetes
    

Il progetto e il cluster sono ora pronti per una nuova installazione utilizzando asmcli.

Passaggi successivi