概要

このガイドでは、事前に構築されたDockerイメージを使用して、CaseBenderをGoogle Cloud Runにデプロイする方法を説明します。

前提条件

  1. Google Cloudアカウント
  2. Google Cloud CLIがインストールされていること
  3. Dockerがインストールされていること

ステップ1: 初期設定

Google Cloud CLIのインストール

# Homebrewを使用
brew install google-cloud-sdk

# Google Cloudにログイン

gcloud auth login

# DockerでGoogle Cloudを使用するように設定

gcloud auth configure-docker

プロジェクトの初期化

# プロジェクトIDの設定
gcloud config set project YOUR_PROJECT_ID

# 必要なAPIの有効化
gcloud services enable \
  cloudbuild.googleapis.com \
  run.googleapis.com \
  secretmanager.googleapis.com \
  cloudresourcemanager.googleapis.com \
  artifactregistry.googleapis.com

ステップ2: クラウドインフラストラクチャの設定

Cloud Storageバケットの作成

# ストレージバケットの作成
gsutil mb -l us-central1 gs://casebender-storage

# ストレージ用のサービスアカウントの作成
gcloud iam service-accounts create casebender-storage \
  --display-name "CaseBender Storage Service Account"

# サービスアカウントのメールアドレスの取得
STORAGE_SA_EMAIL=$(gcloud iam service-accounts list \
  --filter="displayName:CaseBender Storage Service Account" \
  --format="value(email)")

# 権限の付与
gsutil iam ch \
  serviceAccount:$STORAGE_SA_EMAIL:objectViewer,objectCreator \
  gs://casebender-storage

# サービスアカウントキーの作成とダウンロード
gcloud iam service-accounts keys create storage-key.json \
  --iam-account=$STORAGE_SA_EMAIL

# ストレージ認証情報用のシークレットの作成
gcloud secrets create casebender-storage-key \
  --replication-policy="automatic"

# サービスアカウントキーをシークレットとしてインポート
gcloud secrets versions add casebender-storage-key \
  --data-file=storage-key.json

Cloud SQL(PostgreSQL)のセットアップ

# PostgreSQLインスタンスの作成
gcloud sql instances create casebender-db \
  --database-version=POSTGRES_14 \
  --cpu=2 \
  --memory=4GB \
  --region=us-central1 \
  --root-password="YOUR_SECURE_PASSWORD"

# データベースの作成
gcloud sql databases create casebender \
  --instance=casebender-db

# ユーザーの作成
gcloud sql users create casebender \
  --instance=casebender-db \
  --password="YOUR_SECURE_PASSWORD"

Memorystore(Redis)のセットアップ

# Redisインスタンスの作成
gcloud redis instances create casebender-redis \
  --size=2 \
  --region=us-central1 \
  --redis-version=redis_6_x

Secret Managerの設定

# 環境変数の作成と保存
cat << EOF | gcloud secrets create casebender-env --data-file=-
AUTH_SECRET=your-auth-secret
AUTH_SALT=your-auth-salt
POSTGRES_PRISMA_URL="postgresql://casebender:YOUR_SECURE_PASSWORD@/casebender?host=/cloudsql/YOUR_PROJECT_ID:us-central1:casebender-db"
REDIS_URL="redis://REDIS_IP_ADDRESS:6379"
GOOGLE_STORAGE_BUCKET=casebender-storage
EOF

ステップ3: Dockerイメージのプルとプッシュ

# Artifact Registryリポジトリの作成
gcloud artifacts repositories create casebender \
  --repository-format=docker \
  --location=us-central1

# DockerをArtifact Registry用に設定
gcloud auth configure-docker us-central1-docker.pkg.dev

# CaseBenderイメージのプル
docker pull casebender/casebender:latest
docker pull casebender/workflow-processor:latest
docker pull casebender/misp-processor:latest

# Google Artifact Registry用のイメージのタグ付け
docker tag casebender/casebender:latest us-central1-docker.pkg.dev/$PROJECT_ID/casebender/app:latest
docker tag casebender/workflow-processor:latest us-central1-docker.pkg.dev/$PROJECT_ID/casebender/workflow-processor:latest
docker tag casebender/misp-processor:latest us-central1-docker.pkg.dev/$PROJECT_ID/casebender/misp-processor:latest

# イメージのプッシュ
docker push us-central1-docker.pkg.dev/$PROJECT_ID/casebender/app:latest
docker push us-central1-docker.pkg.dev/$PROJECT_ID/casebender/workflow-processor:latest
docker push us-central1-docker.pkg.dev/$PROJECT_ID/casebender/misp-processor:latest

ステップ4: サービスのデプロイ

メインアプリケーションのデプロイ

# Cloud Runへのデプロイ
gcloud run deploy casebender \
  --image us-central1-docker.pkg.dev/$PROJECT_ID/casebender/app:latest \
  --platform managed \
  --region us-central1 \
  --allow-unauthenticated \
  --set-env-vars GOOGLE_STORAGE_BUCKET=casebender-storage \
  --set-secrets "/secrets/storage-key=casebender-storage-key:latest" \
  --service-account=$STORAGE_SA_EMAIL \
  --add-cloudsql-instances $PROJECT_ID:us-central1:casebender-db \
  --set-secrets "/app/.env=casebender-env:latest"

ワークフロープロセッサーのデプロイ

# ワークフロープロセッサーのデプロイ
gcloud run deploy workflow-processor \
  --image us-central1-docker.pkg.dev/$PROJECT_ID/casebender/workflow-processor:latest \
  --platform managed \
  --region us-central1 \
  --no-allow-unauthenticated \
  --service-account=$STORAGE_SA_EMAIL \
  --add-cloudsql-instances $PROJECT_ID:us-central1:casebender-db \
  --set-secrets "/app/.env=casebender-env:latest"

MISPプロセッサーのデプロイ

# MISPプロセッサーのデプロイ
gcloud run deploy misp-processor \
  --image us-central1-docker.pkg.dev/$PROJECT_ID/casebender/misp-processor:latest \
  --platform managed \
  --region us-central1 \
  --no-allow-unauthenticated \
  --service-account=$STORAGE_SA_EMAIL \
  --add-cloudsql-instances $PROJECT_ID:us-central1:casebender-db \
  --set-secrets "/app/.env=casebender-env:latest"

ステップ5: ドメインとSSLの設定

カスタムドメインのマッピング

# ドメインマッピングの追加
gcloud run domain-mappings create \
  --service casebender \
  --domain your-domain.com \
  --region us-central1

ドメインマッピングを完了するには、Google Cloud ConsoleでのDNS検証手順に従ってください。

モニタリングとメンテナンス

モニタリングのセットアップ

  1. Google Cloud ConsoleのCloud Monitoringに移動
  2. サービスの稼働時間チェックを作成
  3. 以下のアラートを設定:
    • エラー率
    • レイテンシー
    • インスタンス数
    • メモリ使用量

ログの表示

# サービスログの表示
gcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=casebender" --limit 50

# ログのストリーミング
gcloud logging tail "resource.type=cloud_run_revision AND resource.labels.service_name=casebender"

アプリケーションの更新

更新をデプロイするには:

# 新しいバージョンのビルドとデプロイ
gcloud builds submit --config cloudbuild.yaml

# 必要に応じてロールバック
gcloud run services rollback casebender \
  --to-revision=REVISION_ID \
  --region=us-central1

コスト最適化

  1. 自動スケーリングの設定

    gcloud run services update casebender \
      --min-instances=1 \
      --max-instances=10 \
      --region=us-central1
  2. リソース割り当て

    gcloud run services update casebender \
      --memory=1Gi \
      --cpu=1 \
      --region=us-central1

トラブルシューティング

一般的な問題

  1. 接続の問題

    • Cloud SQL接続の確認
    • Redis接続の確認
    • 環境変数の検証
  2. パフォーマンスの問題

    • インスタンスメトリクスの確認
    • リソース割り当ての確認
    • リクエストパターンの分析
  3. デプロイの失敗

    • ビルドログの確認
    • サービスアカウント権限の確認
    • デプロイ設定の確認

次のステップ

  • CI/CDパイプラインの設定
  • バックアップ戦略の構成
  • モニタリングとアラートの実装
  • セキュリティのベストプラクティスの確認