Cloud Composer 1 | Cloud Composer 2
このページでは、Cloud Composer の共通 VPC ネットワークとホスト プロジェクトの要件について説明します。
共通 VPC により、組織はプロジェクト レベルで予算とアクセス制御の境界を確立する一方、その境界を越えてプライベート IP を使用する安全で効率的な通信を実現できます。共有 VPC 構成では、Cloud Composer は、公共のインターネットにサービスを公開することなく、同じ組織内の他の Google Cloud プロジェクトでホストされているサービスを呼び出すことができます。
共有 VPC のガイドライン
共有 VPC を使用するには、ネットワークとサブネットワークが属するホスト プロジェクトとホスト プロジェクトに関連付けられたサービス プロジェクトを指定する必要があります。Cloud Composer が共有 VPC に参加すると、Cloud Composer 環境はサービス プロジェクトに含められます。
共有 VPC を設定するには、ホスト プロジェクトで次の IP 範囲を選択します。
- Cloud Composer が Compute Engine レイヤとして使用する GKE ノードで使用されるサブネットのプライマリ IP 範囲
- GKE Service のセカンダリ IP 範囲
- GKE Pod のセカンダリ IP 範囲
セカンダリ IP 範囲はこの VPC の他のセカンダリ範囲と重複することはできません。
セカンダリ範囲がクラスタのサイズと環境のスケーリングに対応するのに十分な大きさであることを確認してください。
Pod のセカンダリ範囲とサービスの構成に関するガイドラインについては、VPC ネイティブ クラスタの作成をご覧ください。
サブネットのプライマリ アドレス範囲は、予想される増加と使用できない IP アドレスのアカウントに対応する必要があります。
環境で IP マスカレード エージェントとプライベート IP 構成を使用する場合は、
ip-masq-agent
ConfigMap のnonMasqueradeCIDRs
セクションにノードと Pod の IP 範囲を追加します。詳細については、IP マスカレード エージェントの構成をご覧ください。
準備
-
- ホスト プロジェクト: 共有 VPC ネットワークを含むプロジェクト。
- サービス プロジェクト: Cloud Composer 環境を含むプロジェクト。
ホスト プロジェクトとサービス プロジェクトで GKE API を有効にします。
Google Cloud コンソールを使用してサービス プロジェクトに環境を作成する場合、アカウントにはホスト プロジェクトでの
compute.subnetworks.use
権限が必要です。権限がない場合、使用可能なサブネットワークのリストにホスト プロジェクトのサブネットワークは含まれません。gcloud
、API、Terraform を使用して環境を作成する場合、アカウントにこの追加の権限は必要ありません。
ホスト プロジェクトを設定する
詳細な説明に従いホスト プロジェクトを構成します。
(プライベート IP)限定公開の Google アクセスを有効にする
プライベート IP 環境を使用する場合は、ホスト プロジェクトのサブネットで限定公開の Google アクセスを有効にします。これは、次のステップで新しいサブネットまたは既存のサブネット用のネットワーク リソースを構成するときに行うことができます。
パブリック IP 環境を使用する予定の場合は、引き続きホスト プロジェクトのサブネットで限定公開の Google アクセスを有効にすることをおすすめします。限定公開の Google アクセスを使用しない場合、暗黙の IPv4 下り(外向き)許可ファイアウォール ルールなら許可されるトラフィックをブロックしないでください。これは *.googleapis.com
エンドポイントに正常に到達するために必要です。
ネットワーキング リソースを構成する
次のいずれかのオプションを選択して、ネットワーク リソースを割り当てて構成します。オプションごとに、Pod と Service のセカンダリ IP 範囲を指定する必要があります。
オプション 1: 新しい VPC ネットワーク、サブネット、2 つのセカンダリ IP 範囲を作成します。
サブネットを作成する際は、次のガイドラインに従ってプライマリ IP 範囲を使用します。
サブネットを定義する場合は、Pod と Service 用に 2 つのセカンダリ IP 範囲を定義します。
オプション 2: 既存の VPC にサブネットと 2 つのセカンダリ IP 範囲を作成する。
サブネットを作成する際は、次のガイドラインに従ってプライマリ IP 範囲を使用します。
サブネットを定義する場合は、Pod と Service 用に 2 つのセカンダリ IP 範囲を定義します。
オプション 3 既存のサブネットと VPC に 2 つのセカンダリ IP 範囲を作成する。
- ガイドラインに沿って、Pod と Service の 2 つのセカンダリ IP 範囲を定義します。名前と IP 範囲が既存のセカンダリ範囲と競合することを回避してください。
共有 VPC を設定してサービス プロジェクトを接続する
まだ行っていない場合は、共有 VPC を設定します。共有 VPC をすでに設定している場合は、次のステップに進みます。
Cloud Composer 環境をホストするために使用するサービス プロジェクトを接続します。
プロジェクトを接続する際は、デフォルトの VPC ネットワーク権限をそのままにします。
Google API サービス アカウントの権限を編集する
ホスト プロジェクトで、Google API サービス アカウント SERVICE_PROJECT_NUMBER@cloudservices.gserviceaccount.com
の権限を編集します。
このアカウントに、プロジェクト レベルで別のロール compute.networkUser
を追加します。このタイプのサービス アカウントでインスタンスの作成などのタスクを実行するため、この操作を共有 VPC で使用されるマネージド インスタンス グループに対して実施する必要があります。
GKE サービス アカウントの権限を編集する
ホスト プロジェクトで、GKE サービス アカウント service-SERVICE_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com
の権限を編集します。
サービス アカウントごとに、別のロール compute.networkUser
を追加します。
このロールをサブネット レベルで付与して、サービス アカウントが Cloud Composer に必要な VPC ピアリングを設定できるようにします。この場合、GKE クラスタにネットワーク内のサブネットワークを特定する権限がない場合があるため、環境により使用されるサブネットワークを明示的に指定する必要があります。
別の方法として、このロールをホスト プロジェクト全体に付与することもできます。この場合、サービス プロジェクトの GKE サービス アカウントには、ホスト プロジェクト内の任意のサブネットを使用する権限があります。
サービス プロジェクトの GKE サービス アカウントの権限を編集する
ホスト プロジェクトで、サービス プロジェクトの GKE サービス アカウントの権限を編集します。
このアカウントには、プロジェクト レベルで別のロール Kubernetes Engine Host サービス エージェント ユーザー(roles/container.hostServiceAgentUser
)を追加します。
これにより、サービス プロジェクトの GKE サービス アカウントは、ホスト プロジェクトの GKE サービス アカウントを使用して共有ネットワーク リソースを構成できるようになります。
(プライベート IP、省略可)ファイアウォール ルールと Google ドメインへの接続を構成する
プライベート IP 環境を使用した共有 VPC 構成では、オプションとして、すべてのトラフィックを private.googleapis.com
ドメインに属する複数の IP アドレスを介して Google API とサービスにルーティングし、対応するファイアウォール ルールを構成できます。この構成では、環境は Google Cloud 内からのみルーティング可能な IP アドレスを使用して Google API とサービスにアクセスします。共有 VPC 構成で VPC Service Controls を使用している場合は、代わりに restricted.googleapis.com
を介してトラフィックをルーティングします。
共有 VPC 構成でプライベート IP 環境を使用している場合:
- (省略可)Google API とサービスへの接続を構成します。
- (省略可)ファイアウォール ルールを構成します。
共有 VPC 構成で VPC Service Controls を使用している場合は、代わりに VPC Service Controls を使用する環境向けの手順を使用します。
Composer エージェント サービス アカウントの権限を編集する
最初の Cloud Composer 環境の場合は、サービス プロジェクトで Composer エージェント サービス アカウント
gcloud beta services identity create --service=composer.googleapis.com
をプロビジョニングします。ホスト プロジェクトでは、以下のことが行われます。
Composer エージェント サービス アカウントの権限(
service-SERVICE_PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com
)を編集しますこのアカウントに、プロジェクト レベルで別のロールを追加します。
プライベート IP 環境では、
Composer Shared VPC Agent
ロールを追加します。パブリック IP 環境については、
Compute Network User
ロールを追加します。
これで、ホスト プロジェクトの共有 VPC ネットワークの構成が完了しました。
次のステップ
- Cloud Composer 環境を作成し、ホスト プロジェクトのネットワークとサブネットワークを構成パラメータとして指定します。