Skip to content

GCP

Takos を Google Cloud Platform にホストする方法。このページは takos オペレーター向け。Cloud Run 上で Takos runtime の互換 backend を動かす。

アプリ開発者へ

このページは takos オペレーター向けです。public spec は Cloudflare-native のままで、GCP では Takos runtime が provider-backed resource と Takos-managed runtime を組み合わせて同じ takos apply surface を解決します。

リソースマッピング

app.yml のリソース宣言が GCP サービスに自動マッピングされる:

app.ymlGCP サービスアダプタ
d1PostgreSQL (Cloud SQL)PostgreSQL adapter
r2Cloud Storage (GCS)gcs-object-store
kvFirestorefirestore-kv-store
queuePub/Subpubsub-queue
vectorizePostgreSQL + pgvector (Cloud SQL)pgvector-store
analyticsEngineTakos analytics runtimeanalytics-engine-binding
workflowTakos workflow runtimeworkflow-binding
durableObjectTakos durable runtimepersistent-durable-objects
secretRefSecret Managergcp-secret-manager
workersCloud Run (Node.js)Node.js platform adapter
servicesCloud RunOCI deployment provider (cloud-run)

必要なもの

  • GCP プロジェクト
  • サービスアカウント(後述の権限設定を参照)
  • takos-cli がインストール済み
  • PostgreSQL 16+(Cloud SQL 推奨)

セットアップ

1. 必要な IAM ロール

Takos のデプロイ・運用に必要なロール:

ロール用途
roles/storage.adminGCS バケット管理
roles/datastore.userFirestore 読み書き
roles/pubsub.editorPub/Sub トピック・サブスクリプション管理
roles/secretmanager.adminSecret Manager secret 管理
roles/cloudsql.clientCloud SQL 接続
roles/run.adminCloud Run サービス管理
roles/iam.serviceAccountUserCloud Run のサービスアカウント指定

サービスアカウント

本番では Workload Identity Federation を使って、サービスアカウントキーファイルなしで認証するのが推奨。

2. 環境変数

bash
# GCP 認証(サービスアカウントキーを使う場合)
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/service-account-key.json"
export GCP_PROJECT_ID="your-project-id"

# PostgreSQL (Cloud SQL)
export DATABASE_URL="postgresql://takos:password@/takos?host=/cloudsql/project:region:instance"

# GCS
export GCS_BUCKET="takos-worker-bundles"
export GCS_PROJECT_ID="${GCP_PROJECT_ID}"

# Firestore
export FIRESTORE_PROJECT_ID="${GCP_PROJECT_ID}"
export FIRESTORE_COLLECTION_NAME="takos-kv"

# Pub/Sub(platform background queues)
export GCP_PUBSUB_RUN_TOPIC="takos-runs"

# tenant queue / secret resources
# queue は provider_resource_name を Pub/Sub topic 名として作成し、subscription は自動生成する
# secretRef は provider_resource_name を Secret Manager secret 名として作成・解決する

# pgvector(セマンティック検索を使う場合)
export PGVECTOR_ENABLED="true"
export POSTGRES_URL="${DATABASE_URL}"

3. インフラの準備

Cloud SQL (PostgreSQL)

bash
gcloud sql instances create takos-db \
  --database-version=POSTGRES_16 \
  --tier=db-custom-2-4096 \
  --region=asia-northeast1

gcloud sql databases create takos \
  --instance=takos-db

gcloud sql users create takos \
  --instance=takos-db \
  --password="your-password"

pgvector を使う場合:

sql
CREATE EXTENSION IF NOT EXISTS vector;

Cloud SQL での pgvector

Cloud SQL for PostgreSQL は pgvector をネイティブサポートしている。追加のインストール不要で CREATE EXTENSION だけで有効化できる。

GCS バケット

bash
gsutil mb -l asia-northeast1 gs://takos-worker-bundles
gsutil mb -l asia-northeast1 gs://takos-tenant-builds
gsutil mb -l asia-northeast1 gs://takos-tenant-source
gsutil mb -l asia-northeast1 gs://takos-git-objects

Firestore

bash
gcloud firestore databases create \
  --location=asia-northeast1 \
  --type=firestore-native

Firestore の TTL ポリシーを設定すると、期限切れの KV エントリが自動で削除される:

bash
gcloud firestore fields ttls update expiresAt \
  --collection-group=takos-kv \
  --enable-ttl

Pub/Sub(platform background queues)

bash
gcloud pubsub topics create takos-runs
gcloud pubsub topics create takos-index-jobs
gcloud pubsub topics create takos-workflow-jobs
gcloud pubsub topics create takos-deployment-jobs

# サブスクリプション(worker のポーリング用)
gcloud pubsub subscriptions create takos-runs-sub --topic=takos-runs
gcloud pubsub subscriptions create takos-index-jobs-sub --topic=takos-index-jobs
gcloud pubsub subscriptions create takos-workflow-jobs-sub --topic=takos-workflow-jobs
gcloud pubsub subscriptions create takos-deployment-jobs-sub --topic=takos-deployment-jobs

takos のデプロイ

takos 自体を GCP にデプロイするには、gcloud / Terraform でインフラを構築してから takos を起動する:

bash
# Cloud Run にデプロイ
gcloud run deploy takos-control-web \
  --image your-registry/takos-control:latest \
  --region asia-northeast1 \
  --set-env-vars "DATABASE_URL=..." \
  --allow-unauthenticated

アプリ開発者がアプリをデプロイするときは、環境を問わず同じコマンド:

bash
takos apply --env production

Cloudflare backend との差分

Cloudflare backend の機能GCP backend での実現
Durable ObjectsTakos durable runtime
Analytics EngineTakos analytics runtime
Dispatch Namespaceruntime-host dispatch path
CF ContainersCloud Run サービス
Browser Renderingbrowser-service コンテナ(Cloud Run)

次に読むページ