Guide de configuration de l'infrastructure pour ImgStudio
0 Accéder aux modèles Imagen
- En général, pour Vertex : dans la console (nouveau !)
- Accédez à
Vertex AI
> Enable all recommended APIs
- Ils doivent inclure : l'API Vertex AI, l'API Cloud Storage
- Pour Imagen Generation : contactez vos contacts Google Cloud pour obtenir un accès aux modèles d'édition Imagen 3 - Imagen 3 Generate (imagen-3.0-generate-001) et Imagen 3 Generate Fast (imagen-3.0-fast-generate-001)
- Pour l'édition d'images : contactez vos contacts Google Cloud pour demander l'accès à l'aperçu ou soyez averti lorsqu'il s'agit de GA.
- Pour la segmentation des sommets : vous aurez également besoin d'accéder à ce nouveau modèle lors de l'utilisation de l'édition.
1 Créer des buckets de stockage cloud
- Spécifications : Régional dans la région souhaitée (ex :
europe-west9
à Paris) - Créer 3 buckets
- Contenu de sortie généré brut :
YOUR_COMPANY-imgstudio-output
- Contenu partagé :
YOUR_COMPANY-imgstudio-library
- Compartiment du fichier de configuration :
YOUR_COMPANY-imgstudio-export-config
- Téléchargez ici
export-fields-options.json
un fichier de configuration spécifique à votre utilisation dont vous pouvez trouver un exemple dans le référentiel, son but est de configurer les métadonnées souhaitées que vous souhaitez définir pour votre contenu généré - Dans ce fichier, pour chaque champ (ex : contextAuthorTeam, contextTargetPlatform, contextAssociatedBrand, contextCollection), vous pouvez uniquement changer l' ID du champ (ex :
“contextAuthorTeam”
), son label (ex : “In which team are you?”
) , son nom (ex : “Associated team(s)”
), son tag isMandatory (ex : true
) et enfin ses options - Attention! L'ID et les valeurs des options doivent uniquement être des lettres, sans espaces, ni caractères spéciaux, commençant par une lettre minuscule
2 Configurer le déclencheur Cloud Build
- Nom :
YOUR_COMPANY-imgstudio
- Événement :
Manual invocation
- Source:
- Accédez au référentiel public https://github.com/aduboue/img-studio
- Surveillez les nouvelles versions pour rester à jour : cliquez sur
Watch
> Custom
> Releases
> Appliquer - Utilisez le bouton en haut à droite pour configurer un fork GitHub à partir du référentiel, qui créera un référentiel de copie dans votre propre compte GitHub.
- De retour dans Cloud Build, connectez-vous à votre compte GitHub , puis sélectionnez le référentiel nouvellement créé
- Configuration :
Cloud Build configuration file (yaml or json)
- Emplacement du fichier de configuration Cloud Build :
/cloudbuild.yaml
- Mettez 7 variables de substitution :
-
_NEXT_PUBLIC_EXPORT_FIELDS_OPTIONS_URI
- L'URI du fichier JSON de configuration dans son bucket
- Ex :
gs://YOUR_COMPANY-imgstudio-export-config/export-fields-options.json
-
_NEXT_PUBLIC_GCS_BUCKET_LOCATION
- La région sélectionnée pour vos buckets GCS
- Ex :
europe-west9
-
_NEXT_PUBLIC_VERTEX_API_LOCATION
- La région que vous souhaitez utiliser pour les API VertexAI
- Ex :
europe-west9
-
_NEXT_PUBLIC_GEMINI_MODEL
= gemini-1.5-flash-001
-
_NEXT_PUBLIC_OUTPUT_BUCKET
- Le nom du compartiment de contenu de sortie généré brut
- Ex :
YOUR_COMPANY-imgstudio-output
-
_NEXT_PUBLIC_TEAM_BUCKET
- Le nom du bucket de contenu partagé
- Ex :
YOUR_COMPANY-imgstudio-library
-
_NEXT_PUBLIC_PRINCIPAL_TO_USER_FILTERS
- Les sections de l'adresse email de vos utilisateurs utilisées pour se connecter via IAP qui devront être supprimées afin d'obtenir leur identifiant, séparées par des virgules
- Ex : mon adresse email est '[email protected]', la valeur à définir serait
admin-,@company.com
pour que l'ID utilisateur jdupont puisse être extrait
-
_NEXT_PUBLIC_EDIT_ENABLED
(nouveau !)- Autoriser l'activation des fonctionnalités de modification, définissez-le sur «
false
» si vous n'y avez pas encore accès.
-
_NEXT_PUBLIC_EDIT_MODEL
(nouveau !)- Uniquement obligatoire si Modifier est activé
- Nom du service pour le modèle d'édition, lorsque vous y avez accès
-
_NEXT_PUBLIC_SEG_MODEL
(nouveau !)- Uniquement obligatoire si Modifier est activé
- Nom du service pour le modèle Vertex Segmentation, lorsque vous y avez accès
- Compte de service : sélectionnez le compte de service Cloud Build par défaut déjà existant
[email protected]
- Vous souhaiterez peut-être vérifier dans IAM qu'il a les rôles :
Artifact Registry Writer
et Logs Writer
- > Enregistrer
- Exécutez manuellement votre premier build !
3 Activer IAP et configurer l'écran de consentement oAuth
- Accédez à Sécurité > Identity Aware Proxy et activez l'API.
- > Configurer l'écran de consentement (oAuth)
- Le type d'utilisateur peut être soit
-
Internal
si vous souhaitez limiter les utilisateurs IAP au domaine de votre organisation GCP -
External
si vous avez des utilisateurs sur un domaine différent de celui de votre organisation GCP
- > Créer
- Remplir
- Nom de l'application :
YOUR_COMPANY-imgstudio
- E-mail d'assistance utilisateur
- Domaine autorisé :
YOUR_COMPANY_DOMAIN
- E-mail de contact du développeur
- > Enregistrer et continuer
- Ajoutez toutes les étendues nécessaires ou > Enregistrer et continuer
- Consultez le résumé
- > Retour au tableau de bord
4 Créer un compte de service d'application
- Accédez à IAM > Comptes de service > Créer un compte de service
- Indiquez le nom :
YOUR_COMPANY-imgstudio-sa
- Donnez des rôles :
-
Cloud Datastore User
-
Logs Writer
-
Secret Manager Secret Accessor
-
Service Account Token Creator
-
Storage Object Creator
-
Storage Object Viewer
-
Vertex AI User
5 Déployer le service Cloud Run
- Déployer un conteneur > Service
-
Deploy one revision from an existing container image
- Image du conteneur > Sélectionnez dans le registre d'artefacts la
latest
image que vous venez de créer dans Cloud Build. - Nom :
YOUR_COMPANY-imgstudio-app
- Définissez votre région (ex :
europe-west9
) - Authentification : exiger une authentification
- Contrôle d'entrée >
Internal
> Allow traffic from external Application Load Balancers
- Conteneur(s) > Port à conteneurs :
3000
- Sécurité > Compte de service :
YOUR_COMPANY-imgstudio-sa
- > Créer
- NB : si vous essayez d'accéder à l'URL publiée pour le nouveau service, vous devriez recevoir un message d'erreur indiquant « Erreur : page non trouvée ». Cela est dû au fait que nous autorisons uniquement l'entrée du trafic externe à partir d'un équilibreur de charge.
6 Accorder des autorisations IAP sur le service Cloud Run
- Créer l' adresse du compte de service IAP
- Allez en haut à droite de la console > icône Shell « Activer Cloud Shell »
- Attendez que la machine soit configurée
- Dans le terminal, utilisez cette commande et copiez l'adresse du compte de service de sortie
-
gcloud beta services identity create --service=iap.googleapis.com --project=PROJECT_ID
- Le format de la sortie que vous pouvez copier doit être
[email protected]
- Accédez à Cloud Run, dans la liste Services, cochez la case à côté du nom de votre service
- Cliquez sur Autorisations > Ajouter un principal
- Accordez le rôle
Cloud Run Invoker
au compte de service IAP précédemment créé/récupéré.
7 Créer une zone DNS
- Service réseau > Cloud DNS
- > Créer une zone
- Remplissez le formulaire
- Nom de la zone :
imgstudio
- Nom DNS :
imgstudio.YOUR_COMPANY_DOMAIN
- DNSSEC :
Off
- Journalisation dans le cloud :
Off
- Une fois la propagation DNS terminée, vérifiez les serveurs de noms de la zone gérée DNS à l'aide de la commande ci-dessous (cela peut prendre plusieurs heures)
-
dig imgstudio.YOUR_COMPANY_DOMAIN NS +short
8 Créer un équilibreur de charge et un certificat SSL
- Service réseau > Équilibrage de charge
- > Créer un équilibreur de charge
- Sélectionner:
- Type d'équilibreur de charge :
Application Load Balancer (HTTP/HTTPS)
- Face publique ou interne :
Public Facing (external)
- Région mondiale ou unique :
Global
- Génération d'équilibreur de charge :
Global external Application Load Balancer
- > Configurer
- Nom de l'équilibreur de charge :
YOUR_COMPANY-imgstudio-lb
- Configuration frontale :
- Protocole :
HTTPS
- L'adresse IP peut rester
Ephemeral
(vous pouvez également configurer une adresse IP statique) - Liste déroulante Certificat > Créer un nouveau certificat
- Nom :
YOUR_COMPANY-imgstudio-cert
- > Créer un certificat géré par Google
- Domaine 1 :
imgstudio.YOUR_COMPANY_DOMAIN
- > Créer
- > Terminé
- Configuration du back-end
- Services backend et buckets backend > Créer un service backend
- Nom :
YOUR_COMPANY-imgstudio-back
- Type de backend :
Serverless Network Endpoint Group
> Terminé - Backends > Nouveau backend > Liste déroulante Groupes de points de terminaison de réseau sans serveur > Créer un groupe de points de terminaison de réseau sans serveur
- Nom :
YOUR_COMPANY-imgstudio-neg
- Région : la région dans laquelle le service Cloud Run a été déployé (ex :
europe-west9
) - Type de groupe de points de terminaison de réseau sans serveur > Cloud Run > Sélectionner un service >
YOUR_COMPANY-imgstudio-app
> Créer - Activer Cloud CDN >
Off
- > Créer
- Vérifier la configuration de l'équilibreur de charge
- > Créer
9 Créer un enregistrement DNS pour l'interface de Load Balancer
- Services réseau > Équilibrage de charge, sélectionnez votre équilibreur de charge
YOUR_COMPANY-imgstudio-lb
- Détails > Frontend > Port IP
- Notez l' adresse IP
- Services réseau > Cloud DNS, sélectionnez votre zone DNS
imgstudio
- Jeux d'enregistrements > Ajouter une norme
- Créer un jeu d'enregistrements
- Nom DNS :
imgstudio.YOUR_COMPANY_DOMAIN
- Adresse IPv4 : l'adresse IP de votre équilibreur de charge
- > Créer
10 Activer IAP et accorder l'accès aux utilisateurs
- Sécurité > Proxy conscient de l'identité
- Activez IAP pour votre service backend
YOUR_COMPANY-imgstudio-back
- Cochez la case à côté de votre service, puis > Ajouter un principal
- Entrez l'adresse de l'utilisateur ( ou du groupe ) auquel vous souhaitez autoriser l'accès à imgstudio
- Attribuez le rôle
IAP-secured Web App User
, > Enregistrer
11 Création de la base de données Firestore
- Firestore > Créer une base de données
- Mode Firestore :
Native mode
, > Continuer - ID de base de données :
(default)
( très important que vous le gardiez ainsi ) - Type de localisation :
Region
- Région : la région souhaitée (ex :
europe-west9
à Paris) - Règles sécurisées :
Production rules
- Firestore > Index > Index composites > Créer un index
- ID de collection :
metadata
- Champs à indexer
- Chemin de champ 1 :
combinedFilters
, Options d'index 1 : Array contains
- Chemin de champ 2 :
timestamp
, options d'index 2 : Descending
- Chemin de champ 3 :
__name__
, Options d'index 3 : Descending
- Portée de la requête :
Collection
- > Créer
- Attendez que l'index soit créé avec succès !
- Configurons des règles de sécurité sur votre base de données et autorisons uniquement votre compte de service Cloud Run à y accéder
- Dans un nouvel onglet, accédez à
-
https://console.firebase.google.com/project/PROJECT_ID/firestore/databases/-default-/rules
- Si nécessaire, suivez les étapes pour configurer votre projet Firebase
- Une fois dans Firestore Database > Règles, accédez à l' éditeur de règles de sécurité
- Écrivez le contenu suivant, n'oubliez pas de remplacer
YOUR_COMPANY
& PROJECT_ID
dans le compte de service 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;
}}}
- > Publier