Configurazione di un cluster Google Kubernetes Engine per AI Platform Pipelines

AI Platform Pipelines semplifica l'utilizzo di Kubeflow Pipelines con TensorFlow Extended su Google Kubernetes Engine rimuovendo le difficoltà di:

  • Crea un cluster GKE
  • Eseguire il deployment di Kubeflow Pipelines nel cluster GKE
  • Creazione di un bucket Cloud Storage da utilizzare per archiviare gli elementi della pipeline

Se preferisci, puoi utilizzare AI Platform Pipelines per eseguire il deployment di Kubeflow Pipelines su un cluster esistente su cui non è già installato Kubeflow Pipelines. Utilizza questa guida per assicurarti che il tuo cluster sia configurato correttamente per il deployment ed l'esecuzione di Kubeflow Pipelines.

Assicurati che il tuo cluster GKE disponga di risorse sufficienti per AI Platform Pipelines

Per utilizzare Google Cloud Marketplace per eseguire il deployment di Kubeflow Pipelines su un cluster GKE, devono essere soddisfatte le seguenti condizioni:

  • Il cluster deve avere almeno 3 nodi. Ogni nodo deve avere almeno 2 CPU e 4 GB di memoria disponibili.
  • L'ambito di accesso del cluster deve concedere l'accesso completo a tutte le API Cloud oppure il cluster deve utilizzare un account di servizio personalizzato.
  • Nel cluster non deve essere già installato Kubeflow Pipelines.

Segui le istruzioni riportate di seguito per verificare se il tuo cluster dispone di risorse sufficienti per installare AI Platform Pipelines.

  1. Apri le pipeline della piattaforma AI nella console Google Cloud.

    Vai ad AI Platform Pipelines

  2. Nella barra degli strumenti di AI Platform Pipelines, fai clic su Nuova istanza. Kubeflow Pipelines si apre in Google Cloud Marketplace.

  3. Fai clic su Configura. Si apre il modulo Esegui il deployment di Kubeflow Pipelines.

  4. Fai clic su Cluster per espandere l'elenco. I cluster GKE che non dispongono di risorse o autorizzazioni sufficienti sono elencati come Cluster non idonei. Ogni cluster non idoneo include una descrizione del motivo per cui non è possibile installare Kubeflow Pipelines, ad esempio:

Alloca più risorse al tuo cluster GKE

Per installare Kubeflow Pipelines da Google Cloud Marketplace in un cluster GKE esistente, il cluster deve avere almeno 3 nodi con 2 CPU e 4 GB disponibili.

Segui le istruzioni riportate di seguito per sostituire il pool di nodi nel tuo cluster con uno che disponga di risorse di CPU e memoria sufficienti per le AI Platform Pipelines.

  1. Apri i cluster Google Kubernetes Engine nella console Google Cloud.

    Vai ai cluster GKE

  2. Fai clic sul nome del cluster. Vengono visualizzati i dettagli del cluster.

  3. Nella barra degli strumenti di GKE, fai clic su Aggiungi pool di nodi. Viene visualizzato il modulo Aggiungi un nuovo node pool.

  4. Fornisci le seguenti informazioni nel modulo Aggiungi un nuovo pool di nodi.

    • Numero di nodi:specifica il numero di nodi nel pool di nodi. Il cluster deve avere almeno 3 nodi per installare Kubeflow Pipelines utilizzando Google Cloud Marketplace.
    • Tipo di macchina:specifica il tipo di macchina Compute Engine da utilizzare per le istanze nel pool di nodi. Seleziona un tipo di macchina con almeno 2 CPU e 4 GB di memoria, ad esempio n1-standard-2.

    • Ambiti di accesso:fai clic su Consenti l'accesso completo a tutte le API Cloud in Ambiti di accesso.

    In caso contrario, configura il pool di nodi come preferisci. Scopri di più su come aggiungere pool di nodi a un cluster.

  5. Fai clic su Crea node pool. La creazione del pool di nodi richiede diversi minuti.

  6. Per ogni pool di nodi nella sezione Node pool, tranne per il pool di nodi creato nel passaggio precedente, fai clic su delete. Viene visualizzata la finestra di dialogo Elimina un node pool per confermare che vuoi eliminare questo pool di nodi.

  7. Fai clic su Elimina. L'eliminazione del pool di nodi richiede diversi minuti.

  8. Dopo aver eliminato i vecchi pool di nodi, controlla che il cluster abbia risorse e accesso sufficienti per installare Kubeflow Pipelines da Google Cloud Marketplace.

Concedi al tuo cluster GKE l'accesso alle risorse e alle API Google Cloud

Esistono tre modi per concedere alle pipeline ML l'accesso alle risorse e alle API di Google Cloud:

Quando esegui il deployment di AI Platform Pipelines, devi concedere al tuo cluster GKE accesso completo alle risorse e alle API di Google Cloud o concedere al tuo cluster accesso a Google Cloud utilizzando un account di servizio.

Configurare il cluster GKE con accesso completo alle API Google Cloud

Per consentire alle pipeline di ML e ad altri carichi di lavoro del cluster GKE di accedere più facilmente alle risorse Google Cloud del tuo progetto, configura il tuo cluster per l'ambito di accesso https://www.googleapis.com/auth/cloud-platform. Questo ambito di accesso fornisce l'accesso completo alle risorse e alle API Google Cloud che hai attivato nel tuo progetto. Se la concessione di questo ambito di accesso consente un accesso eccessivo a Google Cloud, configura l'accesso granulare utilizzando un account di servizio.

Segui le istruzioni riportate di seguito per sostituire il pool di nodi del cluster con uno che consenta a tutti i workload su questo cluster di accedere a tutte le API Google Cloud attivate nel progetto. Prima di modificare il cluster GKE, discuti queste modifiche con l'amministratore GKE.

  1. Apri i cluster Google Kubernetes Engine nella console Google Cloud.

    Vai ai cluster GKE

  2. Fai clic sul nome del cluster. Vengono visualizzati i dettagli del cluster.

  3. Nella barra degli strumenti di GKE, fai clic su Aggiungi pool di nodi. Viene visualizzato il modulo Aggiungi un nuovo node pool.

  4. Fornisci le seguenti informazioni nel modulo Aggiungi un nuovo pool di nodi.

    • Numero di nodi:specifica il numero di nodi nel pool di nodi. Il cluster deve avere almeno 3 nodi per installare Kubeflow Pipelines utilizzando Google Cloud Marketplace.
    • Tipo di macchina:specifica il tipo di macchina Compute Engine da utilizzare per le istanze nel pool di nodi. Seleziona un tipo di macchina con almeno 2 CPU e 4 GB di memoria, ad esempio n1-standard-2.

    • Ambiti di accesso:fai clic su Consenti l'accesso completo a tutte le API Cloud in Ambiti di accesso.

    In caso contrario, configura il pool di nodi come preferisci. Scopri di più su come aggiungere pool di nodi a un cluster.

  5. Fai clic su Crea node pool. La creazione del pool di nodi richiede diversi minuti.

  6. Per ogni pool di nodi nella sezione Node pool, tranne per il pool di nodi creato nel passaggio precedente, fai clic su delete. Viene visualizzata la finestra di dialogo Elimina un node pool per confermare che vuoi eliminare questo pool di nodi.

  7. Fai clic su Elimina. L'eliminazione del pool di nodi richiede diversi minuti.

  8. Dopo aver eliminato i vecchi pool di nodi, controlla che il cluster abbia risorse e accesso sufficienti per installare Kubeflow Pipelines da Google Cloud Marketplace.

Configurare il cluster GKE con accesso granulare alle API Google Cloud

Segui le istruzioni riportate di seguito per configurare un account di servizio per il tuo cluster GKE e sostituire il pool di nodi del cluster con uno che utilizzi il tuo account di servizio. Creando un account di servizio, puoi gestire in modo granulare le risorse Google Cloud a cui hanno accesso i carichi di lavoro sul tuo cluster. Prima di modificare il cluster GKE, discutete queste modifiche con l'amministratore GKE.

  1. Apri una sessione di Cloud Shell.

    Apri Cloud Shell

    Cloud Shell si apre in un frame nella parte inferiore della console Google Cloud.

  2. Esegui i seguenti comandi in Cloud Shell per creare il tuo account di servizio e concedergli l'accesso sufficiente per eseguire le AI Platform Pipelines. Scopri di più sui ruoli necessari per eseguire AI Platform Pipelines con un account di servizio gestito dall'utente.

    export PROJECT=PROJECT_ID
    export SERVICE_ACCOUNT=SERVICE_ACCOUNT_NAME
    gcloud iam service-accounts create $SERVICE_ACCOUNT \
      --display-name=$SERVICE_ACCOUNT \
      --project=$PROJECT
    gcloud projects add-iam-policy-binding $PROJECT \
      --member="serviceAccount:$SERVICE_ACCOUNT@$PROJECT.iam.gserviceaccount.com" \
      --role=roles/logging.logWriter
    gcloud projects add-iam-policy-binding $PROJECT \
      --member="serviceAccount:$SERVICE_ACCOUNT@$PROJECT.iam.gserviceaccount.com" \
      --role=roles/monitoring.metricWriter
    gcloud projects add-iam-policy-binding $PROJECT \
      --member="serviceAccount:$SERVICE_ACCOUNT@$PROJECT.iam.gserviceaccount.com" \
      --role=roles/monitoring.viewer
    gcloud projects add-iam-policy-binding $PROJECT \
      --member="serviceAccount:$SERVICE_ACCOUNT@$PROJECT.iam.gserviceaccount.com" \
      --role=roles/storage.objectViewer

    Sostituisci quanto segue:

    • SERVICE_ACCOUNT_NAME: il nome dell'account di servizio da creare.
    • PROJECT_ID: il progetto Google Cloud in cui è stato creato l'account di servizio.
  3. Concedi all'account di servizio l'accesso a qualsiasi API o risorsa Google Cloud necessaria per le pipeline di ML. Scopri di più sui ruoli di Identity and Access Management e sulla gestione degli account di servizio.

  4. Concedi al tuo account utente il ruolo Utente account di servizio (iam.serviceAccountUser) nel tuo account di servizio.

    gcloud iam service-accounts add-iam-policy-binding \
      "SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \
      --member=user:USERNAME \
      --role=roles/iam.serviceAccountUser
    

    Sostituisci quanto segue:

    • SERVICE_ACCOUNT_NAME: il nome del tuo account di servizio.
    • PROJECT_ID: il tuo progetto Google Cloud.
    • USERNAME: il tuo nome utente su Google Cloud.
  5. Apri i cluster Google Kubernetes Engine nella console Google Cloud.

    Vai ai cluster GKE

  6. Fai clic sul nome del cluster. Vengono visualizzati i dettagli del cluster.

  7. Nella barra degli strumenti di GKE, fai clic su Aggiungi pool di nodi. Viene visualizzato il modulo Aggiungi un nuovo node pool.

  8. Fornisci le seguenti informazioni nel modulo Aggiungi un nuovo pool di nodi.

    • Numero di nodi:specifica il numero di nodi nel pool di nodi. Il cluster deve avere almeno 3 nodi per installare Kubeflow Pipelines utilizzando Google Cloud Marketplace.
    • Tipo di macchina:specifica il tipo di macchina Compute Engine da utilizzare per le istanze nel pool di nodi. Seleziona un tipo di macchina con almeno 2 CPU e 4 GB di memoria, ad esempio n1-standard-2.

    • Account di servizio:seleziona l'account di servizio che hai creato in un passaggio precedente.

    In caso contrario, configura il pool di nodi come preferisci. Scopri di più su come aggiungere pool di nodi a un cluster.

  9. Fai clic su Crea node pool. La creazione del pool di nodi richiede diversi minuti.

  10. Per ogni pool di nodi nella sezione Node pool, tranne per il pool di nodi creato nel passaggio precedente, fai clic su delete. Viene visualizzata la finestra di dialogo Elimina un node pool per confermare che vuoi eliminare questo pool di nodi.

  11. Fai clic su Elimina. L'eliminazione del pool di nodi richiede diversi minuti.

  12. Dopo aver eliminato i vecchi pool di nodi, controlla che il cluster abbia risorse e accesso sufficienti per installare Kubeflow Pipelines da Google Cloud Marketplace.

Utilizza un segreto Kubernetes per concedere al tuo cluster l'accesso alle API e alle risorse Google Cloud

Le pipeline sviluppate utilizzando l'operatore use_gcp_secret nell'SDK Kubeflow Pipelines si autenticano alle risorse Google Cloud utilizzando un segreto Kubernetes.

Segui queste istruzioni per creare un account di servizio, concedere all'account l'accesso alle risorse utilizzate dalle pipeline e aggiungere l'account di servizio al tuo cluster come secret Kubernetes.

  1. Apri i cluster Google Kubernetes Engine nella console Google Cloud.

    Vai ai cluster GKE

  2. Nella riga del cluster, trova il nome e la zona del cluster.

  3. Apri una sessione di Cloud Shell.

    Apri Cloud Shell

    Cloud Shell si apre in un frame nella parte inferiore della console Google Cloud. Utilizza Cloud Shell per completare il resto della procedura.

  4. Imposta le seguenti variabili di ambiente.

    export PROJECT_ID=PROJECT_ID
    export ZONE=ZONE
    export CLUSTER=CLUSTER_NAME
    export NAMESPACE=NAMESPACE
    export SA_NAME=SERVICE_ACCOUNT_NAME
    

    Sostituisci quanto segue:

    • PROJECT_ID: il progetto Google Cloud in cui è stato creato il tuo cluster GKE.
    • ZONE: la zona Google Cloud in cui è stato creato il tuo cluster GKE.
    • CLUSTER_NAME: il nome del tuo cluster GKE.
    • NAMESPACE: lo spazio dei nomi nel cluster GKE in cui è installato Kubeflow Pipelines.

      Gli spazi dei nomi vengono utilizzati per gestire le risorse in grandi cluster Kubernetes. Se il cluster non utilizza spazi dei nomi, inserisci default come kubernetes-namespace.

    • SERVICE_ACCOUNT_NAME: il nome dell'account di servizio da creare per il cluster Kubeflow Pipelines per accedere alle risorse e alle API di Google Cloud.

  5. Crea un account di servizio per il cluster.

    gcloud iam service-accounts create $SA_NAME \
      --display-name $SA_NAME --project "$PROJECT_ID"
    
  6. Per concedere all'account di servizio l'accesso alle risorse Google Cloud, associa i ruoli di Identity and Access Management all'account di servizio. Segui le istruzioni riportate di seguito per concedere i ruoli IAM al tuo account di servizio. Chiama questo comando una volta per ogni ruolo che vuoi concedere al tuo account di servizio.

    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member=serviceAccount:$SA_NAME@$PROJECT_ID.iam.gserviceaccount.com \
      --role=iam-role
    
    • iam-role: il ruolo IAM da concedere al tuo account di servizio. Ad esempio, roles/storage.admin concede il controllo completo dei bucket e degli oggetti Cloud Storage nel tuo progetto.

      Per saperne di più sui ruoli IAM, consulta la guida su come comprendere i ruoli IAM.

  7. Crea una chiave privata per il tuo account di servizio nella directory corrente.

    gcloud iam service-accounts keys create ./service-account-key.json \
    --iam-account $SA_NAME@$PROJECT_ID.iam.gserviceaccount.com
    
  8. Configura kubectl per connetterti al cluster, quindi crea il secret Kubernetes user-gcp-sa.

    gcloud container clusters get-credentials "$CLUSTER" --zone "$ZONE" \
      --project "$PROJECT_ID"
    
    kubectl create secret generic user-gcp-sa \
      --from-file=user-gcp-sa.json=./service-account-key.json \
      -n $NAMESPACE --dry-run -o yaml  |  kubectl apply -f -
    
  9. Ripulisci la chiave privata dell'account di servizio.

    rm ./service-account-key.json