アンビエント ネットワーキングを構成する

アンビエント ネットワーキングは、Cloud Run に組み込まれた簡素化されたリソース ネットワーキング エクスペリエンスを提供します。リソースにフルマネージドのデータプレーンを提供するため、カスタム プロキシの構築と維持に伴う運用上の負担が軽減されます。また、サービス メッシュのコンセプトを抽象化するため、メッシュを学習または構成することなく、高度なネットワーキング機能を利用できます。

アンビエント ネットワーキングを有効にすると、デフォルトではトラフィックが変更されずに通過するため、既存の HTTP トラフィックと TCP トラフィックは引き続き機能します。アンビエント ネットワーキングを有効にしても、リソースの動作は変わりません。アンビエント ネットワーキングを基盤として、次のセクションで説明する機能を有効にできます。

ユースケース

アンビエント ネットワーキングは、Cloud Run の高度なネットワーキング機能の基盤です。アンビエント ネットワーキングを有効にすると、Cloud Run の Agent Gateway の使用を有効にできます。この機能は、組織が一元管理するアクセス ポリシーとセキュリティ ポリシーを使用してエージェント トラフィックを管理します。

アーキテクチャ

アンビエント ネットワーキングは、Cloud Run リソースの各コンテナ インスタンス内で、アプリケーション コンテナとともにフルマネージド Envoy サイドカー コンテナを実行します。サイドカーはインスタンスのネットワーク トラフィックをインターセプトし、Cloud Run が配布するルーティング ポリシーとセキュリティ ポリシーを適用します。

Cloud Run リソースのコンテナ インスタンス内でアプリケーション コンテナと並行して実行されるアンビエント サイドカー コンテナ。トラフィックはサイドカーから他の Cloud Run リソースに流れます。
アンビエント サイドカー コンテナは、アプリケーション コンテナと呼び出し先の間のトラフィックをインターセプトします(クリックして拡大)。

アンビエント ネットワーキングのスコープ

アンビエント ネットワーキングは、グローバル スコープとリージョン スコープをサポートしています。スコープによって、サイドカーがグローバル ルーティング プレーンに接続するか、リージョン ルーティング プレーンに接続するかが決まります。

  • リージョン(デフォルト): Cloud Run はサイドカーをリージョン ルーティング プレーンに接続し、ルーティング ポリシーとセキュリティ ポリシーをサービスのリージョン内の宛先に制限します。このスコープは、保存データ、使用中、転送中のデータのデータ所在地(DRZ)要件をサポートします。スコープを指定しない場合、アンビエント ネットワーキングはリージョン スコープを使用します。
  • グローバル: Cloud Run はサイドカーをグローバル ルーティング プレーンに接続し、任意のリージョンの宛先にトラフィックをルーティングできるようにします。

アンビエント ネットワーキングを使用する各機能には、特定のスコープが必要です。

機能 グローバル スコープ リージョン スコープ
Cloud Run の Agent Gateway 非対応 サポート対象

制限事項

アンビエント ネットワーキングには次の制限が適用されます。

  • UDP トラフィックはサポートされていません。アンビエント ネットワーキングは、HTTP トラフィックと TCP トラフィックのみをサポートします。
  • 受信リクエストはエンドツーエンドの HTTP/2 をサポートしていません。詳細については、既知の問題をご覧ください。
  • リージョン スコープは、*.googleapis.com をプライベート Google アクセス IP アドレスに解決する VPC ネットワークをサポートしていません。詳細については、既知の問題をご覧ください。
  • 第 1 世代の実行環境はサポートされていません。実行環境を指定しない場合、Cloud Run は第 2 世代を使用します。
  • コンテナ インスタンスの起動に時間がかかる。詳細については、既知の問題をご覧ください。

始める前に

  1. Google Cloud アカウントにログインします。 Google Cloudを初めて使用する場合は、アカウントを作成して、実際のシナリオで Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. Cloud Run、Network Services、Traffic Director の各 API がまだ有効になっていない場合は、有効にします。

    API を有効にするために必要なロール

    API を有効にするには、serviceusage.services.enable 権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を介してこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を介してこの権限を取得できます。ロールを付与する方法を確認する。

    API を有効にする

  7. Cloud Run リソースの CPU 上限を 1 vCPU、メモリ上限を 1 GiB 増やします。新しい CPU 上限がサポートされている値でない場合は、次に大きいサポートされている値を使用します。アンビエント サイドカーはコンテナ インスタンスの CPU とメモリを共有するため、この増加により、アプリケーションが必要なリソースを維持できるようになります。

  8. アンビエント ネットワーキング サイドカーの使用量については、Cloud Run の料金ページをご覧ください。プレビュー期間中は、アンビエント機能の課金は適用されません。

必要なロール

Cloud Run サービスの構成とデプロイに必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。

ソースコードからサービスまたは関数をデプロイする場合は、プロジェクトと Cloud Build サービス アカウントで追加のロールが付与されている必要があります。

Cloud Run リソースのサービス ID には、次のロールも付与されている必要があります。

  • Traffic Director クライアント(roles/trafficdirector.client)
  • Cloud Trace エージェント(roles/cloudtrace.agent)

これらのロールをサービス ID に付与するには、gcloud を使用します。

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="serviceAccount:RUN_CLIENT_SA@PROJECT_ID.iam.gserviceaccount.com" \
    --role="roles/trafficdirector.client"

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="serviceAccount:RUN_CLIENT_SA@PROJECT_ID.iam.gserviceaccount.com" \
    --role="roles/cloudtrace.agent"

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

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
  • RUN_CLIENT_SA: Cloud Run サービスに接続されているサービス アカウントの名前。

サービス ID にこれらのロールがない場合でも、Cloud Run リソースはデプロイされますが、アンビエント ネットワーキングを使用する機能は動作しません。

Cloud Run に関連付けられている IAM ロールと権限のリストについては、Cloud Run IAM ロールと Cloud Run IAM 権限をご覧ください。Cloud Run サービスがGoogle Cloud APIs(Cloud クライアント ライブラリなど)と連携している場合は、サービス ID の構成ガイドをご覧ください。ロールの付与の詳細については、デプロイ権限とアクセスの管理をご覧ください。

アンビエント ネットワーキングを構成する

gcloud または YAML ファイルを使用して、アンビエント ネットワーキングを構成します。

gcloud

  • 新しいサービスでアンビエント ネットワーキングを有効にするには、--ambient-networking フラグと、必要に応じて --ambient-scope フラグを渡します。

    gcloud beta run deploy SERVICE \
      --image=IMAGE_URL \
      --ambient-networking \
      --ambient-scope=SCOPE \
      --region=REGION
  • 既存のサービスでアンビエント ネットワーキングを有効にするには、同じフラグを gcloud beta run services update コマンドに渡します。これにより、アンビエント ネットワーキングが有効になった新しいリビジョンがデプロイされます。

    gcloud beta run services update SERVICE \
      --ambient-networking \
      --ambient-scope=SCOPE \
      --region=REGION
  • アンビエント ネットワーキングを無効にするには、--no-ambient-networking フラグを渡します。

    gcloud beta run services update SERVICE \
      --no-ambient-networking \
      --region=REGION

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

  • SERVICE: Cloud Run サービスの名前。
  • IMAGE_URL: コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latest など)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL は LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG の形式です。
  • SCOPE: アンビエント ネットワーキング スコープ(global または regional)。
  • REGION: サービスのリージョン。

YAML

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

    gcloud run services describe SERVICE --format export > service.yaml
  2. run.googleapis.com/ambient-networking アノテーションを追加します。必要に応じて、run.googleapis.com/ambient-scope アノテーションを追加します。

    spec:
     template:
       metadata:
         annotations:
           run.googleapis.com/ambient-networking: 'true'
           run.googleapis.com/ambient-scope: SCOPE

    SCOPE は、アンビエント ネットワーキング スコープ(global または regional)に置き換えます。アンビエント ネットワーキングを無効にするには、run.googleapis.com/ambient-networking を 'false' に設定し、run.googleapis.com/ambient-scope アノテーションを削除します。

  3. 次のコマンドを使用して、サービスを作成または更新します。

    gcloud run services replace service.yaml

    gcloud run services replace コマンドは、service.yaml ファイルが存在する場合、デフォルトでこのファイルを使用します。

アンビエント ネットワーキングの設定を表示する

Cloud Run サービスの現在のアンビエント ネットワーキング設定を表示するには:

コンソール

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

    Cloud Run に移動

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

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

  4. [アンビエント ネットワーキング] カードで、[スコープ] の設定を確認します。

gcloud

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

    gcloud beta run services describe SERVICE \
       --region=REGION
  2. 返された構成で、run.googleapis.com/ambient-networking アノテーションと run.googleapis.com/ambient-scope アノテーションを見つけます。

次のステップ