Claude Gateway 用 GCP デプロイ例と Terraform モジュールを追加

anthropics/claude-code

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 スクリプト。環境変数で上書き可能な設定項目が多数用意され、既存リソースは検出してスキップする 冪等性 が実装されています。

  • Dockerfiledistroless/cc-debian12:nonroot をベースにした 非 root コンテナ を構築します。ARG CLAUDE_BINARY でバイナリパスを受け取り、COPY --chmod=0755 ${CLAUDE_BINARY} /usr/local/bin/claude により実行権限付きで配置し、ENTRYPOINTclaude 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.tfsetup.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.dockerignoregateway.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 管理、冪等なセットアップスクリプトといった設計判断により、利用者は安全かつ再現性の高い手順で本番稼働に近い環境を構築できるようになりました。

記事メタデータ

Generated by:
gpt-oss-120b for DiffDaily
LLM Trace:
319602e9

この記事はAIによって自動生成されています。内容の正確性については、必ずソースコードやPRを確認してください。

品質レビュー結果

Review Status:
承認済み
Review Count:
1回
Reviewed by:
gpt-oss-120b for DiffDaily

Review Criteria:

記事構成 ✓ PASS

Title, Context, Technical Detailの存在と明確さ

リード文がタイトル直下にあり、背景(Context)、技術的変更(Technical Detail)、設計判断(任意)、まとめ(Conclusion)の構成が明確に順序付けられています。必須要素がすべて揃っています。

カスタムMarkdown構文 ✓ PASS

シンタックスハイライト・GitHubリンク記法の正確性

コードブロックは `dockerfile:Dockerfile` と `hcl:terraform/main.tf` の形式で正しく記載され、GitHubリンクは PR 番号が正しくハイパーリンク化されています。

対象読者への適合性 ✓ PASS

エンジニア向けの適切な技術レベルと表現

専門的なエンジニア向けの記述で、余計な初心者向け解説はなく、技術的な深さも適切です。

パラグラフ・ライティング ✓ PASS

トピックセンテンス・1段落1トピック・段落長

各セクションは総論→各論→結論の流れがあり、段落はトピックセンテンスで始まり、1段落1トピック・6文以内に収まっています。段落間は空行で区切られています。

Diff内容との照合 ✓ PASS

コードブロックとDiff内容の一致

記事内の Dockerfile と Terraform のコードブロックは Diff に含まれる内容と一致しています。抜粋は適切で、誤りや省略による理解障害はありません。

技術用語の正確性 ✓ PASS

技術用語の正確な使用

用語は PR の記述と一致しており、誤用は見られません。

説明の技術的正確性 ✓ PASS

技術的主張の正確性と論理性

技術的な説明は PR の概要・Diff の内容と合致しており、根拠のない主張はありません。

事実の突合 ✓ PASS

PR情報による主張の裏付け(ハルシネーション検出)

すべての事実は PR の情報(タイトル、説明、Diff)に裏付けられており、推測や捏造は検出されませんでした。

数値・固有名詞の確認 ✓ PASS

PR番号・コミットID・バージョン等の正確性

PR 番号 #72361 を正しく記載し、他の数値や固有名詞の誤りはありません。

タイトル・説明との一致 ✓ PASS

記事タイトル・説明とPR内容の一致

記事タイトルは PR の趣旨(Claude Gateway の GCP 用例資産追加)を正確に日本語で表現しています。

外部知識の正確性 ✓ PASS

PRに記載のない外部知識(LTS、サポート状況など)の不使用

記事は PR に記載された範囲外のバージョンサポートやリリース予定等の外部知識を付加していません。

時間表現の正確性 ✓ PASS

時間表現がPR情報と一致しているか

時間表現に関して PR と食い違う記述はありません。