Claude Gateway 用 GCP デプロイ例と Terraform モジュールを追加
Claude Gateway を GCP 上で動作させるための実装資産が本 PR でリポジトリに初めて提供されました。これにより、公式ウォークスルーに対応した setup.sh、Docker イメージ定義、設定テンプレート、そして Terraform モジュールが一式揃い、手順通りに実行すれば即座に動作確認が可能です。
背景
これまで公式ドキュメントは Claude Gateway on GCP の手順 を説明していましたが、実際に動かすためのスクリプトやインフラコードがリポジトリに存在しませんでした。そのため利用者は自らコードを作成するか、手順を手作業で再現する必要があり、再現性や idempotent な実行が保証されませんでした。今回の PR はその欠損を埋め、例示的なデプロイ資産 を examples/gateway/gcp/ 配下に追加することで、公式ウォークスルーとコードの乖離を解消します。
技術的な変更
新規ディレクトリ構造 として examples/gateway/gcp/ 以下に多数のファイルが追加されました。主な追加項目は次の通りです。
setup.sh– GCP の API 有効化からサービスアカウント作成、Artifact Registry へのイメージプッシュ、プライベート IP Cloud SQL 構築、シークレット作成、gateway.yamlの Secret Manager 登録、Cloud Run デプロイまでを 順序通りに自動化 した Bash スクリプト。環境変数で上書き可能な設定項目が多数用意され、既存リソースは検出してスキップする 冪等性 が実装されています。Dockerfile–distroless/cc-debian12:nonrootをベースにした 非 root コンテナ を構築します。ARG CLAUDE_BINARYでバイナリパスを受け取り、COPY --chmod=0755 ${CLAUDE_BINARY} /usr/local/bin/claudeにより実行権限付きで配置し、ENTRYPOINTでclaude gateway --config /etc/claude/gateway.yamlを起動します。
# syntax=docker/dockerfile:1
ARG CLAUDE_BINARY=./claude
FROM gcr.io/distroless/cc-debian12:nonroot
ARG CLAUDE_BINARY
COPY --chmod=0755 ${CLAUDE_BINARY} /usr/local/bin/claude
ENV CLAUDE_CONFIG_DIR=/tmp/.claude
EXPOSE 8080
USER nonroot
ENTRYPOINT ["/usr/local/bin/claude", "gateway", "--config", "/etc/claude/gateway.yaml"]
gateway.yaml.example– GCP 向けの Claude Gateway 設定テンプレート。Vertex AI への upstream 設定や Google Workspace IdP の構成例がコメント付きで提供され、REPLACE_MEプレースホルダーを埋めるだけで実運用に近い形にできます。terraform/– Cloud Run、Artifact Registry、VPC、Private Services Access、プライベート IP Cloud SQL、Secret Manager などを Terraform で一括管理 できるモジュールです。variables.tfはsetup.shと同等のデフォルトを持ち、main.tfにリソース定義、outputs.tfでエンドポイントや DB 接続情報を出力します。
resource "google_project_service" "apis" {
for_each = toset(local.apis)
project = var.project_id
service = each.value
disable_on_destroy = false
disable_dependent_services = false
}
-
.gitignoreと.dockerignore–gateway.yaml、シークレット、バイナリ、Terraform state など 機密情報をバージョン管理から除外 するための除外パターンが定義されています。特に.dockerignoreはビルドコンテキストを最小化し、古い Docker ビルダーでの無駄なコピーを防ぎます。
設計判断
スクリプトと Terraform の二重提供 が本変更の核となります。setup.sh は単体で実行可能な 手順自動化ツール として、ローカル環境や CI での素早い検証を想定しています。一方、Terraform モジュールは インフラ全体のコード化 を目的とし、状態管理やチームでの協働に適した形態です。この二重構成により、ユーザーは用途に応じて選択でき、将来的にどちらかを廃止するリスクも分散されます。
コンテナイメージの安全性 については、distroless/cc-debian12:nonroot を採用し 非 root UID/GID (65532) で実行する設計です。これにより最小特権での動作が保証され、攻撃サーフェスが削減されます。また、ARG CLAUDE_BINARY による外部バイナリ注入を可能にし、独自ビルドやバージョン固定が容易です。
機密情報の管理 は Git が「見えない」ように .gitignore/.dockerignore で除外し、実際のシークレットは GCP Secret Manager に保存します。setup.sh はシークレット作成後に環境変数として Cloud Run に注入するため、コードベースに平文が残らない 設計です。Terraform でも同様に google_secret_manager_secret / secret_version リソースで管理し、gateway.yaml のプレースホルダー検証を precondition で強制しています。
まとめ
本 PR は Claude Gateway の GCP デプロイを 実装例として完全に具現化 し、スクリプト・Dockerfile・設定テンプレート・Terraform モジュールという四層の資産を提供します。非 root コンテナ、機密情報の除外・Secret Manager 管理、冪等なセットアップスクリプトといった設計判断により、利用者は安全かつ再現性の高い手順で本番稼働に近い環境を構築できるようになりました。