Configurazione di un cluster Google Kubernetes Engine per AI Platform Pipelines

AI Platform Pipelines semplifica l'utilizzo di Kubeflow Pipelines con TensorFlow Extended on Google Kubernetes Engine ti consente di evitare la difficoltà di:

  • Crea un cluster GKE
  • Deployment di Kubeflow Pipelines nel cluster GKE
  • Creazione di un bucket Cloud Storage da utilizzare per archiviare gli artefatti della pipeline

Se preferisci, puoi utilizzare AI Platform Pipelines per eseguire il deployment di Kubeflow Pipelines su un cluster esistente su cui non è ancora installato Kubeflow Pipelines. Utilizza questa guida per assicurarti che il tuo cluster sia configurato correttamente per eseguire il deployment delle pipeline Kubeflow ed eseguirle.

Assicurati che il cluster GKE abbia risorse sufficienti per AI Platform Pipelines

Per utilizzare Google Cloud Marketplace per eseguire il deployment di pipeline Kubeflow su una nel cluster GKE, quanto segue deve essere vero:

  • Il cluster deve avere almeno tre 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. 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. Cluster GKE che non dispongono di risorse o autorizzazioni sufficienti sono elencate Cluster non idonei. Ogni cluster non idoneo include una descrizione perché non è possibile installare Kubeflow Pipelines, ad esempio:

Alloca più risorse al tuo cluster GKE

Per installare Kubeflow Pipelines da Google Cloud Marketplace a un progetto esistente GKE, il cluster deve avere almeno tre 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 AI Platform Pipelines.

  1. Aprire i cluster di 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. La Si apre il modulo Aggiungi un nuovo pool di nodi.

  4. Fornisci le seguenti informazioni al 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 aggiungendo pool di nodi a un cluster.

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

  6. Per ogni pool di nodi nella sezione Pool di nodi, ad eccezione di pool di nodi hai creato nel passaggio precedente, fai clic su delete. Viene visualizzata la finestra di dialogo Elimina un pool di nodi 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, verifica che il cluster sia risorse e accesso sufficienti per installare Kubeflow Pipelines 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 a Google Cloud risorse e API:

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 semplificare le pipeline ML e altre risorse GKE, ai carichi di lavoro del cluster per accedere alle risorse Google Cloud del tuo progetto, il tuo cluster all'accesso https://www.googleapis.com/auth/cloud-platform l'ambito di attività. Questo ambito di accesso fornisce l'accesso completo alle risorse e alle API Google Cloud che hai attivato nel tuo progetto. Se concedi questo ambito di accesso che fornisca un accesso eccessivo a Google Cloud, configura l'accesso granulare utilizzando dell'account di servizio.

Usa le istruzioni seguenti per sostituire il pool di nodi del tuo cluster con uno che consente a tutti i carichi di lavoro su questo cluster di accedere a tutte le API Google Cloud siano abilitate nel tuo progetto. Prima di modificare il tuo cluster GKE, discuti queste modifiche con l'amministratore GKE.

  1. Aprire i cluster di 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. La Si apre il modulo Aggiungi un nuovo pool di nodi.

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

    • Numero di nodi: specifica il numero di nodi presenti nel tuo pool di nodi. Il cluster deve avere almeno 3 nodi per installare Kubeflow Pipelines utilizzando Google Cloud Marketplace.
    • Tipo di macchina: specifica Compute Engine tipo di macchina 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 pool di nodi. La creazione del pool di nodi richiede alcuni minuti.

  6. Per ogni pool di nodi nella sezione Pool di nodi, ad eccezione di pool di nodi hai creato nel passaggio precedente, fai clic su delete. Viene visualizzata la finestra di dialogo Elimina un pool di nodi 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, verifica che il cluster sia risorse e accesso sufficienti per installare Kubeflow Pipelines Google Cloud Marketplace.

Configura il tuo cluster GKE con accesso granulare alle API Google Cloud

Segui queste istruzioni per configurare un account di servizio per cluster GKE e sostituisci il pool di nodi del cluster e quella che utilizza 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 questi comandi in Cloud Shell per creare il tuo servizio e concedergli l'accesso sufficiente per eseguire 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. La Si apre il modulo Aggiungi un nuovo pool di nodi.

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

    • Numero di nodi: specifica il numero di nodi presenti nel tuo 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 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 pool di nodi. La creazione del pool di nodi richiede diverse minuti.

  10. Per ogni pool di nodi nella sezione Pool di nodi, ad eccezione di pool di nodi hai creato nel passaggio precedente, fai clic su delete. Viene visualizzata la finestra di dialogo Elimina un pool di nodi 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, verifica che il cluster sia risorse e accesso sufficienti per installare Kubeflow Pipelines Google Cloud Marketplace.

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

Pipeline sviluppate utilizzando l'operatore use_gcp_secret in l'autenticazione dell'SDK Kubeflow Pipelines alle risorse Google Cloud usando un secret Kubernetes.

Utilizza queste istruzioni per creare un account di servizio, concedere l'accesso all'account a le risorse utilizzate dalle pipeline e poi aggiungi l'account di servizio come secret Kubernetes.

  1. Aprire i cluster di 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 che il tuo cluster GKE in cui è stato creato il cluster.
    • CLUSTER_NAME: il nome del tuo cluster GKE.
    • NAMESPACE: lo spazio dei nomi nel tuo file GKE in cui è installato Kubeflow Pipelines.

      Gli spazi dei nomi vengono utilizzati per gestire le risorse in Kubernetes cluster. 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 un cluster Kubeflow Pipelines le risorse e le 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 al tuo account di servizio l'accesso alle risorse Google Cloud, associa ruoli Identity and Access Management all'account di servizio. Segui queste istruzioni per i ruoli IAM nell'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, leggi la guida per la comprensione dei ruoli IAM.

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

    gcloud iam service-accounts keys create ./service-account-key.json \
    --iam-account $SA_NAME@$PROJECT_ID.iam.gserviceaccount.com
    
  8. Configura kubectl per la connessione al tuo cluster, quindi crea 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