Configura un clúster de Google Kubernetes Engine para AI Platform Pipelines

AI Platform Pipelines simplifica la tarea de comenzar a usar Kubeflow Pipelines con TensorFlow Extended en Google Kubernetes Engine, ya que te ahorra los inconvenientes de realizar las siguientes acciones:

  • Crear un clúster de GKE
  • Implementar Kubeflow Pipelines en tu clúster de GKE
  • Crear un bucket de Cloud Storage para almacenar artefactos de las canalizaciones

Si lo prefieres, puedes usar AI Platform Pipelines para implementar Kubeflow Pipelines en un clúster existente que no tenga instalada esta herramienta. Usa esta guía para asegurarte de que tu clúster esté configurado de manera correcta a fin de implementar y ejecutar Kubeflow Pipelines.

Asegúrate de que tu clúster de GKE tenga recursos suficientes para AI Platform Pipelines

Para usar Google Cloud Marketplace a fin de implementar Kubeflow Pipelines en un clúster de GKE, se deben cumplir los siguientes requisitos:

  • Tu clúster debe tener al menos 3 nodos. Cada nodo debe tener al menos 2 CPU y 4 GB de memoria disponibles.
  • El permiso de acceso del clúster debe otorgar acceso completo a todas las API de Cloud o tu clúster debe usar una cuenta de servicio personalizada.
  • El clúster no debe tener instalado Kubeflow Pipelines.

Usa las siguientes instrucciones con el fin de verificar si tu clúster tiene recursos suficientes para instalar AI Platform Pipelines.

  1. Abre AI Platform Pipelines en la consola de Google Cloud.

    Ir a AI Platform Pipelines

  2. En la barra de herramientas de AI Platform Pipelines, haz clic en Instancia nueva. Se abrirá Kubeflow Pipelines en Google Cloud Marketplace.

  3. Haz clic en Configurar. Se abrirá el formulario Implementar Kubeflow Pipelines.

  4. Haz clic en Clúster para expandir la lista. Los clústeres de GKE que no tienen suficientes recursos o permisos se enumeran como clústeres no aptos. Junto con cada clúster no apto, se incluye una descripción del motivo por el que no se puede instalar Kubeflow Pipelines, como se muestra a continuación:

    • El clúster no se ajusta a la aplicación: El clúster no tiene suficientes recursos disponibles para instalar Kubeflow Pipelines. Asigna más recursos al clúster.
    • Permiso de OAuth insuficiente: El clúster no tiene suficientes permisos de acceso a los recursos y las API de Google Cloud para instalar Kubeflow Pipelines. Otórgale más permisos al clúster.

Asigna más recursos al clúster de GKE

Para instalar Kubeflow Pipelines desde Google Cloud Marketplace en un clúster de GKE existente, el clúster debe tener al menos 3 nodos con 2 CPU y 4 GB.

Usa las siguientes instrucciones para reemplazar el grupo de nodos del clúster por uno que tenga suficientes recursos de memoria y CPU para AI Platform Pipelines.

  1. Abre los clústeres de Google Kubernetes Engine en la consola de Google Cloud.

    Ir a los clústeres de GKE

  2. Haz clic en el nombre de tu clúster. Aparecerán los detalles del clúster.

  3. En la barra de herramientas de GKE, haz clic en Agregar grupo de nodos. Se abrirá el formulario Agregar un grupo de nodos nuevo.

  4. Proporciona la siguiente información en el formulario Agregar un grupo de nodos nuevo.

    • Cantidad de nodos: Especifica la cantidad de nodos en tu grupo de nodos. Para instalar Kubeflow Pipelines mediante Google Cloud Marketplace, el clúster debe tener 3 nodos o más.
    • Tipo de máquina: Especifica el tipo de máquina de Compute Engine que se usará en las instancias del grupo de nodos. Selecciona un tipo de máquina con al menos 2 CPU y 4 GB de memoria, como n1-standard-2.

    • Permisos de acceso: Haz clic en Allow full access to all Cloud APIs (Permitir acceso completo a todas las API de Cloud) en Access scopes (Permisos de acceso).

    De lo contrario, configura tu grupo de nodos como desees. Obtén más información sobre cómo agregar grupos de nodos a un clúster.

  5. Haz clic en Crear grupo de nodos. Toma varios minutos que el proceso de creación del grupo de nodos se complete.

  6. En cada grupo de nodos de la sección Grupos de nodos, excepto en el grupo de nodos que creaste en el paso anterior, haz clic en Borrar. Aparecerá el cuadro de diálogo Borrar grupo de nodos para confirmar que deseas borrar este grupo de nodos.

  7. Haz clic en Borrar. Borrar el grupo de nodos toma varios minutos.

  8. Una vez que borraste los grupos de nodos anteriores, verifica que el clúster tenga recursos y permisos de acceso suficientes para instalar Kubeflow Pipelines desde Google Cloud Marketplace.

Otórgale acceso a los recursos y las API de Google Cloud al clúster de GKE

Existen tres maneras de otorgarles acceso a los recursos y las API de Google Cloud a tus canalizaciones de AA:

Cuando implementas AI Platform Pipelines, debes otorgar al clúster de GKE acceso completo a los recursos y las API de Google Cloud, o bien otorgarle acceso a Google Cloud mediante una cuenta de servicio.

Configura el clúster de GKE con acceso completo a las API de Google Cloud

Para facilitar que las canalizaciones de AA y otras cargas de trabajo del clúster de GKE accedan a los recursos de Google Cloud de tu proyecto, configura el clúster con el permiso de acceso https://www.googleapis.com/auth/cloud-platform. Este permiso de acceso proporciona acceso completo a los recursos y las API de Google Cloud que habilitaste en tu proyecto. Si otorgar este permiso de acceso proporciona acceso excesivo a Google Cloud, configura el acceso detallado mediante una cuenta de servicio.

Usa las siguientes instrucciones para reemplazar el grupo de nodos del clúster por uno que permita que todas las cargas de trabajo en este clúster accedan a todas las API de Google Cloud habilitadas en tu proyecto. Antes de cambiar el clúster de GKE, analiza estos cambios con el administrador de GKE.

  1. Abre los clústeres de Google Kubernetes Engine en la consola de Google Cloud.

    Ir a los clústeres de GKE

  2. Haz clic en el nombre de tu clúster. Aparecerán los detalles del clúster.

  3. En la barra de herramientas de GKE, haz clic en Agregar grupo de nodos. Se abrirá el formulario Agregar un grupo de nodos nuevo.

  4. Proporciona la siguiente información en el formulario Agregar un grupo de nodos nuevo.

    • Cantidad de nodos: Especifica la cantidad de nodos en tu grupo de nodos. Para instalar Kubeflow Pipelines mediante Google Cloud Marketplace, el clúster debe tener 3 nodos o más.
    • Tipo de máquina: Especifica el tipo de máquina de Compute Engine que se usará en las instancias del grupo de nodos. Selecciona un tipo de máquina con al menos 2 CPU y 4 GB de memoria, como n1-standard-2.

    • Permisos de acceso: Haz clic en Allow full access to all Cloud APIs (Permitir acceso completo a todas las API de Cloud) en Access scopes (Permisos de acceso).

    De lo contrario, configura tu grupo de nodos como desees. Obtén más información sobre cómo agregar grupos de nodos a un clúster.

  5. Haz clic en Crear grupo de nodos. Toma varios minutos que el proceso de creación del grupo de nodos se complete.

  6. En cada grupo de nodos de la sección Grupos de nodos, excepto en el grupo de nodos que creaste en el paso anterior, haz clic en Borrar. Aparecerá el cuadro de diálogo Borrar grupo de nodos para confirmar que deseas borrar este grupo de nodos.

  7. Haz clic en Borrar. Borrar el grupo de nodos toma varios minutos.

  8. Una vez que borraste los grupos de nodos anteriores, verifica que el clúster tenga recursos y permisos de acceso suficientes para instalar Kubeflow Pipelines desde Google Cloud Marketplace.

Configura el clúster de GKE con acceso detallado a las API de Google Cloud

Usa las siguientes instrucciones a fin de configurar una cuenta de servicio para el clúster de GKE y reemplazar el grupo de nodos del clúster por uno que use tu cuenta de servicio. Si creas una cuenta de servicio, puedes administrar de forma detallada los recursos de Google Cloud a los que tienen acceso las cargas de trabajo en el clúster. Antes de cambiar el clúster de GKE, analiza estos cambios con el administrador de GKE.

  1. Abre una sesión de Cloud Shell.

    Abra Cloud Shell

    Cloud Shell se abrirá en un marco en la parte inferior de la consola de Google Cloud.

  2. Ejecuta los siguientes comandos en Cloud Shell a fin de crear una cuenta de servicio y otorgarle acceso suficiente para ejecutar AI Platform Pipelines. Obtén más información sobre las funciones necesarias para ejecutar AI Platform Pipelines con una cuenta de servicio administrada por el usuario.

    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

    Reemplaza lo siguiente:

    • SERVICE_ACCOUNT_NAME: Es el nombre de la cuenta de servicio que se creará.
    • PROJECT_ID: Es el proyecto de Google Cloud en el que se crea la cuenta de servicio.
  3. Otorga a tu cuenta de servicio acceso a cualquier recurso o API de Google Cloud que requieran tus canalizaciones de AA. Obtén más información sobre las funciones de administración de identidades y accesos y la administración de cuentas de servicio.

  4. En tu cuenta de servicio, otorga a tu cuenta de usuario la función de usuario de cuenta de servicio (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
    

    Reemplaza lo siguiente:

    • SERVICE_ACCOUNT_NAME: Es el nombre de la cuenta de servicio.
    • PROJECT_ID: Es el proyecto de Google Cloud.
    • USERNAME: Es tu nombre de usuario en Google Cloud.
  5. Abre los clústeres de Google Kubernetes Engine en la consola de Google Cloud.

    Ir a los clústeres de GKE

  6. Haz clic en el nombre de tu clúster. Aparecerán los detalles del clúster.

  7. En la barra de herramientas de GKE, haz clic en Agregar grupo de nodos. Se abrirá el formulario Agregar un grupo de nodos nuevo.

  8. Proporciona la siguiente información en el formulario Agregar un grupo de nodos nuevo.

    • Cantidad de nodos: Especifica la cantidad de nodos en tu grupo de nodos. Para instalar Kubeflow Pipelines mediante Google Cloud Marketplace, el clúster debe tener 3 nodos o más.
    • Tipo de máquina: Especifica el tipo de máquina de Compute Engine que se usará en las instancias del grupo de nodos. Selecciona un tipo de máquina con al menos 2 CPU y 4 GB de memoria, como n1-standard-2.

    • Cuenta de servicio: Selecciona la cuenta de servicio que creaste en un paso anterior.

    De lo contrario, configura tu grupo de nodos como desees. Obtén más información sobre cómo agregar grupos de nodos a un clúster.

  9. Haz clic en Crear grupo de nodos. Toma varios minutos que el proceso de creación del grupo de nodos se complete.

  10. En cada grupo de nodos de la sección Grupos de nodos, excepto en el grupo de nodos que creaste en el paso anterior, haz clic en Borrar. Aparecerá el cuadro de diálogo Borrar grupo de nodos para confirmar que deseas borrar este grupo de nodos.

  11. Haz clic en Borrar. Borrar el grupo de nodos toma varios minutos.

  12. Una vez que borraste los grupos de nodos anteriores, verifica que el clúster tenga recursos y permisos de acceso suficientes para instalar Kubeflow Pipelines desde Google Cloud Marketplace.

Usa un secreto de Kubernetes para otorgarle acceso a los recursos y las API de Google Cloud al clúster

Las canalizaciones que se desarrollan mediante el operador use_gcp_secret en el SDK de Kubeflow Pipelines se autentican en los recursos de Google Cloud mediante un secreto de Kubernetes.

Usa estas instrucciones para crear una cuenta de servicio, otorgarle acceso a los recursos que usan tus canalizaciones y, luego, agregarla a tu clúster como un secreto de Kubernetes.

  1. Abre los clústeres de Google Kubernetes Engine en la consola de Google Cloud.

    Ir a los clústeres de GKE

  2. En la fila de tu clúster, busca su nombre y su zona.

  3. Abre una sesión de Cloud Shell.

    Abra Cloud Shell

    Cloud Shell se abrirá en un marco en la parte inferior de la consola de Google Cloud. Usa Cloud Shell para completar el resto de este proceso.

  4. Configura las siguientes variables de entorno:

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

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el proyecto de Google Cloud en el que se creó el clúster de GKE.
    • ZONE: Es la zona de Google Cloud en la que se creó el clúster de GKE.
    • CLUSTER_NAME: Es el nombre del clúster de GKE.
    • NAMESPACE: Es el espacio de nombres en el clúster de GKE en el cual se instala Kubeflow Pipelines.

      Los espacios de nombres se usan para administrar recursos en clústeres grandes de Kubernetes. Si tu clúster no usa espacios de nombres, ingresa configuración predeterminada como kubernetes-namespace.

    • SERVICE_ACCOUNT_NAME: Es el nombre de la cuenta de servicio que se creará para que el clúster de Kubeflow Pipelines acceda a los recursos y las API de Google Cloud.

  5. Crea una cuenta de servicio para el clúster.

    gcloud iam service-accounts create $SA_NAME \
      --display-name $SA_NAME --project "$PROJECT_ID"
    
  6. Para otorgarle acceso a los recursos de Google Cloud a la cuenta de servicio, vincula las funciones de administración de identidades y accesos a la cuenta de servicio. Usa las siguientes instrucciones para otorgar funciones de IAM a la cuenta de servicio. Llama a este comando una vez por cada función que desees otorgarle a la cuenta de servicio.

    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member=serviceAccount:$SA_NAME@$PROJECT_ID.iam.gserviceaccount.com \
      --role=iam-role
    
    • iam-role: Es la función de IAM que se otorgará a la cuenta de servicio. Por ejemplo, roles/storage.admin otorga control total sobre los objetos y depósitos de Cloud Storage en tu proyecto.

      Si deseas obtener más información sobre las funciones de IAM, lee la guía para comprender las funciones de IAM.

  7. Crea una clave privada para tu cuenta de servicio en el directorio actual.

    gcloud iam service-accounts keys create ./service-account-key.json \
    --iam-account $SA_NAME@$PROJECT_ID.iam.gserviceaccount.com
    
  8. Configura kubectl para establecer una conexión a tu clúster y, luego, crea el secreto de 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. Limpia la clave privada de la cuenta de servicio.

    rm ./service-account-key.json