クラウド環境追加方法¶
新しいGCPプロジェクト(環境)を追加する手順です。
1. 初期セットアップ(GUI)¶
- GUIからプロジェクトを作成
- 請求先アカウントを紐づけ
- Cloud Build API を有効化してGitHubリポジトリを接続
- SOARIG/micoto
- SOARIG/sorarun-adk
- Cloud Resource Manager API を有効化
- 組織ポリシーをプロジェクトレベルで上書き(GCPコンソール → IAMと管理 → 組織のポリシー)
storage.publicAccessPrevention… GCSバケットへのallUsers公開読み取りを許可するため(メンテナンスモード利用時)iam.allowedPolicyMemberDomains…allUsersへの権限付与を許可するため(メンテナンスモード利用時)run.managed.requireInvokerIam… Cloud Run の公開アクセスを許可するため
2. 環境ディレクトリを作成¶
既存の環境をベースにファイルをコピーします。
NEWENV="micoto-newenv" # ← 新しい環境名に変更
mkdir -p environments/${NEWENV}/setup
cp environments/micoto-iac-dev/setup/backend.tf environments/${NEWENV}/setup/
cp environments/micoto-iac-dev/setup/main.tf environments/${NEWENV}/setup/
cp environments/micoto-iac-dev/setup/variable.tf environments/${NEWENV}/setup/
3. backend.tf を更新¶
environments/${NEWENV}/setup/backend.tf の bucket と prefix を環境に合わせて変更します。
Micoto プロジェクトの場合:
terraform {
backend "gcs" {
bucket = "micoto-iac-tfstate-bucket"
prefix = "micoto-newenv" # ← 新しい環境名(プロジェクトID推奨)
}
}
Sorarun プロジェクトの場合:
terraform {
backend "gcs" {
bucket = "sorarun-iac-tfstate-bucket"
prefix = "sorarun-newenv" # ← 新しい環境名(プロジェクトID推奨)
}
}
prefixは tfstate ファイルの保存パスになります。既存環境と重複しないように命名してください。
4. terraform.tfvars を作成¶
example.tfvars をベースに新しい環境用の tfvars ファイルを作成します。
以下の項目を実際の値に更新してください。必須項目以外はデフォルト値が使用されます。
初回 terraform apply 前に設定する項目¶
project_id = "your-project-id" # GCPプロジェクトID
site_title = "Your Site Title" # ブラウザ表示タイトル
region = "asia-northeast2" # GCPリージョン
trigger_branch_name = "main" # Cloud Buildトリガーのブランチ名
agent_location = "asia-northeast1" # Agent Engineのロケーション
review_form_url = "https://forms.gle/xxx" # レビューフォームのURL
folders = ["default", "default_sub"] # RAGデータのフォルダ名リスト。環境に合わせて変更すること
external_logging_viewer_sa = "sa-functions@your-project.iam.gserviceaccount.com" # ログ閲覧を許可する外部SA(必須)
# 以下は初回はダミー値でOK(後で更新)
agent_resource_no = "000000000000000000"
agent_url = "https://asia-northeast1-aiplatform.googleapis.com/v1/projects/your-project-id/locations/asia-northeast1/reasoningEngines/000000000000000000"
backend_url = ""
frontend_url = ""
5. gcloud ログイン(していなければ)¶
6. 静的ファイルのダウンロード¶
Sorarun の場合:
mkdir ./modules/setup/static_files
gsutil -m cp \
"gs://common-sorarun-asset-bucket/logo.png" \
"gs://common-sorarun-asset-bucket/prompt.txt" \
./modules/setup/static_files
Micoto の場合:
mkdir ./modules/setup/static_files
gsutil -m cp \
"gs://common-micoto-asset-bucket/logo.png" \
"gs://common-micoto-asset-bucket/prompt.txt" \
./modules/setup/static_files
7. Terraform で基本リソース作成(初回)¶
cd environments/${NEWENV}/setup
terraform init
terraform plan -out=apply-plan.tfplan
terraform apply "apply-plan.tfplan"
8. agent-master-trigger と functions-main-trigger を手動実行¶
GUIまたは gcloud コマンドで以下のトリガーを実行します。
agent-master-triggerfunctions-main-trigger
デプロイ後、以下の値を確認してください。
| リソース | 確認する値 |
|---|---|
Agent Engine (bq_datastore_agent) |
リソースNo. |
Agent Engine (bq_datastore_agent) |
リクエストURL |
Cloud Function (main-storage-event) |
URL |
Cloud Function (main-sync-datastore) |
URL |
9. terraform.tfvars を更新(1回目)¶
agent_resource_no = "123456" # ← Step8で確認したリソースNo.
agent_url = "https://asia-northeast1-aiplatform.googleapis.com/v1/projects/your-project-id/locations/asia-northeast1/reasoningEngines/123456" # ← Step8で確認したURL
10. backend-main-trigger を手動実行¶
GUIまたは gcloud コマンドで backend-main-trigger を実行します。
デプロイ後、Cloud Run main-backend の URL を確認してください。
11. terraform.tfvars を更新(2回目)¶
12. Cloud Run の環境変数を手動設定¶
main-backendの環境変数:AGENT_URL= Agent Engine のリクエストURL(Step8で確認)ALLOWED_ORIGINS="*"main-storage-eventの環境変数:REQ_URL=main-sync-datastoreの URL(Step8で確認)
13. Terraform で設定を更新(2回目)¶
cd environments/${NEWENV}/setup
terraform plan -var-file="terraform.tfvars"
terraform apply -var-file="terraform.tfvars"
更新される内容: - Pub/Sub を Push 型に変更(Cloud Function URL 設定) - Frontend の Cloud Build トリガーに Backend URL を置換変数として追加 - Agent の Cloud Build トリガーに Agent Resource No を置換変数として追加
14. frontend-main-trigger を手動実行¶
GUIまたは gcloud コマンドで frontend-main-trigger を実行します。
Frontend アプリケーションがデプロイされます。
15. Cloud Run の公開アクセスを許可¶
run.managed.requireInvokerIam のポリシーを変更し、以下の Cloud Run の公開アクセスを許可します。
main-backendfront-backend
16. Firebase Authentication 設定¶
GUIでパスワードリセットメールのテンプレートを設定します。
- 言語を日本語に設定
- パスワードリセットメールのURLを設定
17. 初期セットアップファイルの実行¶
firebase_setup/.env.firebasesetup ファイルを作成し、必要な環境変数を設定します。
(firebase_setup/.env.firebasesetup.example を参考にしてください)
PROJECT_ID=your-gcp-project-id
EMAIL=admin@example.com
PASSWORD=your-secure-password
DISPLAY_NAME=Admin User
管理者ユーザーを作成¶
実行後に出力される UID を控えておいてください。
初期フォルダを作成¶
.env.firebasesetup に以下を追記して createFolder.js を実行します。
FOLDER_NAMEとFOLDER_DATASTORE_IDは、Step 4 の tfvars で設定したfoldersの値と一致させてください。foldersに複数指定している場合は、フォルダごとに繰り返し実行します。
UID=上記で確認したUID
FOLDER_DISPLAY_NAME=デフォルト
FOLDER_DATASTORE_ID=default # ← folders の値に合わせること
FOLDER_NAME=default # ← folders の値に合わせること
FOLDER_DESCRIPTION=デフォルトのフォルダです