ImgStudio 인프라 설정 가이드
0 Imagen 모델 에 액세스하세요
- 일반적으로 Vertex의 경우: 콘솔에서 (새로운 기능!)
-
Vertex AI
> Enable all recommended APIs
으로 이동합니다. - 여기에는 Vertex AI API, Cloud Storage API가 포함되어야 합니다.
- Imagen Generation의 경우: Imagen 3 편집 모델( Imagen 3 생성 (imagen-3.0-generate-001) 및 Imagen 3 생성 빠른 (imagen-3.0-fast-generate-001))에 대한 액세스 권한을 받으려면 Google Cloud 담당자에게 문의하세요.
- 이미지 편집 : Google Cloud 담당자에게 연락하여 미리보기 액세스 권한을 요청하거나 GA일 때 알림을 받으세요.
- Vertex Segmentation의 경우 : 편집을 사용할 때에도 이 새 모델에 액세스해야 합니다.
1 Cloud Storage 버킷 만들기
- 사양: 원하는 지역의 지역(예: 파리의
europe-west9
) - 버킷 3개 만들기
- 원시 생성 출력 콘텐츠 :
YOUR_COMPANY-imgstudio-output
- 공유 콘텐츠 :
YOUR_COMPANY-imgstudio-library
- 구성 파일 버킷 :
YOUR_COMPANY-imgstudio-export-config
- 여기에서 저장소에서 예시를 찾을 수 있는 용도별 구성 파일인
export-fields-options.json
업로드하세요. 이 파일의 목적은 생성된 콘텐츠에 대해 설정하려는 원하는 메타데이터를 설정하는 것입니다. - 이 파일에서는 각 필드 (예: contextAuthorTeam, contextTargetPlatform, contextAssociatedBrand, contextCollection)에 대해 필드 ID (예:
“contextAuthorTeam”
), 해당 라벨 (예: “In which team are you?”
)만 변경할 수 있습니다. , 이름 (예: “Associated team(s)”
), 태그는 필수 (예: true
) 및 마지막으로 옵션 - 주목! ID 및 옵션 값은 문자만 포함해야 하며 공백이나 특수 문자는 사용할 수 없으며 소문자로 시작해야 합니다.
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
- 버킷에 있는 구성 JSON 파일의 URI
- 예:
gs://YOUR_COMPANY-imgstudio-export-config/export-fields-options.json
-
_NEXT_PUBLIC_GCS_BUCKET_LOCATION
- GCS 버킷으로 선택한 지역
- 예:
europe-west9
-
_NEXT_PUBLIC_VERTEX_API_LOCATION
- VertexAI API에 사용하려는 리전
- 예:
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를 통해 로그인하는 데 사용되는 사용자 이메일 주소 중 사용자 ID를 얻으려면 삭제해야 하는 섹션(쉼표로 구분)
- 예: 내 이메일 주소는 '[email protected]'입니다. 사용자 ID jdupont를 추출할 수 있도록 설정할 값은
admin-,@company.com
입니다.
-
_NEXT_PUBLIC_EDIT_ENABLED
(신규!)- 편집 기능 활성화를 허용하고, 아직 액세스 권한이 없으면 '
false
'로 설정하세요.
-
_NEXT_PUBLIC_EDIT_MODEL
(신규!)- 편집이 활성화된 경우에만 필수입니다.
- 편집 모델에 대한 서비스 이름(액세스 권한 부여 시)
-
_NEXT_PUBLIC_SEG_MODEL
(신규!)- 편집이 활성화된 경우에만 필수입니다.
- Vertex Segmentation 모델에 대한 서비스 이름(액세스 권한 부여 시)
- 서비스 계정: 기존 Cloud Build 서비스 계정
[email protected]
을 선택하세요.- IAM에서
Artifact Registry Writer
및 Logs Writer
역할이 있는지 확인할 수 있습니다.
- > 저장
- 첫 번째 빌드를 수동으로 실행하세요!
3 IAP 활성화 및 oAuth 동의 화면 구성
- 보안 > ID 인식 프록시 로 이동하여 API를 활성화하세요.
- > 동의 화면 구성 (oAuth)
- 사용자 유형은 다음 중 하나일 수 있습니다.
- IAP 사용자를 GCP 조직 도메인 으로 제한하려는 경우
Internal
- GCP 조직과 다른 도메인 에 일부 사용자가 있는 경우
External
- > 만들기
- 작성
- 앱 이름:
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
- 컨테이너 이미지 > Cloud Build에서 방금 빌드한
latest
이미지를 Artifact 레지스트리 에서 선택하세요. - 이름:
YOUR_COMPANY-imgstudio-app
- 지역 설정(예:
europe-west9
) - 인증 : 인증 필요
- 수신 제어 >
Internal
> Allow traffic from external Application Load Balancers
- 컨테이너 > 컨테이너 포트:
3000
- 보안 > 서비스 계정:
YOUR_COMPANY-imgstudio-sa
- > 만들기
- 주의: 새 서비스에 대해 게시된 URL에 액세스하려고 하면 "오류: 페이지를 찾을 수 없습니다"라는 오류 메시지가 표시됩니다. 이는 로드 밸런서의 외부 트래픽에 대한 수신만 허용하기 때문입니다.
6 Cloud Run 서비스에 IAP 권한 부여
- IAP 서비스 계정 주소 만들기
- 콘솔 오른쪽 상단 > Shell 아이콘 “Cloud Shell 활성화”로 이동합니다.
- 기기가 설정될 때까지 기다리세요
- 터미널에서 이 명령을 사용하고 출력 서비스 계정 주소를 복사합니다.
-
gcloud beta services identity create --service=iap.googleapis.com --project=PROJECT_ID
- 복사할 수 있는 출력 형식은
[email protected]
이어야 합니다.
- Cloud Run으로 이동하여 서비스 목록에서 서비스 이름 옆에 있는 체크박스를 선택하세요.
- 권한 > 주체 추가를 클릭하세요.
- 이전에 생성/가져온 IAP 서비스 계정 에
Cloud Run Invoker
역할을 부여합니다.
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 활성화 및 사용자 액세스 권한 부여
- 보안 > 신원 인식 프록시
- 백엔드 서비스
YOUR_COMPANY-imgstudio-back
에 대해 IAP를 활성화합니다. - 서비스 옆에 있는 확인란을 선택한 다음 > 주체 추가를 선택합니다.
- imgstudio에 대한 액세스를 허용하려는 사용자( 또는 그룹 )의 주소를 입력하세요.
-
IAP-secured Web App User
역할 할당 > 저장
11 Firestore 데이터베이스 생성
- Firestore > 데이터베이스 만들기
- Firestore 모드 :
Native mode
, > 계속 - 데이터베이스 ID :
(default)
( 그렇게 유지하는 것이 매우 중요합니다 ) - 위치 유형:
Region
- 지역: 원하는 지역(예: 파리의
europe-west9
) - 보안 규칙:
Production rules
- Firestore > 색인 > 복합 색인 > 색인 만들기
- 컬렉션 ID :
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 데이터베이스 > 규칙에서 보안 규칙 편집기 로 이동합니다.
- 다음 콘텐츠를 작성하세요. Cloud Run 서비스 계정에서
YOUR_COMPANY
및 PROJECT_ID
바꾸는 것을 잊지 마세요 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;
}}}
- > 게시