VPC ネットワークへの接続

このページでは、サーバーレス VPC アクセスを使用して、Cloud Run(フルマネージド)サービスを VPC ネットワークに直接接続する方法を説明しています。これにより、Compute Engine VM インスタンス、Memorystore インスタンスなどのリソースに内部 IP アドレスでアクセスできます。

サーバーレス VPC アクセスを使用するには、まず、サービスのプロジェクトでサーバーレス VPC アクセス コネクタを作成して、VPC ネットワークとの通信を処理する必要があります。コネクタを作成したら、そのコネクタを使用するように Cloud Run(フルマネージド)サービス構成を設定します。

サーバーレス VPC アクセス コネクタの作成

サーバーレス VPC アクセス コネクタを作成する方法について詳しくは、コネクタの作成をご覧ください。

コネクタを使用するサービスの構成

新しいサービスを作成するときや新しいリビジョンをデプロイするときに、Cloud Console、コマンドライン、YAML ファイルのいずれかで、コネクタを使用するようにサービスを構成できます。

Console

  1. Cloud Run に移動します

  2. デプロイ先の新しいサービスを構成する場合は、[サービスの作成] をクリックします。既存のサービスを構成する場合は、サービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。

  3. [詳細設定] で [接続] をクリックします。

    画像

  4. [VPC コネクタ] フィールドで、使用するコネクタを選択するか、[なし] を選択してサービスを VPC ネットワークから切断します。

  5. [作成] または [デプロイ] をクリックします。

コマンドライン

デプロイ中にコネクタを指定するには、--vpc-connector フラグを使用します。

gcloud run deploy SERVICE --image IMAGE_URL --vpc-connector CONNECTOR_NAME
  • SERVICE は、実際のサービス名に置き換えます。
  • IMAGE_URL は、コンテナ イメージへの参照(gcr.io/myproject/my-image:latest など)に置き換えます。
  • CONNECTOR_NAME は、コネクタの名前に置き換えます。

既存のサービスのコネクタを接続、更新、削除するには、必要に応じて次のいずれかのフラグを指定して gcloud run services update コマンドを使用します。

たとえば、コネクタを接続または更新するには:

gcloud run services update SERVICE --vpc-connector CONNECTOR_NAME
  • SERVICE は、実際のサービス名に置き換えます。
  • CONNECTOR_NAME は、コネクタの名前に置き換えます。

YAML

既存のサービス構成をダウンロードして表示するには、gcloud run services describe --format export コマンドを使用します。読みやすく整えられた結果が YAML 形式で出力されます。次に、下記の手順に沿ってフィールドを変更し、gcloud beta run services replace コマンドを使用して変更後の YAML ファイルをアップロードします。必ず説明されているとおりにフィールドを変更してください。

  1. 次のコマンドで、構成を表示してダウンロードします。

    gcloud run services describe SERVICE --format export > service.yaml
  2. 最上位の spec 属性の下の annotations 属性にある run.googleapis.com/vpc-access-connector 属性を追加または更新します。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/vpc-access-connector: CONNECTOR_NAME
    • SERVICE は、Cloud Run(フルマネージド)サービスの名前に置き換えます。
    • CONNECTOR_NAME は、コネクタの名前に置き換えます。
  3. 次のコマンドを使用して、サービスを新しい構成に置き換えます。

    gcloud beta run services replace service.yaml

共有 VPC ネットワークへの接続

組織で共有 VPC を使用している場合、共有 VPC サービス プロジェクト内の Cloud Run(フルマネージド)サービスは、共有 VPC ホスト プロジェクトでいくつかの構成を行った後、共有 VPC ネットワークに接続できます。

  1. 共有 VPC を使用する場合は、ホスト プロジェクトを構成するの手順に沿って、共有 VPC のホスト プロジェクトを構成します

  2. コネクタの作成の手順に沿って、共有 VPC 用のコネクタを作成します。

  3. サービス プロジェクトで Cloud Run(フルマネージド)サービスをデプロイまたは更新する場合は、Connections タブの [VPC コネクタプルダウン メニューを使用する] を使用してコンソール UI でコネクタを指定するか、gcloud コマンドラインを使用している場合は、--vpc-connector フラグを使用するコネクタを指定します。

サービスからの下り(外向き)トラフィックの制御

デフォルトでは、内部 IP アドレスと内部 DNS 名へのリクエストのみが、サーバーレス VPC アクセス コネクタ経由でルーティングされます。たとえば、ネットワークのファイアウォール ルールで危険なホストや不要なホストへの送信トラフィックを防ぐ場合など、サービスからすべての送信リクエストを VPC ネットワークにルーティングしなければならないこともあります。

サービスからの送信リクエストのルーティングを制御するために、VPC 下り(外向き)を次のいずれかのオプションに設定できます。

  • プライベート IP へのリクエストだけを VPC コネクタ経由でルーティングする: デフォルト。IP アドレス範囲(RFC 1918RFC 6598)または内部 DNS 名へのリクエストのみが VPC ネットワークにルーティングされます。その他のリクエストはすべて直接インターネットにルーティングします。
  • すべてのトラフィックを VPC コネクタ経由でルーティングする: サービスからの送信リクエストをすべて VPC ネットワークにルーティングします。リクエストは、ネットワークのファイアウォール、DNS、ルーティングのルールに従って処理されます。

新しいサービスを作成するとき、または新しいリビジョンをデプロイするときに、Cloud Console、コマンドライン、YAML ファイルから VPC の下り(外向き)設定を指定できます。

Console

  1. Cloud Run に移動します

  2. デプロイ先の新しいサービスを構成する場合は、[サービスの作成] をクリックします。既存のサービスを構成する場合は、サービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。

  3. [詳細設定] で [接続] をクリックします。

    画像

  4. VPC コネクタを選択したら、[プライベート IP へのリクエストだけを VPC コネクタ経由でルーティングする] または [すべてのトラフィックを VPC コネクタ経由でルーティングする] を選択します。

  5. [作成] または [デプロイ] をクリックします。

コマンドライン

下り(外向き)設定を指定するには、--vpc-egress フラグを使用します。デプロイ中に下り(外向き)設定を指定できます。

gcloud run deploy SERVICE \
--image IMAGE_URL \
--vpc-connector CONNECTOR_NAME \
--vpc-egress EGRESS_SETTING
  • SERVICE は、実際のサービス名に置き換えます。
  • IMAGE_URL は、コンテナ イメージへの参照(gcr.io/myproject/my-image:latest など)に置き換えます。
  • CONNECTOR_NAME は、コネクタの名前に置き換えます。
  • EGRESS_SETTING は、下り(外向き)設定値に置き換えます。
    • all: コネクタ経由ですべての送信トラフィックを送信します。
    • private-ranges-only: VPC コネクタ経由で内部アドレスにのみトラフィックを送信します。

既存のサービスを更新し、下り(外向き)設定を変更することもできます。

gcloud run services update SERVICE --vpc-egress EGRESS_SETTING

YAML

既存のサービス構成をダウンロードして表示するには、gcloud run services describe --format export コマンドを使用します。読みやすく整えられた結果が YAML 形式で出力されます。次に、下記の手順に沿ってフィールドを変更し、gcloud beta run services replace コマンドを使用して変更後の YAML ファイルをアップロードします。必ず説明されているとおりにフィールドを変更してください。

  1. 次のコマンドで、構成を表示してダウンロードします。

    gcloud run services describe SERVICE --format export > service.yaml
  2. 最上位の spec 属性の下の annotations 属性にある run.googleapis.com/vpc-access-egress 属性を追加または更新します。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/vpc-access-connector: CONNECTOR_NAME
            run.googleapis.com/vpc-access-egress: EGRESS_SETTING
    • SERVICE は、Cloud Run(フルマネージド)サービスの名前に置き換えます。
    • CONNECTOR_NAME は、コネクタの名前に置き換えます。run.googleapis.com/vpc-access-connector 属性は、下り(外向き)設定を指定するときに必要です。
    • EGRESS_SETTING を次のいずれかに置き換えます。
      • all: コネクタ経由ですべての送信トラフィックを送信します。
      • private-ranges-only: VPC コネクタ経由で内部アドレスにのみトラフィックを送信します。
  3. 次のコマンドを使用して、サービスを新しい構成に置き換えます。

    gcloud beta run services replace service.yaml

次のステップ

VPC 接続設定の表示

サービスの現在の VPC 接続設定を表示するには:

Console

  1. [Cloud Run] に移動

  2. 目的のサービスをクリックして、[サービスの詳細] ページを開きます。

  3. [変更内容] タブをクリックします。

  4. 右側の詳細パネルの [コンテナ] タブに、VPC 接続の設定が表示されます。

コマンドライン

  1. 次のコマンドを使用します。

    gcloud run services describe SERVICE
  2. 返された構成で、VPC 接続の設定を見つけます。