Guía de configuración de infraestructura para ImgStudio
0 Obtener acceso a los modelos de Imagen
- En general, para Vertex: en la consola (¡nuevo!)
- Vaya a
Vertex AI
> Enable all recommended APIs
- Deben incluir: API Vertex AI, API de almacenamiento en la nube
- Para Imagen Generation: comuníquese con sus contactos de Google Cloud para obtener acceso a los modelos de edición de Imagen 3: Imagen 3 Generate (imagen-3.0-generate-001) e Imagen 3 Generate Fast (imagen-3.0-fast-generate-001)
- Para edición de imágenes : comuníquese con sus contactos de Google Cloud para solicitar acceso a la vista previa o recibir una notificación cuando esté GA.
- Para la segmentación de vértices : también necesitará acceso a este nuevo modelo cuando utilice la edición
1 Crear depósitos de Cloud Storage
- Especificaciones: Regional en la región deseada (por ejemplo:
europe-west9
en París) - Crea 3 cubos
- Contenido de salida generado sin procesar :
YOUR_COMPANY-imgstudio-output
- Contenido compartido :
YOUR_COMPANY-imgstudio-library
- Depósito de archivos de configuración :
YOUR_COMPANY-imgstudio-export-config
- Aquí cargue
export-fields-options.json
un archivo de configuración específico para su uso del que puede encontrar un ejemplo en el repositorio, su propósito es configurar los metadatos deseados que desea configurar para su contenido generado. - En este archivo, para cada campo (por ejemplo: contextAuthorTeam, contextTargetPlatform, contextAssociatedBrand, contextCollection), solo puede cambiar el ID del campo (por ejemplo:
“contextAuthorTeam”
), su etiqueta (por ejemplo: “In which team are you?”
) , su nombre (ej: “Associated team(s)”
), su etiqueta isMandatory (ej: true
) y finalmente sus opciones - ¡Atención! El ID y los valores de las opciones solo deben ser letras, sin espacios, sin caracteres especiales, comenzando con una letra minúscula.
2 Configurar el activador de Cloud Build
- Nombre:
YOUR_COMPANY-imgstudio
- Evento:
Manual invocation
- Fuente:
- Vaya al repositorio público https://github.com/aduboue/img-studio
- Supervise los nuevos lanzamientos para mantenerse actualizado: haga clic en
Watch
> Custom
> Releases
> Aplicar - Utilice el botón superior derecho para configurar una bifurcación de GitHub desde el repositorio, que creará un repositorio de copia en su propia cuenta de GitHub.
- De vuelta en Cloud Build, inicie sesión en su cuenta de GitHub y luego seleccione el repositorio recién creado.
- Configuración:
Cloud Build configuration file (yaml or json)
- Ubicación del archivo de configuración de Cloud Build:
/cloudbuild.yaml
- Introduzca 7 variables de sustitución:
-
_NEXT_PUBLIC_EXPORT_FIELDS_OPTIONS_URI
- El URI del archivo JSON de configuración en su depósito.
- Ej:
gs://YOUR_COMPANY-imgstudio-export-config/export-fields-options.json
-
_NEXT_PUBLIC_GCS_BUCKET_LOCATION
- La región seleccionada para sus depósitos de GCS
- Ej:
europe-west9
-
_NEXT_PUBLIC_VERTEX_API_LOCATION
- La región que desea utilizar para las API de VertexAI
- Ej:
europe-west9
-
_NEXT_PUBLIC_GEMINI_MODEL
= gemini-1.5-flash-001
-
_NEXT_PUBLIC_OUTPUT_BUCKET
- El nombre del depósito de contenido de salida generado sin procesar.
- Ej:
YOUR_COMPANY-imgstudio-output
-
_NEXT_PUBLIC_TEAM_BUCKET
- El nombre del depósito de contenido compartido.
- Ej:
YOUR_COMPANY-imgstudio-library
-
_NEXT_PUBLIC_PRINCIPAL_TO_USER_FILTERS
- Las secciones de la dirección de correo electrónico de sus usuarios utilizadas para iniciar sesión a través de IAP que deberán eliminarse para obtener su ID de usuario, separadas por comas
- Ej: mi dirección de correo electrónico es '[email protected]', el valor a establecer sería
admin-,@company.com
para que se pueda extraer el ID de usuario jdupont.
-
_NEXT_PUBLIC_EDIT_ENABLED
(¡nuevo!)- Permitir habilitar funciones de edición, configurarlo en '
false
' si aún no tienes acceso
-
_NEXT_PUBLIC_EDIT_MODEL
(¡nuevo!)- Solo es obligatorio si Editar está habilitado
- Nombre del servicio para el modelo de edición, cuando tenga acceso a él
-
_NEXT_PUBLIC_SEG_MODEL
(¡nuevo!)- Solo es obligatorio si Editar está habilitado
- Nombre del servicio para el modelo Vertex Segmentation, cuando obtiene acceso a él
- Cuenta de servicio: seleccione la cuenta de servicio Cloud Build predeterminada ya existente
[email protected]
- Es posible que desee comprobar que en IAM tiene las funciones :
Artifact Registry Writer
y Logs Writer
- > Guardar
- ¡Ejecute manualmente su primera compilación!
3 Habilite IAP y configure la pantalla de consentimiento de oAuth
- Vaya a Seguridad > Identity Aware Proxy y habilite la API
- > Configurar pantalla de consentimiento (oAuth)
- El tipo de usuario puede ser
-
Internal
si desea limitar los usuarios de IAP al dominio de su organización de GCP -
External
si tiene algunos usuarios en un dominio diferente al de su organización de GCP
- > Crear
- Llenar
- Nombre de la aplicación:
YOUR_COMPANY-imgstudio
- Correo electrónico de soporte al usuario
- Dominio autorizado:
YOUR_COMPANY_DOMAIN
- Correo electrónico de contacto del desarrollador
- > Guardar y continuar
- Agregue los alcances necesarios o > Guardar y continuar
- Revisar el resumen
- > Volver al Panel de control
4 Crear cuenta de servicio de aplicación
- Vaya a IAM > Cuentas de servicio > Crear cuenta de servicio
- Proporcione el nombre:
YOUR_COMPANY-imgstudio-sa
- Dar roles :
-
Cloud Datastore User
-
Logs Writer
-
Secret Manager Secret Accessor
-
Service Account Token Creator
-
Storage Object Creator
-
Storage Object Viewer
-
Vertex AI User
5 Implementar el servicio Cloud Run
- Implementar contenedor > Servicio
-
Deploy one revision from an existing container image
- Imagen de contenedor > Seleccione del registro de artefactos la imagen
latest
que acaba de crear en Cloud Build - Nombre:
YOUR_COMPANY-imgstudio-app
- Establezca su región (por ejemplo,
europe-west9
) - Autenticación : Requerir autenticación
- Control de ingreso >
Internal
> Allow traffic from external Application Load Balancers
- Contenedor(es) > Puerto de contenedores:
3000
- Seguridad > Cuenta de servicio:
YOUR_COMPANY-imgstudio-sa
- > Crear
- NB: si intenta acceder a la URL publicada para el nuevo servicio, debería recibir un mensaje de error que indique "Error: Página no encontrada", esto se debe al hecho de que solo permitimos el ingreso de tráfico externo desde un balanceador de carga.
6 Otorgar permisos IAP en el servicio Cloud Run
- Cree la dirección de la cuenta de servicio IAP
- Vaya a la parte superior derecha de la consola > ícono de Shell "Activar Cloud Shell"
- Espere a que la máquina se configure
- En la terminal, use este comando y copie la dirección de la cuenta de servicio de salida
-
gcloud beta services identity create --service=iap.googleapis.com --project=PROJECT_ID
- El formato del resultado que puede copiar debe ser
[email protected]
- Vaya a Cloud Run, en la lista Servicios, seleccione la casilla de verificación junto al nombre de su servicio
- Haga clic en Permisos > Agregar director
- Otorgue la función
Cloud Run Invoker
a la cuenta de servicio IAP creada/obtenida previamente
7 Crear zona DNS
- Servicio de red > DNS en la nube
- > Crear zona
- Completa el formulario
- Nombre de Zona:
imgstudio
- Nombre DNS :
imgstudio.YOUR_COMPANY_DOMAIN
- DNSSEC:
Off
- Registro en la nube:
Off
- Una vez que se complete la propagación de DNS, verifique los servidores de nombres de la zona administrada de DNS usando el siguiente comando (puede tardar varias horas en completarse)
-
dig imgstudio.YOUR_COMPANY_DOMAIN NS +short
8 Crear equilibrador de carga y certificado SSL
- Servicio de red > Equilibrio de carga
- > Crear equilibrador de carga
- Seleccionar:
- Tipo de balanceador de carga :
Application Load Balancer (HTTP/HTTPS)
- Orientación al público o interna :
Public Facing (external)
- Región global o única :
Global
- Generación de equilibrador de carga :
Global external Application Load Balancer
- > Configurar
- Nombre del balanceador de carga:
YOUR_COMPANY-imgstudio-lb
- Configuración de interfaz:
- Protocolo :
HTTPS
- La dirección IP se puede dejar
Ephemeral
(también se puede configurar una IP estática) - Menú desplegable de certificados > Crear un nuevo certificado
- Nombre:
YOUR_COMPANY-imgstudio-cert
- > Crear certificado administrado por Google
- Dominio 1 :
imgstudio.YOUR_COMPANY_DOMAIN
- > Crear
- > Hecho
- Configuración de fondo
- Servicios backend y depósitos de backend > Crear un servicio backend
- Nombre:
YOUR_COMPANY-imgstudio-back
- Tipo de backend :
Serverless Network Endpoint Group
> Listo - Backends > Nuevo backend > Menú desplegable Grupos de puntos finales de red sin servidor > Crear grupo de puntos finales de red sin servidor
- Nombre:
YOUR_COMPANY-imgstudio-neg
- Región: la región en la que se implementó el servicio Cloud Run (por ejemplo,
europe-west9
). - Tipo de grupo de puntos finales de red sin servidor > Cloud Run > Seleccionar servicio >
YOUR_COMPANY-imgstudio-app
> Crear - Habilitar Cloud CDN >
Off
- > Crear
- Revisar la configuración del balanceador de carga
- > Crear
9 Crear registro DNS para la interfaz de Load Balancer
- Servicios de red > Equilibrio de carga, seleccione su equilibrador de carga
YOUR_COMPANY-imgstudio-lb
- Detalles > Frontend > Puerto IP
- Tenga en cuenta la dirección IP
- Servicios de red > DNS en la nube, seleccione su zona DNS
imgstudio
- Conjuntos de registros > Agregar estándar
- Crear conjunto de registros
- Nombre DNS:
imgstudio.YOUR_COMPANY_DOMAIN
- Dirección IPv4 : la dirección IP de su equilibrador de carga
- > Crear
10 Habilitar IAP y otorgar acceso de usuario
- Seguridad > Proxy con reconocimiento de identidad
- Active IAP para su servicio backend
YOUR_COMPANY-imgstudio-back
- Seleccione la casilla de verificación junto a su servicio, luego > Agregar director
- Ingrese la dirección del usuario ( o grupo ) al que desea permitir el acceso a imgstudio
- Asigne el rol
IAP-secured Web App User
, > Guardar
11 Creación de la base de datos de Firestore
- Firestore > Crear base de datos
- Modo Firestore:
Native mode
, > Continuar - ID de la base de datos:
(default)
( es muy importante que lo mantenga así ) - Tipo de ubicación:
Region
- Región: la región que desee (por ejemplo,
europe-west9
en París) - Reglas seguras:
Production rules
- Firestore > Índices > Índices compuestos > Crear índice
- ID de colección :
metadata
- Campos para indexar
- Ruta de campo 1:
combinedFilters
, opciones de índice 1: Array contains
- Ruta de campo 2:
timestamp
, opciones de índice 2: Descending
- Ruta de campo 3:
__name__
, Opciones de índice 3: Descending
- Alcance de la consulta:
Collection
- > Crear
- ¡Espere a que el índice se cree correctamente!
- Configuremos reglas de seguridad en su base de datos y solo permitamos que su cuenta de servicio Cloud Run acceda a ella.
- En una nueva pestaña, vaya a
-
https://console.firebase.google.com/project/PROJECT_ID/firestore/databases/-default-/rules
- Si es necesario, sigue los pasos para configurar tu proyecto de Firebase.
- Una vez en Firestore Database > Reglas, vaya al editor de reglas de seguridad.
- Escriba el siguiente contenido, no olvide reemplazar
YOUR_COMPANY
& PROJECT_ID
en la cuenta del servicio Cloud Run rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, get, list, create, update: if get(/databases/$(database)/documents/request.auth.uid).data.serviceAccount == 'YOUR_COMPANY-imgstudio-sa@PROJECT_ID.iam.gserviceaccount.com';
allow delete: if false;
}}}
- > Publicar