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 アクセス コネクタを作成し、共有 VPC ネットワークに接続していることも確認します。
  2. サービス プロジェクトでサーバーレス VPC アクセス API を有効にします。

    API を有効にする

  3. ホスト プロジェクトの設定が完了したら、サービス プロジェクトで Cloud Run(フルマネージド)サービスをデプロイするまたは更新するときに、コネクタの完全修飾名を使用して、ホスト プロジェクトのコネクタを指定できます。例:

    gcloud run deploy SERVICE --image IMAGE_URL \
    --vpc-connector projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME

    これにより、サービスが共有 VPC ネットワークに接続されます。

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

デフォルトでは、内部 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 beta 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 beta 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

次のステップ