Configurazione del progetto e del cluster GKE in autonomia

Quando installi Cloud Service Mesh utilizzando asmcli, può il tuo progetto e il tuo cluster GKE on Google Cloud se includi il flag --enable_all o il flag più granulare contrassegni di abilitazione. Se preferisci eseguire la configurazione autonomamente anziché chiedere a asmcli di le modifiche, segui la procedura descritta 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 alla versione più recente Versione Cloud Service Mesh.

Per impostazione predefinita, asmcli non installa istio-ingressgateway. Me ti consigliamo di eseguire il deployment del piano di controllo e dei gateway e di gestirlo separatamente. Cloud Service Mesh supporta l'iniezione automatica per i deployment dei gateway, il che semplifica gli upgrade di Cloud Service Mesh. Dopo l'upgrade Cloud Service Mesh, riavvia i gateway come faresti per la scelta dei servizi la nuova configurazione del piano di controllo. 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 era il cluster in cui è stato creato.

    gcloud

    Esegui questo comando:

    gcloud projects list
    

    Console

    1. Vai alla pagina Dashboard nella nella console Google Cloud.

      Vai alla pagina Dashboard

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

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

  2. Crea le seguenti variabili di ambiente:

    • Imposta il pool di carichi di lavoro 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 progetto, disponi di tutte le autorizzazioni necessarie per completare l'installazione. Se non sei un proprietario del progetto, devi avere qualcuno che sia di assegnarti i seguenti ruoli IAM specifici. Nella seguente comando, sostituisci PROJECT_ID con l'ID progetto del passaggio precedente e GCP_EMAIL_ADDRESS con l'account che usi 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 di 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 inoltrare i dati di configurazione dal tuo mesh a Google Cloud. Inoltre, l'abilitazione dell'API di configurazione mesh ti consente di accedere alle pagine di Cloud Service Mesh nella console Google Cloud e di utilizzare l'autorità di certificazione Cloud Service Mesh. No
    meshca.googleapis.com Contenuti correlati all'autorità di certificazione Cloud Service Mesh utilizzata da Cloud Service Mesh gestito. No
    container.googleapis.com Necessaria per creare cluster Google Kubernetes Engine (GKE). No
    gkehub.googleapis.com Obbligatorio per gestire la rete mesh come parco. No
    monitoring.googleapis.com Necessaria per acquisire dati di telemetria per i carichi di lavoro mesh. No
    stackdriver.googleapis.com Necessaria per utilizzare l'UI dei Servizi. No
    opsconfigmonitoring.googleapis.com Richiesta per utilizzare l'interfaccia utente di Services per i cluster esterni a Google Cloud. No
    connectgateway.googleapis.com Obbligatorio per consentire al piano di controllo Cloud Service Mesh gestito di accedere ai carichi di lavoro mesh. Sì*
    trafficdirector.googleapis.com Consente un piano di controllo gestito altamente disponibile e scalabile. Sì*
    networkservices.googleapis.com Consente un piano di controllo gestito altamente disponibile e scalabile. Sì*
    networksecurity.googleapis.com Consente un piano di controllo gestito altamente disponibile e scalabile. Sì*

    L'attivazione delle API può richiedere un minuto o più. Quando le API sono attivate, viene visualizzato 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, abilita le API richieste per tuo conto.

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 predefinite per Google Cloud CLI. Se non imposti il valore predefinito qui, assicurati di specificare --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 a livello di regione, imposta la regione predefinita:

      gcloud config set compute/region CLUSTER_LOCATION
      
  2. Imposta l'mesh_id etichetta sul cluster. Se nel cluster esistono già etichette che vuoi conservare, includile quando aggiungi l'etichetta mesh_id.

    1. Per vedere se nel cluster esistono già etichette:

      gcloud container clusters describe CLUSTER_NAME \
          --project PROJECT_ID
      

      Cerca il campo resourceLabels nell'output. Ogni etichetta è archiviata una riga separata sotto il campo resourceLabels, ad esempio:

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

      Per praticità, puoi aggiungere le etichette a una variabile di ambiente. Nella che segue, 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 nel cluster esistono già etichette che vuoi conservare, aggiorna nel 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 nel cluster non esistono etichette, aggiornalo con solo l'etichetta mesh_id:

        gcloud container clusters update CLUSTER_NAME \
            --project=PROJECT_ID \
            --update-labels=mesh_id=${MESH_ID}
        
  3. Attiva Identità carico di lavoro:

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

    L'abilitazione di Workload Identity può richiedere da 10 a 15 minuti.

  4. Registra il cluster nel parco risorse.

  5. Inizializza il progetto in modo da prepararlo per l'installazione. Tra le altre cose, questo comando crea un account di servizio per consentire ai componenti del piano dati, come come proxy sidecar, puoi accedere in modo sicuro ai dati e alle risorse del 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. Attiva 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