日本語
ステップバイステップの手順でCaseBenderをGoogle Cloud Runにデプロイする
# 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
# ストレージバケットの作成 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
# 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"
# Redisインスタンスの作成 gcloud redis instances create casebender-redis \ --size=2 \ --region=us-central1 \ --redis-version=redis_6_x
# 環境変数の作成と保存 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
# 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
# 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プロセッサーのデプロイ 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"
# ドメインマッピングの追加 gcloud run domain-mappings create \ --service casebender \ --domain your-domain.com \ --region us-central1
# サービスログの表示 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