コンテンツにスキップ

クラウド環境追加方法

新しいGCPプロジェクト(環境)を追加する手順です。

1. 初期セットアップ(GUI)

  • GUIからプロジェクトを作成
  • 請求先アカウントを紐づけ
  • Cloud Build API を有効化してGitHubリポジトリを接続
    • SOARIG/micoto
    • SOARIG/sorarun-adk
  • Cloud Resource Manager API を有効化
  • 組織ポリシーをプロジェクトレベルで上書き(GCPコンソール → IAMと管理 → 組織のポリシー)
    • storage.publicAccessPrevention … GCSバケットへの allUsers 公開読み取りを許可するため(メンテナンスモード利用時)
    • iam.allowedPolicyMemberDomainsallUsers への権限付与を許可するため(メンテナンスモード利用時)
    • 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.tfbucketprefix を環境に合わせて変更します。

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 ファイルを作成します。

cp example.tfvars environments/${NEWENV}/setup/terraform.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 ログイン(していなければ)

gcloud auth application-default login

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-triggerfunctions-main-trigger を手動実行

GUIまたは gcloud コマンドで以下のトリガーを実行します。

  • agent-master-trigger
  • functions-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回目)

backend_url = "https://main-backend-000000000000.asia-northeast2.run.app"  # ← Step10で確認したURL

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-backend
  • front-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

管理者ユーザーを作成

cd firebase_setup
node createUser.js

実行後に出力される UID を控えておいてください。

初期フォルダを作成

.env.firebasesetup に以下を追記して createFolder.js を実行します。

FOLDER_NAMEFOLDER_DATASTORE_ID は、Step 4 の tfvars で設定した folders の値と一致させてください。 folders に複数指定している場合は、フォルダごとに繰り返し実行します。

UID=上記で確認したUID
FOLDER_DISPLAY_NAME=デフォルト
FOLDER_DATASTORE_ID=default   # ← folders の値に合わせること
FOLDER_NAME=default            # ← folders の値に合わせること
FOLDER_DESCRIPTION=デフォルトのフォルダです
node createFolder.js