ダイレクト VPC 下り(外向き)と共有 VPC ネットワーク

サーバーレス VPC アクセス コネクタなしでダイレクト VPC 下り(外向き)を使用することで、Cloud Run サービスまたはジョブが共有 VPC ネットワークにトラフィックを送信できるようにします。

このページでは、共有 VPC ネットワークのサブネットを使用するように Cloud Run の IAM 権限を構成し、サービスまたはジョブを共有サブネットに配置する方法について説明します。

始める前に

ダイレクト VPC 下り(外向き)を使用する場合は、サブネットで少なくとも数百の IP アドレスが使用できる状態になっていることを確認してください。すべての Cloud Run サービスでインスタンスの合計数が 100 を超える場合、IP アドレスの合計数をその 4 倍以上にすることをおすすめします。

制限事項

Cloud Run のサービスとジョブには、次の制限が適用されます。

  • Cloud Run は、インスタンスあたり最大 1 Gbps のスループットをサポートしています。この上限を超えると、パフォーマンスがスロットリングされます。
  • Cloud Run の使用量割り当てにより、ダイレクト VPC 下り(外向き)を使用するように構成できるインスタンスの最大数を制限します。最大数は、Cloud Run のリビジョンまたはジョブ実行ごとに構成されます。デフォルトの上限を増やすには、割り当てを増やす方法をご覧ください。Google Cloud コンソールを使用して割り当てを確認できます。

  • Cloud Run のサービスとジョブでは、ネットワーク インフラストラクチャのメンテナンス イベント中に接続が切断される可能性があります。ときどき発生する接続リセットを処理できるクライアント ライブラリを使用することをおすすめします。
次の制限は、Cloud Run のジョブにのみ適用され、サービスには適用されません。
  • Cloud Run ジョブのダイレクト VPC 下り(外向き)は、プレビュー版でのみ使用できます。
  • ジョブを適切に実行するため、ダイレクト VPC 下り(外向き)は、8 個を超える同時インスタンスを必要としないジョブでのみ使用し、1,024 個以上の IP アドレスを予約するようにしてください。

ダイレクト VPC 下り(外向き)では、次のものはサポートされていません。

  • VPC フローログでは、Cloud Run サービスまたはリビジョンの名前は提供されません。
  • VPC フローログは、Cloud Run やオンプレミス マシンなどの VM 以外のリソースからは報告されません。
  • ファイアウォール ルールのロギング
  • Packet Mirroring
  • Network Intelligence Center
  • IPv6 トラフィック
  • Private NAT
  • 宛先リソースに適用される上り(内向き)ファイアウォール ルールでのネットワーク タグの使用。
  • 宛先リソースに適用される上り(内向き)ファイアウォール ルールでのソース サービス アカウントとしてのサービス ID の使用。
  • ファイアウォール ルールでは、Cloud Run ワークロードに適用されている Resource Manager タグを使用できません。
  • Cloud Run ジョブの実行時間が 1 時間を超えると、接続が切断される可能性があります。これは、マシン間でジョブを移行するメンテナンス イベント中に発生する可能性があります。コンテナは、イベントの 10 秒前に SIGTSTP シグナルを受け取り、イベント後に SIGCONT シグナルを受け取ります。コンテナが SIGCONT シグナルを受信したら、接続を再試行してください。

IAM 権限を設定する

共有 VPC サービス プロジェクトの Cloud Run が共有 VPC ネットワークにアクセスするには、まず、サブネットを使用するための十分な権限が Cloud Run サービス エージェントにあることを確認する必要があります。

  1. 共有 VPC ネットワークにアクセスするには、次のいずれかのロールを追加して、Cloud Run サービス エージェントに十分な権限を付与します。

    • 共有 VPC ホスト プロジェクトの Compute ネットワーク ユーザー(compute.networkUser

      たとえば、次のコマンドを実行します。

      gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
      --member "serviceAccount:service-SERVICE_PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com" \
      --role "roles/compute.networkUser"

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

      • HOST_PROJECT_ID: 共有 VPC ホスト プロジェクトの ID。
      • SERVICE_PROJECT_NUMBER: Cloud Run サービスまたはジョブをデプロイする共有 VPC サービス プロジェクト番号。
    • 共有 VPC ホスト プロジェクトに対する Compute ネットワーク ユーザー(compute.networkUserと、共有 VPC サブネットに対する Compute ネットワーク閲覧者(compute.networkViewerロール。

      たとえば、サブネットに Compute ネットワーク閲覧者のロールを付与するには、次のコマンドを実行します。

      gcloud compute networks subnets add-iam-policy-binding SUBNET_NAME \
        --region REGION \
        --member "serviceAccount:service-SERVICE_PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com" \
        --role "roles/compute.networkUser" \
        --project HOST_PROJECT_ID

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

      • SUBNET_NAME: Cloud Run サービスを実行するサブネットの完全修飾リソース名。
      • REGION: Cloud Run サービスのリージョン。サブネットのリージョンと一致する必要があります。
      • SERVICE_PROJECT_NUMBER: Cloud Run サービスまたはジョブをデプロイする共有 VPC サービス プロジェクト番号。
      • HOST_PROJECT_ID: 共有 VPC ホスト プロジェクトの ID。
  2. Cloud Run サービス エージェントには、Cloud Run プロジェクトに対する Cloud Run サービス エージェント ロールが必要です。次のコマンドを実行して、ロールが手動で削除されていないことを確認できます。

    gcloud projects get-iam-policy SERVICE_PROJECT_ID \
      --flatten bindings \
      --filter "bindings.role:roles/run.serviceAgent"

    SERVICE_PROJECT_ID は、Cloud Run サービスまたはジョブのプロジェクト ID に置き換えます。

より細かな制御を行うには、Cloud Run サービス エージェントに次の権限を付与できます。

  • 共有 VPC ホスト プロジェクトに対する compute.networks.get
  • ホスト プロジェクトまたは特定のサブネットに対する compute.subnetworks.get
  • ホスト プロジェクトまたは特定のサブネットに対する compute.subnetworks.use
  • 共有 VPC サービス プロジェクトに対する compute.addresses.get
  • 共有 VPC サービス プロジェクトに対する compute.addresses.list
  • 共有 VPC サービス プロジェクトに対する compute.addresses.createInternal
  • 共有 VPC サービス プロジェクトに対する compute.addresses.deleteInternal

IP アドレスの割り振り

VPC ネットワークに Cloud Run サービスやジョブを配置するには、ネットワークとサブネットを 1 つ指定する必要があります。Cloud Run はサブネットから IP アドレスを割り振ります。

この IP アドレスは一時的なものであるため、個別の IP に基づくポリシーは作成しないでください。IP に基づくポリシー(ファイアウォール ルールなど)を作成する必要がある場合は、サブネット全体の IP アドレス範囲を使用する必要があります。

サービスやジョブが使用するネットワークやサブネットを変更するには、新しいサービス リビジョンをデプロイするか、新しいネットワークとサブネット値を使用して新しいジョブタスクを実行します。

スケールアップ

トラフィックが急増したとき速やかにスケールアップできるようにするため、Cloud Run では事前に IP アドレスを割り振ります。

どの時点においても、割り振られる IP アドレスは、存在するインスタンス数より多くなるはずです。Cloud Run が十分な IP アドレスを取得できるようにするには、サブネットで少なくとも数百個の IP アドレスが使用できる状態になっている必要があります。すべての Cloud Run サービスとジョブのサブネットの合計数が 100 を超える場合、IP アドレスの合計数をその 4 倍以上にすることをおすすめします。Cloud Run が追加の IP アドレスを割り振ることができない場合、新しい IP アドレスを使用できるようになるまでサービス インスタンスやジョブタスクを開始できません。IP アドレス空間が限定されている場合は、サポートされている IP 範囲で他の選択肢をご覧ください。IP の割り振り管理を効率よく簡単に行うには、同じサブネットに複数のサービスやジョブを配置してください。

スケールダウン

Cloud Run では、すべてのサービスやジョブがゼロにスケールダウンされた後でも、サービスやジョブを速やかにスケールアップする必要がある場合に備え、サブネットの IP アドレスの一部が最大 20 分間予約されています。各インスタンスには 1 つの IP アドレスが必要ですが、Cloud Run は最低 /28 のサブネット マスクを最初に予約します。16 個のインスタンスすべてを使い切ると、Cloud Run は新しいサブネットを作成します。

そのサブネットを削除するには、Cloud Run のサービスまたはジョブを削除するか再デプロイして、サブネットの使用を停止した後、1~2 時間待ちます。

サポートされている IP 範囲

Cloud Run では、サブネットで次の IPv4 範囲をサポートしています。

  • RFC 1918(推奨)
    • 10.0.0.0/8
    • 172.16.0.0/12
    • 192.168.0.0/16
  • RFC 6598
    • 100.64.0.0/10
  • クラス E(オンプレミスの設定では非推奨)
    • 240.0.0.0/4

サービスをデプロイする

ダイレクト VPC 下り(外向き)を使用すると、Cloud Run サービスはサーバーレス VPC アクセス コネクタを使用せずに共有 VPC ネットワークにトラフィックを送信できます。サービス自体と同様に、ネットワーク費用もゼロにスケーリングされます。また、Cloud Run サービス リビジョンに直接ネットワーク タグを追加して、VPC ファイアウォール ルールの適用など、よりきめ細かいネットワーク セキュリティを実現することもできます。

サービスにダイレクト VPC 下り(外向き)を構成するには、Google Cloud コンソール、Google Cloud CLI、または YAML を使用します。

コンソール

  1. Google Cloud コンソールで [Cloud Run] ページに移動します。

    Cloud Run に移動

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

  3. 新しいサービスを構成する場合は、必要に応じて最初のサービス設定のページに入力してから、[コンテナ、ボリューム、ネットワーキング、セキュリティ] をクリックしてサービス構成ページを開きます。

  4. [ネットワーキング] タブをクリックします。

  5. [アウトバウンド トラフィック用の VPC に接続する] をクリックします。

  6. [VPC に直接トラフィックを送信] をクリックします。

  7. [共有ネットワーク] を選択します。

  8. [ネットワーク] フィールドで、トラフィックを送信する共有 VPC ネットワークを選択します。

  9. [サブネット] フィールドで、サービスが IP アドレスを受信するサブネットを選択します。

  10. 省略可: サービスに関連付けるネットワーク タグの名前を入力します。ネットワーク タグは、リビジョン レベルで指定されます。サービス リビジョンには、network-tag-2 などの異なるネットワーク タグを設定できます。

  11. [トラフィック ルーティング] で、次のいずれかを選択します。

    • プライベート IP へのリクエストだけを VPC に転送し、共有 VPC ネットワーク経由で内部アドレスにのみトラフィックを送信します。
    • すべてのトラフィックを VPC に転送する。すべてのアウトバウンド トラフィックを共有 VPC ネットワーク経由で送信します。
  12. [作成] または [デプロイ] をクリックします。

  13. サービスが共有 VPC ネットワーク上にあることを確認するには、サービスをクリックして、[ネットワーキング] タブをクリックします。ネットワークとサブネットが [VPC] カードに一覧表示されます。

これで、ファイアウォール ルールで許可されるように、Cloud Run サービスから共有 VPC ネットワーク上の任意のリソースにリクエストを送信できます。

gcloud

サービスを共有サブネットに配置するには、次のコマンドを実行して、共有 VPC ネットワークとサブネットの完全修飾リソース名を指定します。

gcloud run deploy SERVICE_NAME \
  --image IMAGE_URL \
  --network projects/HOST_PROJECT_ID/global/networks/VPC_NETWORK \
  --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \
  --network-tags NETWORK_TAG_NAMES \
  --vpc-egress=EGRESS_SETTING \
  --region REGION \
  --max-instances MAX
  

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

  • SERVICE_NAME: Cloud Run サービスの名前。
  • IMAGE_URL: サービスのイメージ URL。
  • HOST_PROJECT_ID: 共有 VPC プロジェクトの ID。
  • VPC_NETWORK: 共有 VPC ネットワークの完全修飾リソース名。
  • REGION: Cloud Run サービスのリージョン。サブネットのリージョンと一致する必要があります。
  • SUBNET_NAME: サブネットの完全修飾リソース名。
  • (省略可)NETWORK_TAG_NAMES: サービスに関連付けるネットワーク タグのカンマ区切り名。サービスの場合、ネットワーク タグはリビジョン レベルで指定されます。サービス リビジョンには、network-tag-2 などの異なるネットワーク タグを設定できます。
  • EGRESS_SETTING: 下り(外向き)設定値
    • all-traffic: すべてのアウトバウンド トラフィックを共有 VPC ネットワーク経由で送信します。
    • private-ranges-only: 共有 VPC ネットワーク経由で内部アドレスにのみトラフィックを送信します。
  • MAX: 共有 VPC ネットワークに使用するインスタンスの最大数。サービスで許可されるインスタンスの最大数は 100 です。

より詳しい情報とオプションの引数については、gcloud のリファレンスをご覧ください。

YAML

  1. 新しいサービスを作成する場合は、この手順をスキップします。既存のサービスを更新する場合は、その YAML 構成をダウンロードします。

    gcloud run services describe SERVICE --format export > service.yaml
  2. 次の属性を更新します。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE_NAME
      labels:
        cloud.googleapis.com/location: REGION
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'
            run.googleapis.com/vpc-access-egress: EGRESS_SETTING
        spec:
          containers:
          - image: IMAGE

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

    • SERVICE_NAME: Cloud Run サービスの名前。サービス名は 49 文字以下で、リージョンとプロジェクトごとに一意である必要があります。
    • REGION: Cloud Run サービスのリージョン。サブネットのリージョンと一致する必要があります。
    • NETWORK は、共有 VPC ネットワークの完全修飾リソース名に置き換えます。
    • SUBNET_NAME は、サブネットの完全修飾リソース名に置き換えます。
    • (省略可)NETWORK_TAG_NAMES: サービスに関連付けるネットワーク タグの名前。サービスの場合、ネットワーク タグはリビジョン レベルで指定されます。サービス リビジョンには、network-tag-2 などの異なるネットワーク タグを設定できます。
    • EGRESS_SETTING: 下り(外向き)設定値
      • all-traffic: すべてのアウトバウンド トラフィックを共有 VPC ネットワーク経由で送信します。
      • private-ranges-only: 共有 VPC ネットワーク経由で内部アドレスにのみトラフィックを送信します。
    • IMAGE: サービス コンテナ イメージの URL。
  3. 次のコマンドを使用して、サービスを作成または更新します。

    gcloud run services replace service.yaml

Terraform

Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。

  1. 次のコードを main.tf ファイルに追加します。

    /**
     * Copyright 2024 Google LLC
     *
     * Licensed under the Apache License, Version 2.0 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     *      http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */
    
    # Example configuration of a Cloud Run service with direct VPC
    
    resource "google_cloud_run_v2_service" "default" {
      name     = "cloudrun-service"
      location = "us-central1"
    
      deletion_protection = false # set to "true" in production
    
      template {
        containers {
          image = "us-docker.pkg.dev/cloudrun/container/hello"
        }
        vpc_access {
          network_interfaces {
            network    = "default"
            subnetwork = "default"
            tags       = ["tag1", "tag2", "tag3"]
          }
        }
      }
    }
    

(省略可能)サービスへの未認証アクセスを許可したい場合は、サービスを一般公開にします

ジョブの作成

ダイレクト VPC 下り(外向き)を使用すると、Cloud Run ジョブはサーバーレス VPC アクセス コネクタを使用せずに共有 VPC ネットワークにトラフィックを送信できます。また、Cloud Run ジョブに直接ネットワーク タグを追加して、VPC ファイアウォール ルールの適用など、よりきめ細かいネットワーク セキュリティを実現することもできます。

ジョブにダイレクト VPC 下り(外向き)を構成するには、Google Cloud コンソール、Google Cloud CLI、または YAML を使用します。

コンソール

  1. Google Cloud コンソールで [Cloud Run] ページに移動します。

    Cloud Run に移動

  2. 新しいジョブを構成する場合は、[コンテナをデプロイ] をクリックし、[ジョブ] を選択して、必要に応じて最初の [ジョブを作成] フォームに入力します。既存のジョブを構成する場合は、[ジョブ] タブをクリックしてジョブを選択し、[編集] をクリックします。

  3. [コンテナ、変数とシークレット、接続、セキュリティ] をクリックして、ジョブのプロパティ ページを開きます。

  4. [接続] タブをクリックします。

  5. [アウトバウンド トラフィック用の VPC に接続する] をクリックします。

  6. [VPC に直接トラフィックを送信] をクリックします。

  7. [共有ネットワーク] を選択します。

  8. [ネットワーク] フィールドで、トラフィックを送信する共有 VPC ネットワークを選択します。

  9. [サブネット] フィールドで、ジョブが IP アドレスを受信するサブネットを選択します。

  10. 省略可: ジョブに関連付けるネットワーク タグの名前を入力します。ジョブの場合、ネットワーク タグは実行レベルで指定されます。ジョブ実行ごとに異なるネットワーク タグ(network-tag-2 など)を設定できます。

  11. [トラフィック ルーティング] で、次のいずれかを選択します。

    • プライベート IP へのリクエストだけを VPC に転送し、共有 VPC ネットワーク経由で内部アドレスにのみトラフィックを送信します。
    • すべてのトラフィックを VPC に転送する。すべてのアウトバウンド トラフィックを共有 VPC ネットワーク経由で送信します。
  12. [作成] または [更新] をクリックします。

  13. ジョブが共有 VPC ネットワーク上にあることを確認するには、ジョブをクリックして [構成] タブをクリックします。ネットワークとサブネットが [VPC] カードに一覧表示されます。

これで、ファイアウォール ルールで許可されているように、Cloud Run ジョブを実行して、共有 VPC ネットワーク上の任意のリソースにリクエストを送信できます。

gcloud

共有サブネットにジョブを配置するには、次のコマンドを実行して、共有 VPC ネットワークとサブネットの完全修飾リソース名を指定します。

gcloud run jobs create JOB_NAME \
  --image IMAGE_URL \
  --network projects/HOST_PROJECT_ID/global/networks/VPC_NETWORK \
  --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \
  --network-tags NETWORK_TAG_NAMES \
  --vpc-egress=EGRESS_SETTING \
  --region REGION \
  

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

  • JOB_NAME: Cloud Run ジョブの名前。
  • IMAGE_URL: ジョブのイメージ URL。
  • HOST_PROJECT_ID: 共有 VPC ホスト プロジェクトの ID。
  • VPC_NETWORK: 共有 VPC ネットワークの完全修飾リソース名。
  • REGION: Cloud Run ジョブのリージョン。サブネットのリージョンと一致する必要があります。
  • SUBNET_NAME: サブネットの名前の完全修飾リソース名。
  • (省略可)NETWORK_TAG_NAMES: ジョブに関連付けるネットワーク タグのカンマ区切り名。ジョブ実行ごとに異なるネットワーク タグ(network-tag-2 など)を設定できます。
  • EGRESS_SETTING: 下り(外向き)設定値
    • all-traffic: すべてのアウトバウンド トラフィックを共有 VPC ネットワーク経由で送信します。
    • private-ranges-only: 共有 VPC ネットワーク経由で内部アドレスにのみトラフィックを送信します。

より詳しい情報とオプションの引数については、gcloud のリファレンスをご覧ください。

YAML

  1. 新しいジョブを作成する場合は、この手順をスキップします。既存のジョブを更新する場合は、その YAML 構成をダウンロードします。

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. 次の属性を更新します。

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB_NAME
      annotations:
        run.googleapis.com/launch-stage: BETA
      labels:
        cloud.googleapis.com/location: REGION
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'
            run.googleapis.com/vpc-access-egress: EGRESS_SETTING
        spec:
          containers:
          - image: IMAGE

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

    • JOB_NAME: Cloud Run ジョブの名前。ジョブ名は 49 文字以下で、リージョンとプロジェクトごとに一意である必要があります。
    • REGION: Cloud Run ジョブのリージョン。サブネットのリージョンと一致する必要があります。
    • NETWORK は、共有 VPC ネットワークの完全修飾リソース名に置き換えます。
    • SUBNET は、サブネットの完全修飾リソース名に置き換えます。
    • (省略可)NETWORK_TAG_NAMES: ジョブに関連付けるネットワーク タグの名前。ジョブの場合、ネットワーク タグは実行レベルで指定されます。ジョブ実行ごとに異なるネットワーク タグ(network-tag-2 など)を設定できます。
    • EGRESS_SETTING: 下り(外向き)設定値
      • all-traffic: すべてのアウトバウンド トラフィックを共有 VPC ネットワーク経由で送信します。
      • private-ranges-only: 共有 VPC ネットワーク経由で内部アドレスにのみトラフィックを送信します。
    • IMAGE: ジョブのコンテナ イメージの URL。
  3. 次のコマンドを使用して、ジョブを作成または更新します。

    gcloud run jobs replace job.yaml

サービスを接続解除する

コンソール

  • 共有 VPC ネットワークからサービスを削除するには:

    1. Google Cloud コンソールで [Cloud Run] ページに移動します。

      Cloud Run に移動

    2. 削除するサービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。

    3. [ネットワーキング] タブをクリックします。

    4. [アウトバウンド トラフィック用の VPC に接続する] をクリアします。

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

    6. サービスが共有 VPC ネットワークに存在しなくなったことを確認するには、[ネットワーキング] タブをクリックします。ネットワークとサブネットが [VPC] カードに表示されなくなります。

  • サービスを共有 VPC ネットワークに接続したまま、ネットワーク タグのみを削除するには:

    1. 削除するネットワーク タグを含むサービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。

    2. [ネットワーキング] タブをクリックします。

    3. サービスとの関連付けを解除したいネットワーク タグの名前をクリアします。

    4. [デプロイ] をクリックします。

gcloud

  • 共有 VPC ネットワークからサービスを削除するには、次のコマンドを実行します。

    gcloud run services update SERVICE_NAME --region=REGION \
    --clear-network
  • 共有 VPC ネットワークに接続したままネットワーク タグのみを削除するには、次のコマンドを実行します。

    gcloud run services update SERVICE_NAME --region=REGION \
    --clear-network-tags

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

    • SERVICE_NAME: Cloud Run サービスの名前。
    • REGION: Cloud Run サービスのリージョン。

YAML

  • 共有 VPC ネットワークからサービスを削除するには:

    1. サービスの YAML 構成をダウンロードします。

      gcloud run services describe SERVICE_NAME --format export > service.yaml
    2. service.yaml ファイルから次の内容を削除します。

      run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'

      場所

      • NETWORK: 共有 VPC ネットワークの完全修飾リソース名。
      • SUBNET: サブネットの完全修飾リソース名。
      • (省略可)NETWORK_TAG_NAMES: サービスに関連付けられているネットワーク タグの名前。
    3. 次のコマンドを使用してサービスを更新します。

      gcloud run services replace service.yaml
  • サービスを共有 VPC ネットワークに接続したまま、ネットワーク タグのみを削除するには:

    1. サービスの YAML 構成をダウンロードします。

      gcloud run services describe SERVICE_NAME --format export > service.yaml
    2. 次の例に示すように、service.yaml ファイルの内容から tags 変数を削除します。network 変数と subnetwork 変数はそのままにします。

      run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET"}]'

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

      • NETWORK: 共有 VPC ネットワークの完全修飾リソース名。
      • SUBNET: サブネットの完全修飾リソース名。
    3. 次のコマンドを使用してサービスを更新します。

      gcloud run services replace service.yaml

ジョブを切断する

コンソール

  • 共有 VPC ネットワークからジョブを削除するには:

    1. Google Cloud コンソールで [Cloud Run] ページに移動します。

      Cloud Run に移動

    2. 削除するジョブをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。

    3. [構成] タブをクリックします。

    4. [アウトバウンド トラフィック用の VPC に接続する] をクリアします。

    5. [更新] をクリックします。

    6. ジョブが共有 VPC ネットワークに存在しないことを確認するには、[構成] タブをクリックします。ネットワークとサブネットが [VPC] カードに表示されなくなります。

  • ジョブを共有 VPC ネットワークに接続したまま、ネットワーク タグのみを削除するには:

    1. 削除するネットワーク タグを含むジョブをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。

    2. [接続] タブをクリックします。

    3. ジョブとの関連付けを解除したいネットワーク タグの名前をクリアします。

    4. [更新] をクリックします。

gcloud

  • 共有 VPC ネットワークからジョブを削除するには、次のコマンドを実行します。

    gcloud run jobs update JOB_NAME --region=REGION \
      --clear-network
      
  • ジョブを共有 VPC ネットワークに接続したままネットワーク タグのみを削除するには、次のコマンドを実行します。

    gcloud run jobs update JOB_NAME --region=REGION \
      --clear-network-tags
      

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

    • JOB_NAME: Cloud Run ジョブの名前。
    • REGION: Cloud Run ジョブのリージョン。

YAML

  • 共有 VPC ネットワークからジョブを削除するには:

    1. ジョブの YAML 構成をダウンロードします。

      gcloud run jobs describe JOB_NAME --format export > job.yaml
    2. job.yaml ファイルから次の内容を削除します。

      run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'

      場所

      • NETWORK: 共有 VPC ネットワークの完全修飾リソース名。
      • SUBNET: サブネットの完全修飾リソース名。
      • (省略可)NETWORK_TAG_NAMES: ジョブをネットワーク タグに関連付けている場合、ネットワーク タグの名前。
    3. 次のコマンドを使用してジョブを更新します。

      gcloud run jobs replace job.yaml
  • ジョブを共有 VPC ネットワークに接続したまま、ネットワーク タグのみを削除するには:

    1. ジョブの YAML 構成をダウンロードします。

      gcloud run jobs describe JOB_NAME --format export > job.yaml
    2. job.yaml ファイルから次の内容を削除します。

      run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'

      場所

      • NETWORK: 共有 VPC ネットワークの完全修飾リソース名。
      • SUBNET: サブネットの完全修飾リソース名。
      • (省略可)NETWORK_TAG_NAMES: ジョブをネットワーク タグに関連付けている場合、ネットワーク タグの名前。
    3. 次のコマンドを使用してジョブを更新します。

      gcloud run jobs replace job.yaml

トラブルシューティング

サブネットを削除できない

サブネットを削除するには、最初にそのサブネットを使用するすべてのリソースを削除する必要があります。Cloud Run がサブネットを使用している場合は、共有 VPC ネットワークから Cloud Run を切断するか、サブネットを削除する前に別のサブネットに移動する必要があります。

共有 VPC ネットワークを切断できない

ホスト プロジェクト内で共有 VPC ネットワークを接続解除するには、共有 VPC のデプロビジョニングの手順に沿って、Cloud Run のサービスまたは共有 VPC ネットワークのジョブをすべて切断します。

共有 VPC ネットワークを使用している Cloud Run リソースを確認するには、次のコマンドを実行します。

gcloud compute shared-vpc list-associated-resources HOST_PROJECT_ID

HOST_PROJECT_ID は、共有 VPC ホスト プロジェクトの ID に置き換えます。

ダイレクト VPC のサブネットで IP アドレスが不足する

共有 VPC ネットワークのサブネットで IP アドレスが不足した場合、Cloud Logging によってログに記録されます。この場合、Cloud Run は追加の IP アドレスが利用可能になるまで、サービス インスタンスやジョブタスクを開始できません。

割り振られた IP アドレスを表示する

Cloud Run が割り振った IP アドレスを確認するには、Google Cloud コンソールの [IP アドレス] ページに移動するか、Google Cloud CLI から次のコマンドを実行します。

gcloud compute addresses list