このガイドでは、事前に構築されたDockerイメージを使用して、CaseBenderをGoogle Cloud Runにデプロイする方法を説明します。
前提条件
- Google Cloudアカウント
- Google Cloud CLIがインストールされていること
- Dockerがインストールされていること
ステップ1: 初期設定
Google Cloud CLIのインストール
プロジェクトの初期化
# プロジェクト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検証手順に従ってください。
モニタリングとメンテナンス
モニタリングのセットアップ
- Google Cloud ConsoleのCloud Monitoringに移動
- サービスの稼働時間チェックを作成
- 以下のアラートを設定:
- エラー率
- レイテンシー
- インスタンス数
- メモリ使用量
ログの表示
# サービスログの表示
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
コスト最適化
-
自動スケーリングの設定
gcloud run services update casebender \
--min-instances=1 \
--max-instances=10 \
--region=us-central1
-
リソース割り当て
gcloud run services update casebender \
--memory=1Gi \
--cpu=1 \
--region=us-central1
トラブルシューティング
一般的な問題
-
接続の問題
- Cloud SQL接続の確認
- Redis接続の確認
- 環境変数の検証
-
パフォーマンスの問題
- インスタンスメトリクスの確認
- リソース割り当ての確認
- リクエストパターンの分析
-
デプロイの失敗
- ビルドログの確認
- サービスアカウント権限の確認
- デプロイ設定の確認
次のステップ
- CI/CDパイプラインの設定
- バックアップ戦略の構成
- モニタリングとアラートの実装
- セキュリティのベストプラクティスの確認