Cells ADR 004: Cell ごとに 1 つの VPC、Cells 間の内部通信には Private Service Connect を使用

背景

この Issue では次のことを議論しました:

決定

Cell ごとに 1 つの VPC を持ち、リージョンごとに 1 つのサブネット(GKE 内部のサブネットを除く)を持ち、必要に応じて Cells 間の通信は Private Service Connect を介して行うことに決定しました。

この決定の動機はセキュリティとシンプルさです:

  • ADR 002 で決定された Cell ごとに 1 つの GCP プロジェクトという方針により、同じ VPC 内に複数の cell を配置する可能性は排除されます。
  • 各 Cell は独自の隔離された VPC に存在し、Cell 間にファイアウォールルールを設定する必要がなく、IP アドレス範囲の競合もありません。
  • 各 Cell は他の Cells から到達可能である必要のあるサービスのみを公開し、その際にも IP アドレスの競合はありません。

結果

Cell ごとに 1 つの VPC を持つことで、IP アドレス空間の重複を心配する必要がなくなり Cell の provisioning と管理がより簡単になり、また Cells はデフォルトで完全に隔離されるためセキュアになります。

Private Service Connect は内部アプリケーションロードバランサのために 追加コスト を発生させます。これは Cells 間のトラフィック量によって影響の大きさが変わる可能性があります。

代替案

VPC peering は デフォルトで VPC ごとに 50 peering までに制限 されており、shared VPC は 100 host project に制限 されています。これらは Cells がスケールできる範囲を制約します。また、重複を避けるために Cell ごとに一意の IP アドレス範囲を割り当てる必要があり、サブネット間を分離するために追加のセキュリティ対策(ファイアウォールルールなど)も必要になります。