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 を使用して環境を作成する場合、アカウントにこの追加の権限は必要ありません。
サービス プロジェクトを構成する
Cloud Composer 環境がサービス プロジェクトで作成されていない場合は、サービス プロジェクトで Composer サービス エージェント アカウントをプロビジョニングします。
gcloud beta services identity create --service=composer.googleapis.com`
ホスト プロジェクトを設定する
詳細な説明に従いホスト プロジェクトを構成します。
(プライベート 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 ネットワーク権限をそのままにします。
Composer サービス エージェント アカウントに権限を付与する
ホスト プロジェクトでは、以下のことが行われます。
Composer サービス エージェント アカウントの権限(
service-SERVICE_PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com
)を編集しますこのアカウントに、プロジェクト レベルで別のロールを追加します。
プライベート IP 環境では、
Composer Shared VPC Agent
ロールを追加します。パブリック IP 環境については、
Compute Network User
ロールを追加します。
Google API サービス エージェント アカウントに権限を付与する
ホスト プロジェクトでは、以下のことが行われます。
Google API サービス エージェント アカウント
SERVICE_PROJECT_NUMBER@cloudservices.gserviceaccount.com
の権限を編集します。プロジェクト レベルで別のロール Compute ネットワーク ユーザー(
compute.networkUser
)を追加します。このタイプのサービス アカウントでインスタンスの作成などのタスクを実行するため、この操作を共有 VPC で使用されるマネージド インスタンス グループに対して実施する必要があります。
GKE サービス アカウントの権限を編集する
ホスト プロジェクトで、GKE サービス アカウント service-SERVICE_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com
の権限を編集します。
サービス アカウントごとに、次のいずれかの方法で別のロール compute.networkUser
を追加します。
このロールをサブネット レベルで付与して、サービス アカウントが Cloud Composer に必要な VPC ピアリングを設定できるようにします。この場合、環境のクラスタにはネットワーク内のサブネットワークを見つける権限がない可能性があるため、環境で使用するサブネットワークを明示的に指定します。
ホスト プロジェクト全体に対して、このロールをプロジェクト レベルで付与します。この場合、サービス プロジェクトの 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 を使用する環境用の手順を行ってください。
まとめ
サービス プロジェクトとホスト プロジェクトの両方で共有 VPC ネットワークの構成が完了しました。
これで、ホスト プロジェクトの VPC ネットワークを使用するサービス プロジェクトに、新しい環境を作成できます。
次のステップ
- Cloud Composer 環境を作成し、ホスト プロジェクトのネットワークとサブネットワークを構成パラメータとして指定します。