Configurer un cluster Google Kubernetes Engine pour AI Platform Pipelines

AI Platform Pipelines facilite l'implémentation de Kubeflow Pipelines avec TensorFlow Extended sur Google Kubernetes Engine, en vous épargnant les difficultés suivantes :

  • Créer un cluster GKE
  • Déployer Kubeflow Pipelines sur votre cluster GKE
  • Créer un bucket Cloud Storage à utiliser pour stocker les artefacts de pipelines

Si vous préférez, vous pouvez utiliser AI Platform Pipelines pour déployer Kubeflow Pipelines sur un cluster existant sur lequel il n'est pas déjà installé. Ce guide vous permet de vérifier que votre cluster est correctement configuré pour déployer et exécuter Kubeflow Pipelines.

Vérifier que votre cluster GKE dispose de suffisamment de ressources pour AI Platform Pipelines

Pour déployer Kubeflow Pipelines sur un cluster GKE à l'aide de Google Cloud Marketplace, les conditions suivantes doivent être remplies :

  • Votre cluster doit comporter au moins trois nœuds. Chaque nœud doit disposer d'au moins deux processeurs et de 4 Go de mémoire disponible.
  • Le niveau d'accès du cluster doit accorder un accès complet à toutes les API Cloud, ou votre cluster doit utiliser un compte de service personnalisé.
  • Kubeflow Pipelines ne doit pas déjà être installé sur le cluster.

Suivez les instructions ci-dessous pour vérifier si votre cluster dispose de suffisamment de ressources pour installer AI Platform Pipelines.

  1. Ouvrez AI Platform Pipelines dans Google Cloud Console.

    Accéder à AI Platform Pipelines

  2. Dans la barre d'outils AI Platform Pipelines, cliquez sur Nouvelle instance. Kubeflow Pipelines s'ouvre dans Google Cloud Marketplace.

  3. Cliquez sur Configurer. Le formulaire Deploy Kubeflow Pipelines (Déployer Kubeflow Pipelines) s'affiche.

  4. Cliquez sur Cluster pour développer la liste. Les clusters GKE qui ne disposent pas de suffisamment de ressources ou d'autorisations sont répertoriés en tant que Ineligible clusters (Clusters non éligibles). Chaque cluster non éligible inclut une description des raisons pour lesquelles Kubeflow Pipelines ne peut pas être installé. Exemples :

    • Cluster does not fit the application (Le cluster ne correspond pas à l'application) : votre cluster ne dispose pas de suffisamment de ressources disponibles pour installer Kubeflow Pipelines. Allouez davantage de ressources à votre cluster.
    • Insufficient OAuth scope (Niveau d'accès OAuth insuffisant) : votre cluster ne dispose pas d'un accès suffisant aux ressources et aux API Google Cloud pour installer Kubeflow Pipelines. Accordez plus d'autorisations à votre cluster.

Allouer davantage de ressources à votre cluster GKE

Pour installer Kubeflow Pipelines sur un cluster GKE existant à partir de Google Cloud Marketplace, votre cluster doit comporter au moins trois nœuds disposant de deux processeurs et de 4 Go de mémoire disponible.

Suivez les instructions ci-dessous pour remplacer le pool de nœuds de votre cluster par un pool disposant de suffisamment de processeurs et de mémoire pour AI Platform Pipelines.

  1. Ouvrez les clusters Google Kubernetes Engine dans Google Cloud Console.

    Accéder aux clusters GKE

  2. Cliquez sur le nom de votre cluster. Les détails du cluster s'affichent.

  3. Dans la barre d'outils GKE, cliquez sur Ajouter un pool de nœuds. Le formulaire Add a new node pool (Ajouter un pool de nœuds) s'affiche.

  4. Indiquez les informations ci-dessous dans le formulaire Add a new node pool (Ajouter un pool de nœuds).

    • Nombre de nœuds : spécifiez le nombre de nœuds dans votre pool de nœuds. Votre cluster doit disposer d'au moins trois nœuds pour installer Kubeflow Pipelines à l'aide de Google Cloud Marketplace.
    • Type de machine : spécifiez le type de machine Compute Engine à utiliser pour les instances du pool de nœuds. Sélectionnez un type de machine avec au moins deux processeurs et 4 Go de mémoire (par exemple, n1-standard-2).

    • Niveaux d'accès : cliquez sur Allow full access to all Cloud APIs (Autoriser l'accès complet à l'ensemble des API Cloud) dans la section Access scopes (Niveaux d'accès).

    Sinon, configurez le pool de nœuds comme vous le souhaitez. Découvrez comment ajouter des pools de nœuds à un cluster.

  5. Cliquez sur Créer un pool de nœuds. La création du pool de nœuds prend plusieurs minutes.

  6. Pour chaque pool de nœuds de la section Pools de nœuds, à l'exception de celui que vous avez créé à l'étape précédente, cliquez sur Supprimer. La boîte de dialogue Supprimer un pool de nœuds s'affiche pour confirmer la suppression de ce pool de nœuds.

  7. Cliquez sur Supprimer. La suppression du pool de nœuds prend plusieurs minutes.

  8. Après avoir supprimé les anciens pools de nœuds, vérifiez que votre cluster dispose des ressources et des accès suffisants pour installer Kubeflow Pipelines à partir de Google Cloud Marketplace.

Accorder à votre cluster GKE l'accès aux ressources et aux API Google Cloud

Vous pouvez accorder l'accès aux ressources et aux API Google Cloud à vos pipelines de ML de trois façons :

Lors du déploiement d'AI Platform Pipelines, vous devez accorder à votre cluster GKE un accès complet aux ressources et aux API Google Cloud, ou accorder à votre cluster l'accès à Google Cloud à l'aide d'un compte de service.

Configurer votre cluster GKE avec un accès complet aux API Google Cloud

Pour faciliter l'accès de vos pipelines de ML et des autres charges de travail du cluster GKE aux ressources Google Cloud de votre projet, configurez votre cluster sur le niveau d'accès https://www.googleapis.com/auth/cloud-platform. Ce niveau d'accès offre un accès complet aux ressources Google Cloud et API que vous avez activées dans votre projet. Si ce niveau d'accès fournit un accès excessif à Google Cloud, configurez un accès précis à l'aide d'un compte de service.

Suivez les instructions ci-dessous pour remplacer le pool de nœuds de votre cluster par un autre qui permet à toutes les charges de travail de ce cluster d'accéder à toutes les API Google Cloud activées dans votre projet. Avant de modifier votre cluster GKE, discutez-en avec votre administrateur GKE.

  1. Ouvrez les clusters Google Kubernetes Engine dans Google Cloud Console.

    Accéder aux clusters GKE

  2. Cliquez sur le nom de votre cluster. Les détails du cluster s'affichent.

  3. Dans la barre d'outils GKE, cliquez sur Ajouter un pool de nœuds. Le formulaire Add a new node pool (Ajouter un pool de nœuds) s'affiche.

  4. Indiquez les informations ci-dessous dans le formulaire Add a new node pool (Ajouter un pool de nœuds).

    • Nombre de nœuds : spécifiez le nombre de nœuds dans votre pool de nœuds. Votre cluster doit disposer d'au moins trois nœuds pour installer Kubeflow Pipelines à l'aide de Google Cloud Marketplace.
    • Type de machine : spécifiez le type de machine Compute Engine à utiliser pour les instances du pool de nœuds. Sélectionnez un type de machine avec au moins deux processeurs et 4 Go de mémoire (par exemple, n1-standard-2).

    • Niveaux d'accès : cliquez sur Allow full access to all Cloud APIs (Autoriser l'accès complet à l'ensemble des API Cloud) dans la section Access scopes (Niveaux d'accès).

    Sinon, configurez le pool de nœuds comme vous le souhaitez. Découvrez comment ajouter des pools de nœuds à un cluster.

  5. Cliquez sur Créer un pool de nœuds. La création du pool de nœuds prend plusieurs minutes.

  6. Pour chaque pool de nœuds de la section Pools de nœuds, à l'exception de celui que vous avez créé à l'étape précédente, cliquez sur Supprimer. La boîte de dialogue Supprimer un pool de nœuds s'affiche pour confirmer la suppression de ce pool de nœuds.

  7. Cliquez sur Supprimer. La suppression du pool de nœuds prend plusieurs minutes.

  8. Après avoir supprimé les anciens pools de nœuds, vérifiez que votre cluster dispose des ressources et des accès suffisants pour installer Kubeflow Pipelines à partir de Google Cloud Marketplace.

Configurer votre cluster GKE avec un accès précis aux API Google Cloud

Utilisez les instructions suivantes pour configurer un compte de service pour votre cluster GKE et remplacer le pool de nœuds de votre cluster par un autre qui utilise votre compte de service. En créant un compte de service, vous pouvez gérer avec précision les ressources Google Cloud auxquelles les charges de travail de votre cluster ont accès. Avant de modifier votre cluster GKE, discutez-en avec votre administrateur GKE.

  1. Ouvrez une session Cloud Shell.

    Ouvrir Cloud Shell

    Cloud Shell s'ouvre dans un cadre au bas de Google Cloud Console.

  2. Exécutez les commandes suivantes dans Cloud Shell pour créer votre compte de service et lui accorder un accès suffisant pour exécuter AI Platform Pipelines. Découvrez les rôles requis pour exécuter AI Platform Pipelines avec un compte de service géré par l'utilisateur.

    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

    Remplacez les éléments suivants :

    • SERVICE_ACCOUNT_NAME : nom du compte de service à créer.
    • PROJECT_ID : projet Google Cloud dans lequel le compte de service est créé.
  3. Accordez à votre compte de service l'accès à toutes les ressources ou API Google Cloud requises par vos pipelines de ML. Apprenez-en plus sur les rôles Identity and Access Management (IAM) et découvrez comment gérer les comptes de service.

  4. Attribuez à votre compte utilisateur le rôle Utilisateur du compte de service (iam.serviceAccountUser).

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

    Remplacez les éléments suivants :

    • SERVICE_ACCOUNT_NAME : nom de votre compte de service.
    • PROJECT_ID : votre projet Google Cloud.
    • USERNAME : votre nom d'utilisateur sur Google Cloud.
  5. Ouvrez les clusters Google Kubernetes Engine dans Google Cloud Console.

    Accéder aux clusters GKE

  6. Cliquez sur le nom de votre cluster. Les détails du cluster s'affichent.

  7. Dans la barre d'outils GKE, cliquez sur Ajouter un pool de nœuds. Le formulaire Add a new node pool (Ajouter un pool de nœuds) s'affiche.

  8. Indiquez les informations ci-dessous dans le formulaire Add a new node pool (Ajouter un pool de nœuds).

    • Nombre de nœuds : spécifiez le nombre de nœuds dans votre pool de nœuds. Votre cluster doit disposer d'au moins trois nœuds pour installer Kubeflow Pipelines à l'aide de Google Cloud Marketplace.
    • Type de machine : spécifiez le type de machine Compute Engine à utiliser pour les instances du pool de nœuds. Sélectionnez un type de machine avec au moins deux processeurs et 4 Go de mémoire (par exemple, n1-standard-2).

    • Compte de service : sélectionnez le compte de service que vous avez créé précédemment.

    Sinon, configurez le pool de nœuds comme vous le souhaitez. Découvrez comment ajouter des pools de nœuds à un cluster.

  9. Cliquez sur Créer un pool de nœuds. La création du pool de nœuds prend plusieurs minutes.

  10. Pour chaque pool de nœuds de la section Pools de nœuds, à l'exception de celui que vous avez créé à l'étape précédente, cliquez sur Supprimer. La boîte de dialogue Supprimer un pool de nœuds s'affiche pour confirmer la suppression de ce pool de nœuds.

  11. Cliquez sur Supprimer. La suppression du pool de nœuds prend plusieurs minutes.

  12. Après avoir supprimé les anciens pools de nœuds, vérifiez que votre cluster dispose des ressources et des accès suffisants pour installer Kubeflow Pipelines à partir de Google Cloud Marketplace.

Utiliser un secret Kubernetes pour accorder à votre cluster l'accès aux ressources et aux API Google Cloud

Les pipelines développés à l'aide de l'opérateur use_gcp_secret dans le SDK Kubeflow Pipelines s'authentifient auprès des ressources Google Cloud à l'aide d'un secret Kubernetes.

Suivez les instructions ci-dessous pour créer un compte de service, lui accorder l'accès aux ressources utilisées par vos pipelines et l'ajouter à votre cluster en tant que secret Kubernetes.

  1. Ouvrez les clusters Google Kubernetes Engine dans Google Cloud Console.

    Accéder aux clusters GKE

  2. Sur la ligne correspondant à votre cluster, recherchez son nom et sa zone.

  3. Ouvrez une session Cloud Shell.

    Ouvrir Cloud Shell

    Cloud Shell s'ouvre dans un cadre au bas de Google Cloud Console. Utilisez Cloud Shell pour effectuer le reste de cette procédure.

  4. Définissez les variables d'environnement suivantes.

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

    Remplacez les éléments suivants :

    • PROJECT_ID : projet Google Cloud dans lequel votre cluster GKE a été créé.
    • ZONE : zone Google Cloud dans laquelle votre cluster GKE a été créé.
    • CLUSTER_NAME : nom de votre cluster GKE.
    • NAMESPACE : espace de noms du cluster GKE dans lequel Kubeflow Pipelines est installé.

      Les espaces de noms permettent de gérer les ressources des clusters Kubernetes volumineux. Si votre cluster n'utilise pas d'espaces de noms, définissez kubernetes-namespace sur default.

    • SERVICE_ACCOUNT_NAME : nom du compte de service à créer pour que votre cluster Kubeflow Pipelines puisse accéder aux ressources et aux API Google Cloud.

  5. Créez un compte de service pour votre cluster.

    gcloud iam service-accounts create $SA_NAME \
      --display-name $SA_NAME --project "$PROJECT_ID"
    
  6. Pour autoriser votre compte de service à accéder aux ressources Google Cloud, associez-lui des rôles Identity and Access Management. Suivez les instructions ci-dessous pour attribuer des rôles IAM à votre compte de service. Appelez cette commande une fois pour chaque rôle que vous souhaitez attribuer à votre compte de service.

    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member=serviceAccount:$SA_NAME@$PROJECT_ID.iam.gserviceaccount.com \
      --role=iam-role
    
    • iam-role : rôle IAM à attribuer à votre compte de service. Par exemple, roles/storage.admin vous permet de contrôler totalement les buckets et les objets Cloud Storage de votre projet.

      Pour en savoir plus sur les rôles IAM, consultez le guide Comprendre les rôles IAM.

  7. Créez une clé privée pour votre compte de service dans le répertoire actuel.

    gcloud iam service-accounts keys create ./service-account-key.json \
    --iam-account $SA_NAME@$PROJECT_ID.iam.gserviceaccount.com
    
  8. Configurez kubectl pour vous connecter à votre cluster, puis créez le 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. Procédez à un nettoyage afin de supprimer la clé privée du compte de service.

    rm ./service-account-key.json