プライベート IP 接続の構成

このページでは、プライベート IP を使用するように第 2 世代のインスタンスを構成する方法について説明します。プライベート IP の仕組み(環境と管理に関する要件を含む)については、プライベート IP をご覧ください。

始める前に

プライベート IP を使用するように Cloud SQL インスタンスを構成する前に、次の点を考慮する必要があります。

  • 使用する VPC ネットワークを選択する必要があります。Cloud SQL インスタンス(Compute Engine インスタンス [VM] または Google Kubernetes Engine インスタンス)への接続に使用する Google Cloud リソースは、この VPC ネットワークを使用して接続できる必要があります。これらのリソースも、Cloud SQL インスタンスと同じリージョンに存在する必要があります。

  • プライベート IP Cloud SQL インスタンスを特定の VPC ネットワークで初めて使用する前に、VPC ネットワークでプライベート サービス アクセスを構成する必要があります。これにより、VPC ネットワーク内のリソースは Cloud SQL インスタンスに接続できます。この構成では、Cloud SQL インスタンスによって使用される IP アドレスの範囲を割り当てる必要があります。必要に応じて、使用する特定の IP 範囲を選択できます。選択しない場合、Cloud SQL が未使用の IP アドレスの範囲を自動的に割り当てます。いずれの場合も、以下の手順が IP アドレスの範囲の割り当てに役立ちます。詳細とその他の考慮事項については、プライベート サービス アクセスの構成をご覧ください。

    IP 範囲 172.17.0.0/16 は、Docker ブリッジ ネットワークに予約されています。この範囲内の IP で作成された Cloud SQL インスタンスはすべて到達不能になります。プライベート IP を使用して、この範囲内の IP から Cloud SQL インスタンスに接続することもできません。

  • プロジェクトで Service Networking API を有効にする必要があります。

    Service Networking API はプライベート サービス アクセスを確立するために使用されます。

インスタンスの作成時にプライベート IP を使用するよう構成する

Cloud SQL インスタンスを作成するときに、プライベート IP を使用するようにインスタンスを構成できます。

プライベート IP を使用するように新しいインスタンスを構成するには:

Console

  1. 作成ウィザードの [設定オプション] で、[接続] セクションを展開します。
  2. [プライベート IP] チェックボックスをオンにします。

    プルダウン リストには、プロジェクトで使用可能なネットワークが表示されます。プロジェクトが共有 VPC のサービス プロジェクトである場合、ホスト プロジェクトの VPC ネットワークも表示されます。

  3. 接続元のリソースが存在するネットワークを選択します。
  4. 以前にこの VPC ネットワークで Cloud SQL のプライベート サービス アクセスを構成している場合は、これで完了です。インスタンス設定を選択してインスタンスを作成します。
  5. このネットワークに、プライベート サービス アクセスの IP アドレス範囲が割り当てられていない場合は、次のいずれかを行います。
    • [割り当てて接続] をクリックして、Cloud SQL に範囲の割り当てを委任し、プライベート接続を作成します。これで完了です。インスタンス設定を選択してインスタンスを作成します。
    • 以下の Cloud SQL へのプライベート サービス アクセスを構成するの手順を参照してください。完了したら、インスタンス設定の選択とインスタンスの作成に進みます。
  6. ネットワークに割り当てられている IP 範囲が 1 つ以上存在するが、Cloud SQL サービスへの接続に使用する範囲をまだ選択していない場合は、範囲を選択して [接続] をクリックします。インスタンス設定の選択とインスタンスの作成に進みます。

gcloud

この VPC ネットワークでまだ構成を行っていない場合、Cloud SQL のプライベート サービス アクセスを構成するための次の手順を行ってください。選択した VPC ネットワークの名前を --network パラメータを使用して指定し、Cloud SQL インスタンスを作成します。また、パブリック IP を無効にすることを示す --no-assign-ip フラグを使用します。
gcloud --project=[PROJECT_ID] beta sql instances create [INSTANCE-ID]
       --network=[VPC_NETWORK_NAME]
       --no-assign-ip
VPC_NETWORK_NAME は、選択した VPC ネットワークの名前です。たとえば、my-vpc-network です。これが共有 VPC ネットワークの場合、HOST_PROJECT_NAME を共有 VPC ホスト プロジェクトの名前に置き換え、NETWORK_NAME を共有 VPC ネットワークの名前に置き換えた projects/HOST_PROJECT_NAME/global/networks/NETWORK_NAME 形式の完全修飾名を指定する必要があります。

プライベート IP を使用するように既存のインスタンスを構成する

プライベート IP を使用するように既存の Cloud SQL インスタンスを構成できます。

プライベート IP を使用するように既存の Cloud SQL インスタンスを構成すると、インスタンスが再起動し、ダウンタイムが生じます。

プライベート IP を使用するように既存のインスタンスを構成するには:

Console

  1. Google Cloud Console の [Cloud SQL インスタンス] ページに移動します。
    [Cloud SQL インスタンス] ページに移動
  2. インスタンス名をクリックして [概要] ページを開きます。
  3. [接続] タブを選択します。
  4. [プライベート IP] チェックボックスをオンにします。

    プルダウン リストには、プロジェクトで使用可能なネットワークが表示されます。プロジェクトが共有 VPC のサービス プロジェクトである場合、ホスト プロジェクトの VPC ネットワークも表示されます。

  5. 接続元のリソースが存在するネットワークを選択します。
  6. 以前にこの VPC ネットワークで Cloud SQL のプライベート サービス アクセスを構成している場合は、これで完了です。[保存] をクリックしてインスタンスを更新します。
  7. このネットワークに、プライベート サービス アクセスの IP アドレス範囲が割り当てられていない場合は、次のいずれかを行います。
    1. [割り当てて接続] をクリックして、Cloud SQL に範囲の割り当てを委任し、プライベート接続を作成します。これで完了です。[保存] をクリックしてインスタンスを更新します。
    2. 以下の Cloud SQL へのプライベート サービス アクセスを構成するの手順を参照してください。次に、[保存] をクリックしてこのインスタンスを更新します。
  8. ネットワークに割り当てられている IP 範囲が 1 つ以上存在するが、Cloud SQL サービスへの接続に使用する範囲をまだ選択していない場合は、範囲を選択して [接続] をクリックします。次に、[保存] をクリックしてインスタンスを更新します。

gcloud

この VPC ネットワークでまだ構成を行っていない場合、Cloud SQL のプライベート サービス アクセスを構成するための次の手順を行ってください。--network パラメータを使用して、選択した VPC ネットワークの名前を指定し、Cloud SQL インスタンスを更新します。
gcloud --project=[PROJECT_ID] beta sql instances patch [INSTANCE-ID]
       --network=[VPC_NETWORK_NAME]
       --no-assign-ip

VPC_NETWORK_NAME は、選択した VPC ネットワークの名前です。たとえば、my-vpc-network です。これが共有 VPC ネットワークの場合、HOST_PROJECT_NAME を共有 VPC ホスト プロジェクトの名前に置き換え、NETWORK_NAME を共有 VPC ネットワークの名前に置き換えた projects/HOST_PROJECT_NAME/global/networks/NETWORK_NAME 形式の完全修飾名を指定する必要があります。

Cloud SQL のプライベート サービス アクセスを構成する

このセクションでは、Cloud SQL インスタンスを作成せずに、VPC ネットワークでプライベート サービス アクセスを構成する手順を説明します。多くの場合、インスタンスを起動したときに Cloud SQL は自動的にこの構成を行うことができます。ただし、次の場合に手動での手順が役立つことがあります。

  • 割り当てる IP アドレス範囲のサイズを制御する場合。たとえば、大量の Cloud SQL インスタンスの作成が予想される場合、それらすべてを保持できる IP 範囲を事前に割り当てることがあります。

  • コマンドライン(gcloud を使用)からプライベート サービス アクセスを設定する場合。

  • 共有 VPC を使用していて、組織管理者がホスト プロジェクトのネットワーク管理者にネットワーク管理責任を委任する場合。ネットワーク管理者は、ホスト プロジェクトで次の手順を実行して、プライベート サービス アクセスを構成できます。そうすることで、サービス プロジェクトでの権限を委任されたユーザーは、上記のセクションの手順に従って Cloud SQL インスタンスを自由に起動できるようになります。これらのユーザーには、ホスト プロジェクトでのネットワーク ユーザー権限のみを付与する必要があります。

これらの手順を実行する必要があるのは、VPC ネットワークごとに 1 回のみです。詳細とその他の考慮事項については、プライベート サービス アクセスの構成をご覧ください。

このプロセスには次の 2 つのステップがあります。

  • IP アドレス範囲を割り当てる。
  • VPC ネットワークから(Cloud SQL インスタンスが格納される)サービス プロデューサー ネットワークへのプライベート接続を作成する。

IP アドレス範囲を割り当てる

Console

  1. Google Cloud Console で [VPC ネットワーク] ページに移動します。
  2. 使用する VPC ネットワークを選択します。
  3. [プライベート サービス接続] タブを選択します。
  4. [プライベート サービス接続] タブで、[サービスに割り当てられた IP 範囲] タブを選択します。
  5. [割り当てられている IP 範囲] をクリックします。
  6. 割り当て範囲の [名前] に、google-managed-services-VPC_NETWORK_NAME を指定します。VPC_NETWORK_NAME は、接続する VPC ネットワークの名前です(たとえば、google-managed-services-default)。[説明] は空白のままにできます。
  7. 割り当ての [IP 範囲] を指定します。

    • IP アドレス範囲を指定するには、[カスタム] を選択してから、CIDR ブロック(192.168.0.0/16 など)を入力します。
    • 接頭辞長を指定して利用可能な範囲を Google に選択させるには、[自動] を選択して接頭辞長(16 など)を入力します。
  8. [割り当て] をクリックして、割り当て範囲を作成します。

gcloud

次のいずれかを行います。

  • アドレス範囲と接頭辞長(サブネット マスク)を指定するには、addresses フラグと prefix-length フラグを使用します。たとえば、CIDR ブロック 192.168.0.0/16 を割り当てるには、アドレスに 192.168.0.0 を指定し、接頭辞長に 16 を指定します。

    gcloud compute addresses create google-managed-services-[VPC_NETWORK_NAME] \
        --global \
        --purpose=VPC_PEERING \
        --addresses=192.168.0.0 \
        --prefix-length=16 \
        --network=[VPC_NETWORK_NAME]
    
  • 接頭辞長(サブネット マスク)だけを指定するには、prefix-length フラグを使用します。アドレス範囲を省略すると、VPC ネットワークで使用されていないアドレス範囲が自動的に選択されます。次の例では、16 ビットの接頭辞長を使用して、未使用の IP アドレス範囲を選択しています。

    gcloud compute addresses create google-managed-services-[VPC_NETWORK_NAME] \
        --global \
        --purpose=VPC_PEERING \
        --prefix-length=16 \
        --network=[VPC_NETWORK_NAME]
    

[VPC_NETWORK_NAME] は、使用する VPC ネットワークの名前(my-vpc-network など)に置き換えます。

次の例では、VPC ネットワーク my-vpc-network のリソースがプライベート IP を使用して Cloud SQL インスタンスに接続できるようにする IP 範囲を割り当てています。

gcloud compute addresses create google-managed-services-my-vpc-network \
    --global \
    --purpose=VPC_PEERING \
    --prefix-length=16 \
    --network=my-vpc-network \
    --project=my-project

プライベート接続の作成

Console

  1. Google Cloud Console で [VPC ネットワーク] ページに移動します。
  2. 使用する VPC ネットワークを選択します。
  3. [プライベート サービス接続] タブを選択します。
  4. [プライベート サービス接続] タブで、[サービスへのプライベート接続] タブを選択します。
  5. ネットワークとサービス プロデューサーとの間にプライベート接続を作成するには、[接続の作成] をクリックします。
  6. [割り当て] で、他のサービス プロデューサーによって使用されていない 1 つ以上の既存の割り当て範囲を選択します。
  7. [接続] をクリックして接続を作成します。

gcloud

  1. プライベート接続を作成します。

    gcloud services vpc-peerings connect \
        --service=servicenetworking.googleapis.com \
        --ranges=google-managed-services-[VPC_NETWORK_NAME] \
        --network=[VPC_NETWORK_NAME] \
        --project=[PROJECT_ID]
    

    [VPC_NETWORK_NAME] は VPC ネットワークの名前に置き換え、[PROJECT_ID] は VPC ネットワークを含むプロジェクトの ID に置き換えます。

    このコマンドは、長時間実行オペレーションを開始し、オペレーション名を戻します。

  2. オペレーションが成功したかどうかを確認します。

    gcloud services vpc-peerings operations describe \
        --name=[OPERATION_NAME]
    

    [OPERATION_NAME] を、前の手順から返されたオペレーション名に置き換えます。

プライベート接続を作成するときに、複数の割り当て範囲を指定できます。たとえば、範囲が不足している場合は、割り当て範囲を追加で指定できます。サービスは指定されたすべての範囲内の IP アドレスを、指定された順序で使用します。

次のステップ