Separa las operaciones y el desarrollo cuando se usan notebooks administrados por el usuario: Implementación

En este documento, se describe cómo implementar el administrador de notebooks para administrar notebooks administrados por el usuario de Vertex AI Workbench. El código para esta implementación está disponible en GitHub.

El documento es parte de una serie que incluye los siguientes documentos:

  • Descripción general, en que se describe una solución que puedes usar para implementar el administrador de notebooks y las IU extendidas de notebooks.
  • Implementación (este documento), que guía a los administradores de TI en la implementación del administrador de notebooks y las IU extendidas de notebooks.
  • Uso, que guía a los profesionales de datos en el uso las IU extendidas de notebooks y el administrador de notebooks.
  • Solución de problemas, que describe posibles problemas y las soluciones sugeridas.

Objetivos

  • Configurar un entorno que limite el acceso de la consola de Google Cloud para los profesionales de datos, pero que permita a los usuarios interactuar con los servicios de Google Cloud a través de una IU extendida de notebooks.
  • Configurar el flujo de OAuth 2.0 para la aplicación web del administrador de notebooks.
  • Implementar el administrador de notebooks.
  • Crear IU extendidas de notebooks para los profesionales de datos.
  • Proporcionar a los profesionales de datos un vínculo al administrador de notebooks.

Costos

En este documento, usarás los siguientes componentes facturables de Google Cloud:

Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios. Es posible que los usuarios nuevos de Google Cloud califiquen para obtener una prueba gratuita.

Antes de comenzar

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  4. Habilita las API de Notebooks and Cloud Storage.

    Habilita las API

  5. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  6. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  7. Habilita las API de Notebooks and Cloud Storage.

    Habilita las API

Prepare el entorno

  1. Abre Cloud Shell.

  2. Clona el repositorio que contiene el código para este instructivo:

    git clone "https://github.com/GoogleCloudPlatform/notebooks-extended-uis.git"
    

    Para obtener más información, consulta el repositorio de GitHub.

  3. Si no tienes Terraform configurado para Google Cloud, sigue las instrucciones en Comienza a usar el proveedor de Google a fin de instalar Terraform con el proveedor de Google Cloud.

Configura el flujo de OAuth 2.0 para la aplicación web del administrador de notebooks

Este procedimiento se realiza de forma manual en la consola de Google Cloud para mitigar los riesgos de abuso.

  1. Ve a la consola de Google Cloud.

    Ir a la consola de Google Cloud

  2. Para configurar una pantalla de consentimiento, sigue las instrucciones en Configura la pantalla de consentimiento de OAuth.

    Esto define la experiencia del usuario cuando los usuarios se autentican en el administrador de notebooks y autorizan el acceso al permiso. Si es posible, recomendamos configurar el tipo de usuario como interno.

  3. Crea un ID de cliente web de OAuth 2.0. Esto te permite otorgar al administrador de notebooks acceso a la API de Vertex AI en nombre del usuario y, al mismo tiempo, mantener la privacidad de las credenciales. A fin de crear un cliente de OAuth 2.0, sigue los pasos que se indican en Configura OAuth 2.0 para la aplicación web.

  4. Copia el ID de cliente desde la página de la aplicación web en la consola de Google Cloud. El ID de cliente es similar al siguiente:

    123456789-a1b2c3d4e5.apps.googleusercontent.com

    Terraform usa este ID de cliente para actualizar el archivo config.tpl cuando implementa la aplicación.

Para obtener más información, incluida una lista de variables de Terraform, consulta el archivo readme del repositorio de GitHub.

Implementa el administrador de notebooks

El administrador de notebooks es una página HTML que puedes implementar en cualquier servicio de Google Cloud, como Cloud Run, que puede entregar páginas web compatibles con los Controles del servicio de VPC. En esta solución, la opción de hosting predeterminada es Cloud Storage.

  1. Cloud Shell, ve al directorio del repositorio:

    cd notebooks-extended-uis
    
  2. Abre el archivo terraforms.tfvars en un editor de texto.

    Para obtener información sobre las variables obligatorias de este archivo, consulta Entradas en el repositorio de GitHub. El repositorio proporciona un archivo terraforms.tfvars de ejemplo:

    client_id             = "123456789-1a2b3c4def5ghi6jkl.apps.googleusercontent.com"
    project               = "example-project"
    console_url           = "example-bucket"
    deploy_consoles       = "true"
  3. En el archivo terraform.tfvars, configura la variable client_id mediante el valor que copiaste en la sección anterior.

  4. Establece el valor de la variable console_url en un nombre único.

    Este valor se usa como el nombre de un bucket de Cloud Storage, por lo que debe ser único a nivel global.

  5. Guarda el archivo terraform.tfvars y ciérralo.

  6. Implementa la infraestructura:

    terraform apply
    

La secuencia de comandos de Terraform implementa el administrador de notebooks si haces lo siguiente:

  1. Crea un bucket en Cloud Storage. El nombre del bucket deriva del valor de la variable console_url de Terraform.
  2. Usa archivos de plantilla *.tpl para crear archivos estáticos como index.html, 404.html y config.js.
  3. Copia todos los archivos estáticos en el bucket de Cloud Storage. Los archivos .tpl contienen variables, incluidas las siguientes opciones:

    • client_id: se encuentra en el archivo config.tpl. Este valor es obligatorio para el flujo de OAuth 2.0. Cuando configuras el valor en el archivo tfvars, el valor config.tpl se usa en el archivo config.tpl para crear un archivo config.js.
    • relative_path: se encuentra en los archivos index.tpl y 404.tpl. Este valor define dónde encontrar el archivo estático. Se basa en las variables definidas en el archivo main.tf. Este valor es obligatorio para cargar archivos estáticos de manera local.

Después de que Terraform complete estos pasos, el administrador de notebooks estará disponible en la siguiente URL:

https://storage.googleapis.com/BUCKET_NAME/index.html

BUCKET_NAME es el nombre del bucket de Cloud Storage en el que implementaste el administrador de notebooks. Debe coincidir con el valor console_url que está en el archivo terraform.tfvars.

La secuencia de comandos de Terraform también te permite usar un bucket estático con tu propio nombre de dominio, pero debes otorgar acceso a una dirección IP adicional. Para obtener más detalles, consulta el archivo readme en el repositorio de GitHub.

Implementa IU extendidas de notebooks

En la solución que se describe en este instructivo, se supone que implementas las IU extendidas de notebooks en nombre de los usuarios finales. Esta sección es opcional y sirve como ejemplo de instrucciones para hacerlo. Puedes integrar este ejemplo en tus propios procesos para crear instancias de notebooks administrados por el usuario, ya sea que lo hagas al mismo tiempo que cuando implementas el administrador de notebooks o por separado. En el ejemplo, se muestra cómo crear una instancia de notebook administrada por el usuario con la IU de notebooks extendida mediante una imagen de contenedor personalizada. La imagen incluye características como las siguientes:

  • Las extensiones de Cloud Storage y BigQuery proporcionan funciones interactivas similares a las funciones de la consola de Google Cloud.
  • La compatibilidad con Git permite que los usuarios almacenen y administren sus notebooks administrados y archivos locales.
  • El ejecutor de notebooks te permite ejecutar notebooks administrados por el usuario de extremo a extremo en segundo plano.

La IU extendida de los notebooks usa complementos de extensión de Google Cloud y BigQuery para JupyterLab. Los complementos se habilitan cuando la clave enable-extended-ui se configura como True en los metadatos de la instancia de los notebooks administrados por el usuario. Para la arquitectura descrita en este documento, la clave se establece en la secuencia de comandos de Terraform que implementa la instancia de ejemplo, como se muestra en la siguiente lista:

resource "google_notebooks_instance" "instance" {
  count         = contains(["true", "yes", "1"], lower(var.deploy_consoles)) ? 1 : 0
  project       = var.project
  name          = "example-notebook-console"
  machine_type  = "n2-standard-2"
  location      = "us-west1-b"
  metadata = {
    enable-extended-ui = "True"
  }
  vm_image {
    project      = "deeplearning-platform-release"
    image_family = "common-cpu"
  }
}

La secuencia de comandos main.tf implementa una instancia de notebook administrada por el usuario como ejemplo. Puedes adaptar esta parte de la secuencia de comandos para crear tu grupo de IU extendidas de notebooks en función de los requisitos de hardware, software y acelerador.

Esta solución no aplica ningún permiso de IAM. Si las políticas de tu empresa impiden que otros usuarios accedan a los notebooks administrados por el usuario, debes usar funciones de seguridad adicionales, como Acceso al SO, acceso de usuario único o permisos de IAM. La configuración de acceso a los notebooks administrados por el usuario está fuera del alcance de esta solución.

Proporciona acceso a los profesionales de datos

Antes de que los usuarios puedan usar el administrador de notebooks, debes hacer lo siguiente:

  1. Publica tu aplicación.

    Este paso permite a los usuarios acceder al extremo de tu aplicación y solo es necesario para aplicaciones no internas. Realiza este paso desde la pantalla de consentimiento de OAuth. Para obtener más información, consulta Configura tu pantalla de consentimiento de OAuth.

  2. Proporciona a los usuarios el vínculo al administrador de notebooks.

    Esto permite que los usuarios accedan al administrador de notebooks desde un cliente autorizado por los perímetros de los Controles del servicio de VPC. Cuando usas el parámetro predeterminado deployment_context, el vínculo es similar al siguiente:

    https://storage.googleapis.com/BUCKET_NAME/index.html?projectId=PROJECT_ID

Para obtener más información sobre cómo ejecutar los comandos de Terraform, consulta el archivo README de GitHub.

Selecciona opciones de hosting para el administrador de notebooks

La solución descrita en este documento aloja el administrador de notebooks en Cloud Storage porque la aplicación es una página web estática. Cloud Storage facilita la implementación de la solución. La solución es compatible con los Controles del servicio de VPC y proporciona opciones regionales.

Como puedes ver en el Repositorio de GitHub, la página estática es parte de una carpeta Docker con una configuración Nginx. Esa jerarquía de carpetas es independiente de la implementación en Cloud Storage, pero proporciona flexibilidad en caso de que desees expandir las capacidades del administrador de notebooks y necesitas compilar una imagen de contenedor.

Por ejemplo, es posible que desees agregar un servidor de backend personalizado para implementarlo en otra oferta de Google Cloud que admita contenedores. Incluye las siguientes opciones: Cloud Run, una implementación interna en Google Kubernetes Engine (GKE) o un grupo de instancias administrado con imágenes de contenedor.

Si no usas la opción de implementación predeterminada en Cloud Storage, debes crear los archivos index.html, 404.html y config.js a partir de los archivos .tpl. Puedes crear esos archivos de forma manual si reemplazas las Variables con plantillas o mediante una secuencia de comandos de Terraform similar a la que se proporciona en el archivo Repositorio de GitHub.

Configura un host de bastión

El acceso al administrador de notebooks y a las IU extendidas de notebooks requiere un cliente que esté dentro del mismo perímetro que esas aplicaciones. Por ejemplo, algunas empresas usan un enfoque de host de bastión con escritorios remotos.

Otorga acceso a las URLs

Para asegurarte de que los usuarios puedan pasar por el flujo de autorización de OAuth 2.0, interactuar con la API de Vertex AI y acceder a BigQuery desde Vertex AI Workbench, debes otorgar acceso a las siguientes URLs externas en las reglas de firewall de tu organización.

Es posible que debas otorgar acceso a URLs adicionales que pertenezcan al proveedor de identidad a fin de admitir el flujo de acceso del navegador.

La capacidad de un usuario para realizar tareas con la API de Vertex AI depende de los permisos de IAM que configures en tu proyecto y organización. El administrador de notebooks no aplica ninguna opción de seguridad porque es solo una herramienta del cliente.

URL externa Descripción
*.accounts.google.com Se usa para el flujo de OAuth 2.0.
*.accounts.youtube.com Se usa para el flujo de OAuth 2.0.
*.gstatic.com Se usa para el flujo de OAuth 2.0 y un ícono de página.
*.googleusercontent.com Permite notebooks.googleusercontent.com de forma implícita.
*.datalab.cloud.google.com Se usa para obtener la URL del proxy de un notebook.
content-cloudresourcemanager.googleapis.com Se usa para enumerar proyectos.
content-notebooks.googleapis.com Se usa cuando se llama a acciones en notebooks.
https://apis.google.com/js/googleapis.proxy.js.* Se usa para el flujo de OAuth 2.0.
https://apis.google.com/_/scs/apps-static/.* Se usa para el flujo de OAuth 2.0.
*.notebooks.googleapis.com Se usa cuando se llama a acciones en notebooks.
*.notebooks.cloud.google.com Lo usa el servicio de visualizador de Vertex AI Workbench.
cdn.jsdelivr.net/npm Habilita el complemento de BigQuery para que funcione.

¿Qué sigue?