Руководство по настройке инфраструктуры для ImgStudio
0 Получить доступ к моделям Imagen
- В общем, для Vertex: в консоли (новой!)
- Перейдите в
Vertex AI
> Enable all recommended APIs
- Они должны включать в себя: API Vertex AI, API облачного хранилища.
- Для создания изображений: обратитесь к своим контактам в Google Cloud, чтобы получить доступ к моделям редактирования Imagen 3 — Imagen 3 Generate (imagen-3.0-generate-001) и Imagen 3 Generate Fast (imagen-3.0-fast-generate-001).
- Для редактирования изображений : обратитесь к своим контактам в Google Cloud и запросите доступ к предварительному просмотру или получите уведомление, когда он станет общедоступным.
- Для вершинной сегментации : вам также понадобится доступ к этой новой модели при редактировании.
1 Создайте сегменты облачного хранилища.
- Технические характеристики: Региональные в желаемом регионе (например:
europe-west9
в Париже) - Создайте 3 сегмента
- Необработанный сгенерированный выходной контент :
YOUR_COMPANY-imgstudio-output
- Общий контент :
YOUR_COMPANY-imgstudio-library
- Сегмент файла конфигурации :
YOUR_COMPANY-imgstudio-export-config
- Здесь загрузите файл
export-fields-options.json
соответствующий вашему использованию, пример которого вы можете найти в репозитории. Его цель — настроить нужные метаданные, которые вы хотите установить для сгенерированного контента. - В этом файле для каждого поля (например: contextAuthorTeam, contextTargetPlatform, contextAssociatedBrand, contextCollection) вы можете изменить только идентификатор поля (например:
“contextAuthorTeam”
), его метку (например: “In which team are you?”
). , ее название (например: “Associated team(s)”
), ее тег isMandatory (например: true
) и, наконец, ее параметры. - Внимание! Идентификатор и значения параметров должны состоять только из букв, без пробелов и специальных символов, начиная со строчной буквы.
2 Настройка триггера Cloud Build
- Имя:
YOUR_COMPANY-imgstudio
- Событие:
Manual invocation
- Источник:
- Перейдите в публичный репозиторий https://github.com/aduboue/img-studio.
- Следите за новыми выпусками , чтобы оставаться в курсе: нажмите
Watch
> Custom
> Releases
> «Применить». - Используйте верхнюю правую кнопку, чтобы настроить форк GitHub из репозитория, который создаст репозиторий копий в вашей собственной учетной записи GitHub.
- Вернувшись в Cloud Build, войдите в свою учетную запись GitHub , затем выберите вновь созданный репозиторий.
- Конфигурация:
Cloud Build configuration file (yaml or json)
- Расположение файла конфигурации Cloud Build:
/cloudbuild.yaml
- Поместите 7 переменных подстановки:
-
_NEXT_PUBLIC_EXPORT_FIELDS_OPTIONS_URI
- URI файла конфигурации JSON в его сегменте.
- Пример:
gs://YOUR_COMPANY-imgstudio-export-config/export-fields-options.json
-
_NEXT_PUBLIC_GCS_BUCKET_LOCATION
- Регион, выбранный для ваших сегментов GCS.
- Пример:
europe-west9
-
_NEXT_PUBLIC_VERTEX_API_LOCATION
- Регион, который вы хотите использовать для API VertexAI.
- Пример:
europe-west9
-
_NEXT_PUBLIC_GEMINI_MODEL
= gemini-1.5-flash-001
-
_NEXT_PUBLIC_OUTPUT_BUCKET
- Имя сегмента необработанного выходного содержимого.
- Пример:
YOUR_COMPANY-imgstudio-output
-
_NEXT_PUBLIC_TEAM_BUCKET
- Имя сегмента общего контента.
- Пример:
YOUR_COMPANY-imgstudio-library
-
_NEXT_PUBLIC_PRINCIPAL_TO_USER_FILTERS
- Разделы адреса электронной почты ваших пользователей, используемые для входа в систему через IAP, которые необходимо удалить, чтобы получить их идентификатор пользователя, разделенные запятыми.
- Пример: мой адрес электронной почты — «[email protected]», значение, которое нужно установить, —
admin-,@company.com
, чтобы можно было извлечь идентификатор пользователя jdupont.
-
_NEXT_PUBLIC_EDIT_ENABLED
(новинка!)- Разрешить включение функций редактирования. Установите значение «
false
», если у вас еще нет доступа.
-
_NEXT_PUBLIC_EDIT_MODEL
(новая!)- Обязательно только в том случае, если включено редактирование.
- Имя сервиса для модели редактирования, когда вы получите к ней доступ
-
_NEXT_PUBLIC_SEG_MODEL
(новинка!)- Обязательно только в том случае, если включено редактирование.
- Имя сервиса для модели вершинной сегментации, когда вы получите к ней доступ
- Учетная запись службы: выберите уже существующую учетную запись службы Cloud Build по умолчанию
[email protected]
- Возможно, вы захотите проверить IAM, у него есть роли :
Artifact Registry Writer
и Logs Writer
- > Сохранить
- Запустите свою первую сборку вручную!
3 Включите IAP и настройте экран согласия oAuth.
- Перейдите в раздел «Безопасность» > «Прокси-сервер с идентификацией» и включите API.
- > Настройка экрана согласия (oAuth)
- Тип пользователя может быть любым
-
Internal
если вы хотите ограничить пользователей IAP доменом вашей организации GCP. -
External
если у вас есть пользователи в домене, отличном от домена вашей организации GCP.
- > Создать
- Заполнять
- Имя приложения:
YOUR_COMPANY-imgstudio
- Электронная почта службы поддержки пользователей
- Авторизованный домен:
YOUR_COMPANY_DOMAIN
- Контактный адрес электронной почты разработчика
- > Сохранить и продолжить
- Добавьте необходимые области или > Сохранить и продолжить.
- Просмотрите сводку
- > Вернуться к панели управления
4 Создайте учетную запись службы приложения.
- Перейдите в IAM > Учетные записи служб > Создать учетную запись службы.
- Укажите имя:
YOUR_COMPANY-imgstudio-sa
- Дайте роли :
-
Cloud Datastore User
-
Logs Writer
-
Secret Manager Secret Accessor
-
Service Account Token Creator
-
Storage Object Creator
-
Storage Object Viewer
-
Vertex AI User
5 Развертывание службы Cloud Run.
- Развернуть контейнер > Служба
-
Deploy one revision from an existing container image
- Образ контейнера > Выберите в реестре артефактов
latest
образ, который вы только что создали в Cloud Build. - Имя:
YOUR_COMPANY-imgstudio-app
- Установите свой регион (например:
europe-west9
) - Аутентификация : Требовать аутентификацию
- Входной контроль >
Internal
> Allow traffic from external Application Load Balancers
- Контейнер(ы) > Контейнерный порт:
3000
- Безопасность > Учетная запись службы:
YOUR_COMPANY-imgstudio-sa
- > Создать
- Примечание: если вы попытаетесь получить доступ к опубликованному URL-адресу новой службы, вы должны получить сообщение об ошибке «Ошибка: страница не найдена». Это связано с тем, что мы разрешаем вход внешнего трафика только из балансировщика нагрузки.
6 Предоставьте разрешения IAP для службы Cloud Run.
- Создайте адрес учетной записи службы IAP.
- Перейдите в правый верхний угол консоли > значок оболочки «Активировать Cloud Shell».
- Подождите, пока машина настроится
- В терминале используйте эту команду и скопируйте адрес выходной учетной записи службы.
-
gcloud beta services identity create --service=iap.googleapis.com --project=PROJECT_ID
- Формат вывода, который вы можете скопировать, должен быть
[email protected]
- Перейдите в Cloud Run, в списке «Сервисы» установите флажок рядом с названием вашего сервиса.
- Нажмите «Разрешения» > «Добавить принципала».
- Предоставьте роль
Cloud Run Invoker
ранее созданной/полученной учетной записи службы IAP.
7 Создать зону DNS
- Сетевая служба > Облачный DNS
- > Создать зону
- Заполните форму
- Имя зоны:
imgstudio
- DNS-имя :
imgstudio.YOUR_COMPANY_DOMAIN
- DNSSEC:
Off
- Ведение журнала в облаке:
Off
- После завершения распространения DNS проверьте серверы имен управляемой зоны DNS с помощью приведенной ниже команды (это может занять несколько часов).
-
dig imgstudio.YOUR_COMPANY_DOMAIN NS +short
8 Создайте балансировщик нагрузки и SSL-сертификат.
- Сетевая служба > Балансировка нагрузки
- > Создать балансировщик нагрузки
- Выбирать:
- Тип балансировщика нагрузки :
Application Load Balancer (HTTP/HTTPS)
- Публичный или внутренний :
Public Facing (external)
- Глобальный или отдельный регион :
Global
- Создание балансировщика нагрузки :
Global external Application Load Balancer
- > Настроить
- Имя балансировщика нагрузки:
YOUR_COMPANY-imgstudio-lb
- Конфигурация внешнего интерфейса:
- Протокол :
HTTPS
- IP-адрес можно оставить
Ephemeral
(вы также можете настроить статический IP-адрес). - Раскрывающийся список сертификатов > Создать новый сертификат
- Имя:
YOUR_COMPANY-imgstudio-cert
- > Создать сертификат, управляемый Google.
- Домен 1 :
imgstudio.YOUR_COMPANY_DOMAIN
- > Создать
- > Готово
- Конфигурация серверной части
- Серверные службы и серверные сегменты > Создание серверной службы
- Имя:
YOUR_COMPANY-imgstudio-back
- Тип серверной части :
Serverless Network Endpoint Group
> Готово. - Серверные части > Новый сервер > раскрывающийся список «Группы конечных точек бессерверной сети» > «Создать группу конечных точек бессерверной сети»
- Имя:
YOUR_COMPANY-imgstudio-neg
- Регион: регион, в котором была развернута служба Cloud Run (например:
europe-west9
). - Тип группы конечных точек бессерверной сети > Cloud Run > Выберите службу >
YOUR_COMPANY-imgstudio-app
> Создать - Включить Cloud CDN >
Off
- > Создать
- Просмотрите конфигурацию балансировщика нагрузки
- > Создать
9 Создайте запись DNS для внешнего интерфейса балансировщика нагрузки.
- Сетевые службы > Балансировка нагрузки, выберите балансировщик нагрузки
YOUR_COMPANY-imgstudio-lb
- Подробности > Интерфейс > IP-порт
- Обратите внимание на IP-адрес
- Сетевые службы > Cloud DNS, выберите зону DNS
imgstudio
- Наборы записей > Добавить стандарт
- Создать набор записей
- DNS-имя:
imgstudio.YOUR_COMPANY_DOMAIN
- IPv4-адрес : IP-адрес вашего балансировщика нагрузки.
- > Создать
10 Включите IAP и предоставьте пользователю доступ.
- Безопасность > Прокси-сервер с идентификацией личности
- Включите IAP для своей серверной службы
YOUR_COMPANY-imgstudio-back
- Установите флажок рядом с вашей услугой, затем > Добавить принципала.
- Введите адрес пользователя ( или группы ), которому вы хотите разрешить доступ к imgstudio.
- Назначьте роль
IAP-secured Web App User
, > «Сохранить».
11 Создание базы данных Firestore.
- Firestore > Создать базу данных
- Режим Firestore:
Native mode
, > Продолжить - Идентификатор базы данных:
(default)
( очень важно, чтобы он оставался таким ) - Тип локации:
Region
- Регион: желаемый регион (например:
europe-west9
в Париже) - Правила безопасности:
Production rules
- Firestore > Индексы > Составные индексы > Создать индекс
- Идентификатор коллекции :
metadata
- Поля для индексирования
- Путь к полю 1:
combinedFilters
, параметры индекса 1: Array contains
- Путь к полю 2:
timestamp
, параметры индекса 2: Descending
- Путь к полю 3:
__name__
, параметры индекса 3: Descending
- Область запроса:
Collection
- > Создать
- Подождите, пока индекс будет успешно создан!
- Давайте настроим правила безопасности для вашей базы данных и разрешим доступ к ней только вашей учетной записи службы Cloud Run.
- В новой вкладке перейдите к
-
https://console.firebase.google.com/project/PROJECT_ID/firestore/databases/-default-/rules
- При необходимости следуйте инструкциям по настройке проекта Firebase.
- В базе данных Firestore > Правила перейдите в редактор правил безопасности.
- Напишите следующее содержимое, не забудьте заменить
YOUR_COMPANY
& PROJECT_ID
в учетной записи службы 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;
}}}
- > Опубликовать