Guia de configuração de infraestrutura para ImgStudio
0 Tenha acesso aos modelos Imagen
- Em geral, para Vertex: no console (novo!)
- Acesse
Vertex AI
> Enable all recommended APIs
- Eles devem incluir: API Vertex AI, API Cloud Storage
- Para geração de imagens: entre em contato com seus contatos do Google Cloud para obter acesso aos modelos de edição do Imagen 3 - Imagen 3 Generate (imagen-3.0-generate-001) e Imagen 3 Generate Fast (imagen-3.0-fast-generate-001)
- Para edição de imagens : entre em contato com seus contatos do Google Cloud para solicitar acesso de visualização ou seja notificado quando for GA
- Para segmentação de vértices : você também precisará de acesso a este novo modelo ao usar a edição
1 Criar intervalos do Cloud Storage
- Especificações: Regional na região desejada (ex:
europe-west9
em Paris) - Crie 3 baldes
- Conteúdo de saída gerado bruto :
YOUR_COMPANY-imgstudio-output
- Conteúdo compartilhado :
YOUR_COMPANY-imgstudio-library
- Bucket do arquivo de configuração :
YOUR_COMPANY-imgstudio-export-config
- Aqui carregue
export-fields-options.json
um arquivo de configuração específico para seu uso que você pode encontrar um exemplo no repositório, seu objetivo é configurar os metadados desejados que você deseja definir para o conteúdo gerado - Neste arquivo, para cada campo (ex: contextAuthorTeam, contextTargetPlatform, contextAssociatedBrand, contextCollection), você só pode alterar o ID do campo (ex:
“contextAuthorTeam”
), seu rótulo (ex: “In which team are you?”
) , seu nome (ex: “Associated team(s)”
), sua tag éMandatory (ex: true
) e por fim suas opções - Atenção! O ID e os valores das opções devem ser apenas letras, sem espaços, sem caracteres especiais, começando com letra minúscula
2 Configurar gatilho do Cloud Build
- Nome:
YOUR_COMPANY-imgstudio
- Evento:
Manual invocation
- Fonte:
- Vá para o repositório público https://github.com/aduboue/img-studio
- Monitore novos lançamentos para se manter atualizado: clique em
Watch
> Custom
> Releases
> Aplicar - Use o botão superior direito para configurar um fork do GitHub a partir do repositório, que criará uma cópia do repositório em sua própria conta do GitHub
- De volta ao Cloud Build, faça login em sua conta GitHub e selecione o repositório recém-criado
- Configuração:
Cloud Build configuration file (yaml or json)
- Local do arquivo de configuração do Cloud Build:
/cloudbuild.yaml
- Coloque 7 variáveis de substituição:
-
_NEXT_PUBLIC_EXPORT_FIELDS_OPTIONS_URI
- O URI do arquivo JSON de configuração em seu bucket
- Ex:
gs://YOUR_COMPANY-imgstudio-export-config/export-fields-options.json
-
_NEXT_PUBLIC_GCS_BUCKET_LOCATION
- A região selecionada para seus intervalos do GCS
- Ex:
europe-west9
-
_NEXT_PUBLIC_VERTEX_API_LOCATION
- A região que você deseja usar para APIs VertexAI
- Ex:
europe-west9
-
_NEXT_PUBLIC_GEMINI_MODEL
= gemini-1.5-flash-001
-
_NEXT_PUBLIC_OUTPUT_BUCKET
- O nome do bucket de conteúdo de saída bruto gerado
- Ex:
YOUR_COMPANY-imgstudio-output
-
_NEXT_PUBLIC_TEAM_BUCKET
- O nome do bucket de conteúdo compartilhado
- Ex:
YOUR_COMPANY-imgstudio-library
-
_NEXT_PUBLIC_PRINCIPAL_TO_USER_FILTERS
- As seções do endereço de e-mail dos seus usuários usadas para fazer login via IAP que precisarão ser removidas para obter o ID do usuário, separadas por vírgulas
- Ex: meu endereço de e-mail é '[email protected]', o valor a ser definido seria
admin-,@company.com
para que o ID do usuário jdupont possa ser extraído
-
_NEXT_PUBLIC_EDIT_ENABLED
(novo!)- Permitir ativar recursos de edição, defina-o como '
false
' se você ainda não tiver acesso
-
_NEXT_PUBLIC_EDIT_MODEL
(novo!)- Obrigatório apenas se Editar estiver ativado
- Nome do serviço para o modelo de edição, quando você obtém acesso a ele
-
_NEXT_PUBLIC_SEG_MODEL
(novo!)- Obrigatório apenas se Editar estiver ativado
- Nome do serviço para o modelo Vertex Segmentation, quando você obtém acesso a ele
- Conta de serviço: selecione a conta de serviço padrão já existente do Cloud Build
[email protected]
- Você pode querer verificar no IAM se ele tem as funções :
Artifact Registry Writer
e Logs Writer
- > Salvar
- Execute manualmente sua primeira compilação!
3 Habilite o IAP e configure a tela de consentimento oAuth
- Vá para Segurança > Identity Aware Proxy e habilite a API
- > Configurar tela de consentimento (oAuth)
- O tipo de usuário pode ser
-
Internal
se você quiser limitar os usuários do IAP ao seu domínio organizacional do GCP -
External
se você tiver alguns usuários em um domínio diferente do da sua organização do GCP
- > Criar
- Preencha
- Nome do aplicativo:
YOUR_COMPANY-imgstudio
- E-mail de suporte ao usuário
- Domínio autorizado:
YOUR_COMPANY_DOMAIN
- E-mail de contato do desenvolvedor
- > Salvar e continuar
- Adicione os escopos necessários ou > Salvar e continuar
- Revise o resumo
- > Voltar ao painel
4 Criar conta de serviço do aplicativo
- Vá para IAM > Contas de serviço > Criar conta de serviço
- Forneça o nome:
YOUR_COMPANY-imgstudio-sa
- Dê papéis :
-
Cloud Datastore User
-
Logs Writer
-
Secret Manager Secret Accessor
-
Service Account Token Creator
-
Storage Object Creator
-
Storage Object Viewer
-
Vertex AI User
5 Implantar serviço Cloud Run
- Implantar contêiner > Serviço
-
Deploy one revision from an existing container image
- Imagem de contêiner > Selecione no registro de artefato a imagem
latest
que você acabou de criar no Cloud Build - Nome:
YOUR_COMPANY-imgstudio-app
- Defina sua região (ex:
europe-west9
) - Autenticação : Exigir autenticação
- Controle de entrada >
Internal
> Allow traffic from external Application Load Balancers
- Contêiner(es) > Porta de contêiner:
3000
- Segurança > Conta de serviço:
YOUR_COMPANY-imgstudio-sa
- > Criar
- NB: se você tentar acessar a URL publicada para o novo serviço deverá receber uma mensagem de erro informando “Erro: Página não encontrada”, isso se deve ao fato de estarmos permitindo apenas a entrada de tráfego externo de um Load Balancer
6 Conceder permissões de IAP no serviço Cloud Run
- Crie o endereço da conta de serviço IAP
- Vá para o canto superior direito do console> ícone Shell “Ativar Cloud Shell”
- Aguarde a configuração da máquina
- No terminal, use este comando e copie o endereço da conta de serviço de saída
-
gcloud beta services identity create --service=iap.googleapis.com --project=PROJECT_ID
- O formato da saída que você pode copiar deve ser
[email protected]
- Acesse Cloud Run, na lista Serviços, marque a caixa de seleção ao lado do nome do seu serviço
- Clique em Permissões > Adicionar Principal
- Conceda o papel
Cloud Run Invoker
à conta de serviço IAP criada/buscada anteriormente
7 Criar zona DNS
- Serviço de rede > Cloud DNS
- > Criar zona
- Preencha o formulário
- Nome da zona:
imgstudio
- Nome DNS :
imgstudio.YOUR_COMPANY_DOMAIN
- DNSSEC:
Off
- Log na nuvem:
Off
- Assim que a propagação do DNS for concluída, verifique os servidores de nomes da zona gerenciada pelo DNS usando o comando abaixo (pode levar várias horas para ser concluído)
-
dig imgstudio.YOUR_COMPANY_DOMAIN NS +short
8 Criar balanceador de carga e certificado SSL
- Serviço de rede > Balanceamento de carga
- > Criar balanceador de carga
- Selecione:
- Tipo de balanceador de carga :
Application Load Balancer (HTTP/HTTPS)
- Voltado para o público ou interno :
Public Facing (external)
- Global ou região única :
Global
- Geração de balanceador de carga :
Global external Application Load Balancer
- > Configurar
- Nome do balanceador de carga:
YOUR_COMPANY-imgstudio-lb
- Configuração de front-end:
- Protocolo :
HTTPS
- O endereço IP pode ser deixado
Ephemeral
(você também pode configurar um IP estático) - Menu suspenso Certificado > Criar um novo certificado
- Nome:
YOUR_COMPANY-imgstudio-cert
- > Criar certificado gerenciado pelo Google
- Domínio 1 :
imgstudio.YOUR_COMPANY_DOMAIN
- > Criar
- > Concluído
- Configuração de back-end
- Serviços de back-end e buckets de back-end > Criar um serviço de back-end
- Nome:
YOUR_COMPANY-imgstudio-back
- Tipo de back-end :
Serverless Network Endpoint Group
> Concluído - Back-ends > Novo back-end > Menu suspenso Grupos de endpoints de rede sem servidor > Criar grupo de endpoints de rede sem servidor
- Nome:
YOUR_COMPANY-imgstudio-neg
- Região: a região em que o serviço Cloud Run foi implantado (ex:
europe-west9
) - Tipo de grupo de endpoints de rede sem servidor > Cloud Run > Selecionar serviço >
YOUR_COMPANY-imgstudio-app
> Criar - Ativar Cloud CDN >
Off
- > Criar
- Revise a configuração do Load Balancer
- > Criar
9 Criar registro DNS para front-end do Load Balancer
- Serviços de rede > Balanceamento de carga, selecione seu balanceador de carga
YOUR_COMPANY-imgstudio-lb
- Detalhes > Frontend > Porta IP
- Observe o endereço IP
- Serviços de rede > Cloud DNS, selecione sua zona DNS
imgstudio
- Conjuntos de registros > Adicionar padrão
- Criar conjunto de registros
- Nome DNS:
imgstudio.YOUR_COMPANY_DOMAIN
- Endereço IPv4 : o endereço IP do seu balanceador de carga
- > Criar
10 Habilite IAP e conceda acesso ao usuário
- Segurança > Proxy com reconhecimento de identidade
- Ative o IAP para seu serviço de back-end
YOUR_COMPANY-imgstudio-back
- Marque a caixa de seleção ao lado do seu serviço e > Adicionar principal
- Digite o endereço do usuário ( ou grupo ) ao qual deseja permitir acesso ao imgstudio
- Atribua a função
IAP-secured Web App User
, > Salvar
11 Criação do banco de dados Firestore
- Firestore > Criar banco de dados
- Modo Firestore:
Native mode
,> Continuar - ID do banco de dados:
(default)
( muito importante que você mantenha assim ) - Tipo de localização:
Region
- Região: a região desejada (ex:
europe-west9
em Paris) - Regras seguras:
Production rules
- Firestore > Índices > Índices compostos > Criar índice
- ID da coleção :
metadata
- Campos para indexar
- Caminho do campo 1:
combinedFilters
, opções de índice 1: Array contains
- Caminho do campo 2:
timestamp
, opções de índice 2: Descending
- Caminho do campo 3:
__name__
, Opções de índice 3: Descending
- Escopo da consulta:
Collection
- > Criar
- Aguarde até que o índice seja criado com sucesso!
- Vamos configurar regras de segurança no seu banco de dados e permitir que apenas sua conta de serviço do Cloud Run o acesse
- Em uma nova aba, vá para
-
https://console.firebase.google.com/project/PROJECT_ID/firestore/databases/-default-/rules
- Se necessário, siga as etapas para configurar seu projeto do Firebase
- Uma vez em Firestore Database > Rules, vá para o editor de regras de segurança
- Escreva o seguinte conteúdo, não se esqueça de substituir
YOUR_COMPANY
& PROJECT_ID
na conta de serviço do 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