共有 VPC の構成

Cloud Composer 1 | Cloud Composer 2

このページでは、Cloud Composer の共通 VPC ネットワークとホスト プロジェクトの要件について説明します。

共通 VPC により、組織はプロジェクト レベルで予算とアクセス制御の境界を確立する一方、その境界を越えてプライベート IP を使用する安全で効率的な通信を実現できます。共有 VPC 構成では、Cloud Composer は、公共のインターネットにサービスを公開することなく、同じ組織内の他の Google Cloud プロジェクトでホストされているサービスを呼び出すことができます。

共有 VPC のガイドライン

Cloud Composer のサービス プロジェクトとホスト プロジェクト
図 1. Cloud Composer のサービス プロジェクトとホスト プロジェクト
  • 共有 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 マスカレード エージェントの構成をご覧ください。

準備

  1. 次のプロジェクト ID とプロジェクト番号を確認します

    • ホスト プロジェクト: 共有 VPC ネットワークを含むプロジェクト。
    • サービス プロジェクト: Cloud Composer 環境を含むプロジェクト。
  2. 組織を準備します

  3. ホスト プロジェクトとサービス プロジェクトで GKE API を有効にします

  4. Google Cloud コンソールを使用してサービス プロジェクトに環境を作成する場合、アカウントにはホスト プロジェクトでの compute.subnetworks.use 権限が必要です。権限がない場合、使用可能なサブネットワークのリストにホスト プロジェクトのサブネットワークは含まれません。gcloud、API、Terraform を使用して環境を作成する場合、アカウントにこの追加の権限は必要ありません。

ホスト プロジェクトを設定する

詳細な説明に従いホスト プロジェクトを構成します。

(プライベート IP)限定公開の Google アクセスを有効にする

プライベート IP 環境を使用する場合は、ホスト プロジェクトのサブネットで限定公開の Google アクセスを有効にします。これは、次のステップで新しいサブネットまたは既存のサブネット用のネットワーク リソースを構成するときに行うことができます。

パブリック IP 環境を使用する予定の場合は、引き続きホスト プロジェクトのサブネットで限定公開の Google アクセスを有効にすることをおすすめします。限定公開の Google アクセスを使用しない場合、暗黙の IPv4 下り(外向き)許可ファイアウォール ルールなら許可されるトラフィックをブロックしないでください。これは *.googleapis.com エンドポイントに正常に到達するために必要です。

ネットワーキング リソースを構成する

次のいずれかのオプションを選択して、ネットワーク リソースを割り当てて構成します。オプションごとに、Pod と Service のセカンダリ IP 範囲を指定する必要があります。

共有 VPC を設定してサービス プロジェクトを接続する

  1. まだ行っていない場合は、共有 VPC を設定します。共有 VPC をすでに設定している場合は、次のステップに進みます。

  2. 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 環境を使用している場合:

  1. (省略可)Google API とサービスへの接続を構成します
  2. (省略可)ファイアウォール ルールを構成します

共有 VPC 構成で VPC Service Controls を使用している場合は、代わりに VPC Service Controls を使用する環境向けの手順を使用します。

  1. Google API とサービスへの接続を構成する
  2. ファイアウォール ルールの構成

Composer エージェント サービス アカウントの権限を編集する

  1. 最初の Cloud Composer 環境の場合は、サービス プロジェクトで Composer エージェント サービス アカウント gcloud beta services identity create --service=composer.googleapis.com をプロビジョニングします。

  2. ホスト プロジェクトでは、以下のことが行われます。

    1. Composer エージェント サービス アカウントの権限(service-SERVICE_PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com)を編集します

    2. このアカウントに、プロジェクト レベルで別のロールを追加します。

      • プライベート IP 環境では、Composer Shared VPC Agent ロールを追加します。

      • パブリック IP 環境については、Compute Network User ロールを追加します。

これで、ホスト プロジェクトの共有 VPC ネットワークの構成が完了しました。

次のステップ

  • Cloud Composer 環境を作成し、ホスト プロジェクトのネットワークとサブネットワークを構成パラメータとして指定します。