サービス サブネットをピアリングから Private Service Connect に移行する

このドキュメントでは、サービス プロデューサーがピアリング ベースのサービスを Private Service Connect に移行し、サービスへのアクセスに使用される IP アドレスを保持する方法について説明します。この移行プロセスでは、特定のサブネットに接続されているすべてのリソースを同時に移行する必要があります。

移行プロセスはサービス プロデューサーによって開始されますが、プロデューサーとコンシューマの両方によって完了するタスクが含まれます。Google 管理サービスは、サービス エージェントを使用して、コンシューマに代わってタスクを実行できます。移行には、プロデューサーとコンシューマの両方でのダウンタイムと料金の変更が伴います。

各サービス プロデューサーは、Private Service Connect に移行するかどうかと移行するタイミングを決定します。サービス プロデューサーが VPC ネットワーク ピアリングから Private Service Connect に移行しているかどうかを確認するには、サービスのドキュメントを確認するか、サービス プロデューサーにお問い合わせください。

始める前に

Private Service Connect を使用してサービスをデプロイする

新しい VPC ネットワークを作成し、ネットワークにサービス リソースをデプロイし、Private Service Connect を介してサービスを公開します。

サービスのロードバランサを作成するときは、ロードバランサで以前に使用されていた IP アドレスとは異なる IP アドレスを使用します。元の IP アドレスは、後でエンドポイントを作成する際に必要になります。

サービスを公開するときに、サービス アタッチメントを作成します。サービス アタッチメント URI は、後でエンドポイントを作成する際にも必要になります。

ピアリング ベースのサービスをシャットダウンする

ピアリング ベースのサービスをシャットダウンするには、プロデューサー サブネットを削除する前に、サービスの IP アドレス範囲を予約する内部範囲を作成する必要があります。

内部範囲を作成する

プロデューサー サブネットを削除する前に、内部範囲を作成して、サブネットの IP アドレス範囲がプロデューサー ネットワークまたはコンシューマ ネットワーク内の他のサブネットによって再利用されないようにします。

この内部範囲の詳細については、移行の内部範囲をご覧ください。

gcloud

internal-ranges create コマンドを使用します。

gcloud network-connectivity internal-ranges create RANGE_NAME \
    --project=PRODUCER_PROJECT_ID \
    --ip-cidr-range=CIDR_RANGE \
    --network=PRODUCER_NETWORK_NAME \
    --usage=FOR_MIGRATION \
    --migration-source=PRODUCER_SUBNET_URI \
    --migration-target=CONSUMER_SUBNET_URI

次のように置き換えます。

  • RANGE_NAME: 新しい内部範囲の名前。
  • PRODUCER_PROJECT_ID: プロデューサー プロジェクトの ID。
  • CIDR_RANGE: 新しい内部範囲に割り当てる CIDR 範囲。
  • PRODUCER_NETWORK_NAME: 内部範囲を作成するネットワークの名前。
  • PRODUCER_SUBNET_URI: サービスのロードバランサを含むプロデューサー サブネットの URI。
  • CONSUMER_SUBNET_URI: 対象のコンシューマ サブネットの URI。このサブネットは、このコマンドを実行する時点では存在しません。

ピアリング プロデューサー サブネットを削除する

サブネットを削除する前に、プロデューサー サブネット内のすべてのリソース(仮想マシン(VM)インスタンス、転送ルール、インスタンス グループ、ヘルスチェック、予約済み IP アドレスなど)を削除する必要があります。リソースを削除したら、サブネットを削除できます。

コンシューマ リソースを作成する

サービス コンシューマと連携して、VPC ネットワークに次のリソースを作成します。リソースは手動で作成できます。また、Google が管理するサービスの場合は、サービス エージェントを使用して自動化することもできます。

ピア移行サブネットを作成する

コンシューマの VPC ネットワークにピア移行サブネットを作成して、Private Service Connect エンドポイントの IP アドレスを指定します。このサブネットの目的は PEER_MIGRATION です。これにより、Private Service Connect エンドポイント以外のリソースにサブネットが使用されるのを防ぐことができます。

詳細については、ピア移行サブネットをご覧ください。

gcloud

networks subnets create コマンドを使用します。

gcloud compute networks subnets create CONSUMER_SUBNET \
    --purpose=PEER_MIGRATION \
    --project=CONSUMER_PROJECT \
    --network=CONSUMER_NETWORK \
    --range=CIDR_RANGE \
    --region=REGION

次のように置き換えます。

  • CONSUMER_SUBNET: コンシューマ サブネットの名前
  • CONSUMER_PROJECT: コンシューマー プロジェクトの ID
  • CONSUMER_NETWORK: コンシューマ ネットワークの名前
  • CIDR_RANGE: 新しいサブネットに割り当てる CIDR 範囲。この範囲は、内部範囲の CIDR 範囲と一致する必要があります。
  • REGION: サブネットを作成するリージョン

Private Service Connect エンドポイントを作成する

コンシューマのピア移行サブネットに Private Service Connect エンドポイントを作成します。コンシューマは、エンドポイントを作成するためにサービス アタッチメント URI が必要です。

gcloud

  1. エンドポイントの内部 IP アドレスを予約します。

    addresses create コマンドを使用します。

    gcloud compute addresses create ENDPOINT_ADDRESS_NAME \
        --project=CONSUMER_PROJECT \
        --region=REGION \
        --address=ENDPOINT_ADDRESS \
        --subnet=CONSUMER_SUBNET
    

    次のように置き換えます。

    • ENDPOINT_ADDRESS_NAME: IP アドレス リソースの名前
    • CONSUMER_PROJECT: コンシューマー プロジェクトの ID
    • REGION: IP アドレスを作成するリージョン
    • ENDPOINT_ADDRESS: IP アドレス リソースに割り当てる IP アドレス。このアドレスは、サービスのロードバランサで使用された IP アドレスと同じである必要があります。
    • CONSUMER_SUBNET: コンシューマ サブネットの名前
  2. エンドポイントを作成します。

    forwarding-rules create コマンドを使用します。

    gcloud compute forwarding-rules create ENDPOINT \
        --region=REGION \
        --network=CONSUMER_NETWORK \
        --address=ENDPOINT_ADDRESS \
        --target-service-attachment=SERVICE_ATTACHMENT_URI
    

    次のように置き換えます。

    • ENDPOINT: エンドポイントの名前
    • REGION: エンドポイントを作成するリージョン
    • CONSUMER_NETWORK: コンシューマ ネットワークの名前
    • ENDPOINT_ADDRESS: エンドポイントに割り当てる予約済み IP アドレス。IP アドレスを直接指定することも、IP アドレス リソース名を使用することもできます。
    • SERVICE_ATTACHMENT_URI: サービス アタッチメントの URI。

プロデューサーの内部範囲を削除する

コンシューマ移行サブネットが作成されたら、内部範囲は不要になるため削除できます。

gcloud

internal-ranges delete コマンドを使用します。

gcloud network-connectivity internal-ranges delete RANGE_NAME \
    --project=PRODUCER_PROJECT_ID

次のように置き換えます。

  • RANGE_NAME: 内部範囲の名前
  • PRODUCER_PROJECT_ID: プロデューサー プロジェクトの ID

エンドポイントが機能することを確認する

エンドポイントを介してサービスに接続できることを確認するよう、コンシューマに依頼します。

エンドポイントが機能せず、トラブルシューティングで問題が解決しない場合は、移行をロールバックできます。

移行を完了する

エンドポイントが期待どおりに動作している場合は、コンシューマのピア移行サブネットを通常のサブネットに更新して、移行を完了できます。

コンシューマのピア移行サブネットを更新する

コンシューマのピア移行サブネットを通常のサブネットに更新すると、コンシューマは任意のタイプのリソースにサブネットを使用できます。

gcloud

networks subnets create コマンドを使用します。

gcloud compute networks subnets update CONSUMER_SUBNET \
    --purpose=PRIVATE \
    --region=REGION \
    --project=CONSUMER_PROJECT

次のように置き換えます。

  • CONSUMER_SUBNET: コンシューマ サブネットの名前
  • REGION: コンシューマ サブネットのリージョン
  • CONSUMER_PROJECT: コンシューマー プロジェクトの ID

ピアリング接続を削除する

ピアリング接続が不要になった場合は、コンシューマとプロデューサーの両方のピアリング構成を削除します。

移行をロールバックする

移行をロールバックできるのは、コンシューマ サブネットがまだ通常のサブネットに更新されていない場合のみです。ロールバックすると、サービスは VPC ネットワーク ピアリングを介して利用できるようになります。

  1. それでも存在する場合は、プロデューサーのプロジェクトの内部範囲を削除します。
  2. コンシューマのプロジェクトに内部範囲を作成します。ロールバックする場合、移行元はコンシューマ サブネットで、移行先はプロデューサー サブネットです。

    gcloud network-connectivity internal-ranges create RANGE_NAME \
        --project=CONSUMER_PROJECT \
        --ip-cidr-range=CIDR_RANGE \
        --network=CONSUMER_NETWORK \
        --usage=FOR_MIGRATION \
        --migration-source=CONSUMER_SUBNET_URI \
        --migration-target=PRODUCER_SUBNET_URI
    
  3. コンシューマの Private Service Connect エンドポイントを削除します。

  4. コンシューマの IP アドレス リソースを削除します。

  5. 同じ名前と CIDR 範囲を使用して、プロデューサーのサブネットを再作成します。サブネットの目的を PRIVATE に設定します。

  6. プロデューサーのサブネットで、サービスを提供するために必要なリソースを再作成します。

  7. コンシューマは、ピアリング接続を介してサービスにアクセスできることを確認します。