VPN 接続を作成して管理する

このページでは、Distributed Cloud ゾーンで Google Distributed Cloud VPN 接続リソースを作成して管理する方法について説明します。

この機能は、Distributed Cloud ラックでのみ使用できます。 Distributed Cloud サーバーは、VPN 接続リソースをサポートしていません。

Distributed Cloud VPN 接続の詳細については、 Distributed Cloud の仕組みをご覧ください

次の点にご注意ください。

  • Distributed Cloud VPN 接続に必要なトラフィックを 許可するように ネットワークを構成する必要があります。

  • Distributed Cloud VPN 接続を作成すると、Distributed Cloud は必要な Cloud VPN ゲートウェイと Cloud Router リソースを作成します。Cloud VPN ゲートウェイの名前には anthos-mcc という接頭辞が付きます。Cloud Router の名前には gdce という接頭辞が付きます。これらのリソースを変更しないでください。変更すると、Distributed Cloud VPN 接続が機能しなくなる可能性があります。 誤ってこれらのリソースを変更した場合は、影響を受ける Distributed Cloud VPN 接続を削除して再作成する必要があります。

  • Distributed Cloud は、プロジェクトとリージョンで最初の Distributed Cloud VPN 接続を作成するときに、プロジェクトとリージョンごとに 1 つの Cloud Router per Google Cloud を作成します。Google Cloud その後、 その Google Cloud プロジェクトとリージョンで作成されたすべての VPN 接続は、同じ Cloud Router リソースを再利用します。

  • Cloud Router リソースは、セカンダリ ネットワーク インターフェースが接続されていない場合にのみ削除できます。Distributed Cloud は、接続されている最後の VPN 接続を削除すると、Cloud Router を自動的に削除します。

  • Distributed Cloud VPN 接続は IPv4 アドレスのみをサポートしています。

  • Distributed Cloud クラスタごとに作成できる VPN 接続は 1 つだけです。

  • ローカル ネットワークで複数のネットワーク アドレス変換(NAT)ゲートウェイを使用する場合は、Distributed Cloud インストールが Virtual Private Cloud(VPC)ネットワークへの送信トラフィックに単一の IP アドレスを使用するように構成する必要があります。

  • デフォルトでは、Distributed Cloud は、2 つの VPN トンネル( エンドの HA VPN とも呼ばれます)を使用して Google Cloud に接続するように、単一ノードに単一の VPN クライアントを構成します。 Google Cloud --high-availability フラグを使用すると、VPN 接続の可用性をさらに高めることができます。このフラグは、2 つの別々のノードに 2 つの VPN クライアントを構成して、合計 4 つの VPN トンネルを構成するように Distributed Cloud に指示します。

  • 構成を変更する場合は、VPN 接続を削除して再作成する必要があります。

  • VPN 接続は、Google Cloud CLI または Distributed Cloud Edge Container API を使用して管理できます。

VPN 接続を作成する

Distributed Cloud VPN 接続を作成するには、このセクションの手順を完了します。

このタスクを完了するには、 プロジェクトに対する Edge Container 管理者ロールroles/edgecontainer.admin)が必要です。 Google Cloud

gcloud

gcloud edge-cloud container vpn-connections create コマンドを使用します。

gcloud edge-cloud container vpn-connections create VPN_CONNECTION_NAME \
    --project=PROJECT_ID \
    --location=REGION \
    --cluster=CLUSTER_NAME \
    --vpc-network=VPC_NETWORK_NAME \
    --nat-gateway-ip=NAT_GATEWAY_IP \
    --router=ROUTER_NAME \
    --high-availability

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

  • VPN_CONNECTION_NAME: この VPN 接続を一意に識別する説明的な名前。
  • PROJECT_ID: ターゲット Google Cloud プロジェクトの ID。
  • REGION:ターゲット Distributed Cloud ゾーンが作成される Google Cloud リージョン。
  • CLUSTER_NAME: ターゲット Distributed Cloud クラスタの名前。
  • VPC_NETWORK_NAME: この VPN 接続が指すターゲット VPC ネットワークの名前。この ネットワークは、Distributed Cloud インストールと同じ Google Cloud プロジェクトに存在する必要があります。
  • NAT_GATEWAY_IP: ターゲット クラスタの NAT ゲートウェイ IP アドレス。NAT を使用していない場合は、このフラグを省略します。
  • ROUTER_NAME (省略可): この VPN 接続に使用する既存の Cloud Router リソースを指定します。それ以外の場合、 ターゲット プロジェクトとリージョンに Cloud Router がまだ存在しない場合は、 Distributed Cloud が Cloud Router を自動的に作成します。 Google Cloud
  • --high-availability (省略可): 2 つの別々のノードで実行される 2 つの別々の VPN クライアントを設定して、クラスタ側で高可用性を実現するようにこの VPN 接続を構成します。高可用性を無効にするには、このフラグを省略します。

API

projects.locations.vpnConnections.create メソッドに POST リクエストを送信します。

POST /v1/PROJECT_ID/locations/REGION/vpnConnections?vpnConnectionId=VPN_CONNECTION_ID&requestId=REQUEST_ID
{
  "name": string,
  "labels": {
   },
  "natGatewayIp": NAT_GATEWAY,
  "cluster": CLUSTER_PATH,
  "vpc": VPC_NETWORK_ID
  "enableHighAvailability": HA_ENABLE,
  "router": ROUTER_NAME,
}

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

  • PROJECT_ID: ターゲット Google Cloud プロジェクトの ID。
  • REGION: ターゲット Distributed Cloud ゾーンが作成される Google Cloud リージョン。
  • VPN_CONNECTION_ID: このノードプール リソースを識別する一意のプログラム ID。
  • REQUEST_ID: このリクエストを識別する一意のプログラム ID。
  • VPN_CONNECTION_NAME: この VPN 接続を一意に識別する説明的な名前。
  • NAT_GATEWAY: NAT ゲートウェイの IP アドレス。
  • CLUSTER_PATH: ターゲット クラスタへの完全な正規パス。
  • VPC_NETWORK_ID: ターゲット VPC ネットワークの ID。
  • HA_ENABLE: クラスタ側で高可用性を実現するようにこの VPN 接続を構成するかどうかを示します。TRUE に設定すると、2 つの別々のノードで実行される 2 つの別々の VPN クライアントが構成されます。
  • ROUTER_NAME (省略可): この VPN 接続に使用する既存の Cloud Router リソースを指定します。それ以外の場合、 ターゲット プロジェクトとリージョンに Cloud Router がまだ存在しない場合は、 Distributed Cloud が Cloud Router を自動的に作成します。Google Cloud

VPN 接続を一覧表示する

Distributed Cloud クラスタ用にプロビジョニングされた VPN 接続を一覧表示するには、このセクションの手順を完了します。

このタスクを完了するには、 プロジェクトに対する Edge Container 閲覧者ロールroles/edgecontainer.viewer)が必要です。 Google Cloud

gcloud

gcloud edge-cloud container vpn-connections list コマンドを使用します。

gcloud edge-cloud container vpn-connections list \
    --project=PROJECT_ID \
    --location=REGION

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

  • PROJECT_ID: ターゲット Google Cloud プロジェクトの ID。
  • REGION: ターゲット Distributed Cloud ゾーンが作成される Google Cloud リージョン。

API

projects.locations.vpnConnections.list メソッドに GET リクエストを送信します。

GET /v1/PROJECT_ID/locations/REGION/vpnConnections?filter=FILTER&pageSize=PAGE_SIZE&orderBy=SORT_BY&pageToken=PAGE_TOKEN

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

  • PROJECT_ID: ターゲット Google Cloud プロジェクトの ID。
  • REGION: ターゲット Distributed Cloud ゾーンが作成される Google Cloud リージョン。
  • FILTER: 返される結果を特定の値に制限する式。
  • PAGE_SIZE: ページごとに返す結果の数
  • SORT_BY: 返される結果の並べ替えの基準とするフィールド名のカンマ区切りリスト デフォルトの並べ替え順序は昇順です。降順で並べ替えるには、目的のフィールドの前に ~ を付けます。
  • PAGE_TOKEN: レスポンスの nextPageToken フィールドで最後のリスト リクエストのレスポンスとして受信したトークン。このトークンを送信して、結果のページを受信します。

VPN 接続に関する情報を取得する

Distributed Cloud VPN 接続に関する情報を取得するには、このセクションの手順を完了します。

このタスクを完了するには、 プロジェクトに対する Edge Container 閲覧者ロールroles/edgecontainer.viewer)が必要です。 Google Cloud

gcloud

gcloud edge-cloud container vpn-connections describe コマンドを使用します。

gcloud edge-cloud container vpn-connections describe VPN_CONNECTION_NAME \
    --project=PROJECT_ID \
    --location=REGION

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

  • VPN_CONNECTION_NAME: ターゲット VPN 接続の名前。
  • PROJECT_ID: ターゲット Google Cloud プロジェクトの ID。
  • REGION: ターゲット Distributed Cloud ゾーンが作成される Google Cloud リージョン。

API

projects.locations.vpnConnections.get メソッドに GET リクエストを送信します。

GET /v1/PROJECT_ID/locations/REGION/vpnConnections/VPN_CONNECTION_NAME

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

  • PROJECT_ID: ターゲット Google Cloud プロジェクトの ID。
  • REGION: ターゲット Distributed Cloud ゾーンが作成される Google Cloud リージョン。
  • VPN_CONNECTION_NAME: ターゲット VPN 接続の名前。

VPN 接続を削除する

Distributed Cloud VPN 接続を削除するには、このセクションの手順を完了します。

Distributed Cloud が Google Cloud プロジェクトに作成した Cloud Router リソースに関連付けられている最後の VPN 接続を削除すると、VPN 接続を削除すると、関連付けられている Cloud Router リソースが自動的に削除されます。ただし、この状況で自動的に削除されるのは、Distributed Cloud によって自動的に作成された Cloud Router リソースのみです。Distributed Cloud は、--router フラグを使用して指定された既存の Cloud Router リソースを削除しません。

このタスクを完了するには、 プロジェクトに対する Edge Container 管理者ロールroles/edgecontainer.admin)が必要です。 Google Cloud

gcloud

gcloud edge-cloud container vpn-connections delete コマンドを使用します。

gcloud edge-cloud container vpn-connections delete VPN_CONNECTION_NAME \
    --location=REGION \
    --project=PROJECT_ID

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

  • VPN_CONNECTION_NAME: この VPN 接続を一意に識別する説明的な名前。
  • REGION:ターゲット Distributed Cloud ゾーンが作成される Google Cloud リージョン。
  • PROJECT_ID: ターゲット Google Cloud プロジェクトの ID。

API

projects.locations.vpnConnections.delete メソッドに DELETE リクエストを送信します。

DELETE /v1/PROJECT_ID/locations/REGION/vpnConnections/VPN_CONNECTION_NAME?requestId=REQUEST_ID

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

  • PROJECT_ID: ターゲット Google Cloud プロジェクトの ID。
  • REGION: ターゲット Distributed Cloud ゾーンが作成される Google Cloud リージョン。
  • VPN_CONNECTION_NAME: ターゲット VPN 接続の名前。
  • REQUEST_ID: このリクエストを識別する一意のプログラム ID。

プロジェクト間の VPN 接続を管理する

Distributed Cloud では、Distributed Cloud クラスタを含む Google Cloud プロジェクトとは異なる Google Cloud プロジェクトの VPC ネットワークへの VPN 接続を作成することもできます。

前提条件

プロジェクト間の VPN 接続を作成するには、このセクションの前提条件を満たす必要があります。

呼び出し元アカウントの権限

ターゲット VPC プロジェクトの呼び出し元ユーザー アカウントには、次の権限が必要です。これらの権限は、 プロジェクト IAM 管理者ロールroles/resourcemanager.projectIamAdmin)にカプセル化されています。

  • resourcemanager.projects.get
  • resourcemanager.projects.getIamPolicy
  • resourcemanager.projects.setIamPolicy

IAM ロールと権限の設定方法については、 プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。

Distributed Cloud サービス アカウントの権限

Distributed Cloud が、プロジェクト間の VPN 接続を有効にするターゲット VPC プロジェクトに Cloud Router リソースと Cloud VPN リソースを作成できるようにするには、Distributed Cloud クラスタの Distributed Cloud サービス アカウントに Compute ネットワーク管理者ロールroles/compute.networkAdmin)を付与する必要があります。

Compute ネットワーク管理者ロールを付与する手順は次のとおりです。

gcloud

gcloud projects add-iam-policy-binding コマンドを使用します。

gcloud projects add-iam-policy-binding VPC_PROJECT_ID \
    --member="serviceAccount:service-PROJECT_NUM@gcp-sa-edgecontainer.iam.gserviceaccount.com" \
    --role="roles/compute.networkAdmin" \
    --project=VPC_PROJECT_ID

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

  • VPC_PROJECT_ID: ターゲット VPC プロジェクトの ID。
  • PROJECT_NUM: ターゲット Distributed Cloud Google Cloud プロジェクトの番号。

プロジェクト間の VPN 接続を作成する

別のプロジェクトへの VPC ネットワークへの VPN 接続を作成するには、このセクションの手順を完了します。Google Cloud

gcloud

gcloud edge-cloud container vpn-connections create コマンドを使用します。

gcloud edge-cloud container vpn-connections create VPN_CONNECTION_NAME \
    --project=PROJECT_ID \
    --location=REGION \
    --cluster=CLUSTER_NAME \
    --vpc-project=VPC_PROJECT_ID \
    --vpc-network=VPC_NETWORK_NAME \
    --nat-gateway-ip=NAT_GATEWAY_IP \
    --high-availability

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

  • VPN_CONNECTION_NAME: この VPN 接続を一意に識別する説明的な名前。
  • PROJECT_ID: ターゲット Distributed Cloud クラスタ Google Cloud プロジェクトの ID。
  • REGION: ターゲット Distributed Cloud ゾーンが作成される Google Cloud リージョン。
  • CLUSTER_NAME: ターゲット Distributed Cloud クラスタの名前。
  • VPC_PROJECT_ID: ターゲット VPC ネットワークを含むターゲット Google Cloud プロジェクトの ID。
  • VPC_NETWORK_NAME: この VPN 接続が指すターゲット VPC ネットワークの名前。
  • NAT_GATEWAY_IP: ターゲット クラスタの NAT ゲートウェイ IP アドレス。NAT を使用していない場合は、このフラグを省略します。
  • --high-availability (省略可): 2 つの別々のノードで実行される 2 つの別々の VPN クライアントを設定して、クラスタ側で高可用性を実現するようにこの VPN 接続を構成します。高可用性を無効にするには、このフラグを省略します。

API

projects.locations.vpnConnections.create メソッドに POST リクエストを送信します。

POST /v1/PROJECT_ID/locations/REGION/vpnConnections?vpnConnectionId=VPN_CONNECTION_ID&requestId=REQUEST_ID
{
  "name": string,
  "labels": {
   },
  "natGatewayIp": NAT_GATEWAY,
  "cluster": CLUSTER_PATH,
  "vpc": VPC_NETWORK_ID,
  "vpcProject": VPC_PROJECT_ID,
  "vpcServiceAccount": var>VPC_PROJECT_SERVICE_ACCOUNT,
  "enableHighAvailability": HA_ENABLE,
}

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

  • PROJECT_ID: ターゲット Google Cloud プロジェクトの ID。
  • REGION: ターゲット Distributed Cloud ゾーンが作成される Google Cloud リージョン。
  • VPN_CONNECTION_ID: このノードプール リソースを識別する一意のプログラム ID。
  • REQUEST_ID: このリクエストを識別する一意のプログラム ID。
  • VPN_CONNECTION_NAME: この VPN 接続を一意に識別する説明的な名前。
  • NAT_GATEWAY: NAT ゲートウェイの IP アドレス。
  • CLUSTER_PATH: ターゲット クラスタへの完全な正規パス。
  • VPC_NETWORK_ID: ターゲット VPC ネットワークの ID。
  • VPC_PROJECT_ID: ターゲット VPC ネットワークを含むターゲット Google Cloud プロジェクトの ID。
  • HA_ENABLE: クラスタ側で高可用性を実現するようにこの VPN 接続を構成するかどうかを示します。TRUE に設定すると、2 つの別々のノードで実行される 2 つの別々の VPN クライアントが構成されます。

プロジェクト間の VPN 接続の Cloud Audit Logs

プロジェクト間の VPN 接続を作成すると、Cloud Audit Logs のログは次のように書き込まれます。

VPN 接続の制限事項

特定の VPN 接続を作成したクラスタのノードプールを変更する場合は、その VPN 接続を削除して再作成する必要があります。そうしないと、次のような予期しない動作が発生する可能性があります。

  • VPN 接続が断続的に失われる
  • Distributed Cloud ゾーン内の他のクラスタで VPN 接続を作成できない

プロジェクト間の VPN 接続の制限事項

また、プロジェクト間の VPN 接続には次の制限があります。

  • プロジェクト間の VPN 接続リソースは、Distributed Cloud クラスタにのみ存在します。
  • ターゲット VPC プロジェクトの Distributed Cloud サービス アカウントの権限を変更すると、Distributed Cloud クラスタからプロジェクト間の VPN 接続を削除できなくなります。

次のステップ