ユーザー管理のコールアウト バックエンド サービスを構成する

Service Extensions を使用すると、サポートされているアプリケーション ロードバランサは、データ処理パスからユーザーが管理するコールアウト バックエンド サービスにコールアウトを送信できます。これにより、アプリケーション ロードバランサは処理パスでカスタム ロジックを使用できます。このページでは、ユーザー管理のコールアウト バックエンド サービスを構成する方法について説明します。

アプリケーション ロードバランサの拡張機能の概要については、Cloud Load Balancing の拡張機能の概要をご覧ください。

始める前に

  1. プロジェクトのオーナーまたは編集者ロール、あるいは次に示す Compute Engine IAM ロールがあることを確認します。

  2. Compute Engine API と Network Services API を有効にします。

    コンソール

    1. Google Cloud コンソールで、[API へのアクセスの有効化] ページに移動します。

      API へのアクセスを有効にする

    2. 画面上の指示に沿って操作します。

    gcloud

    gcloud services enable コマンドを使用します。

    gcloud services enable compute.googleapis.com networkservices.googleapis.com
    
  3. 拡張機能をサポートするアプリケーション ロードバランサを作成して構成します。この例では、VM インスタンス グループのバックエンドを使用してリージョン内部アプリケーション ロードバランサを設定します。記載されているサンプル値を使用します。

  4. テスト用のクライアント VM を作成します

  5. ルート拡張機能のみ。追加のバックエンド サービスを設定し、URL マップを更新して、指定された条件に一致する HTTP ホストを持つすべてのトラフィックをこのバックエンド サービスにルーティングするホスト マッチャーを追加します。

    コンソール

    1. Google Cloud コンソールで [インスタンスの作成] ページに移動します。

      [インスタンスの作成] に移動

      次のサンプル値を指定します。

      • 名前: l7-ilb-backend2-vm
      • タグ: allow-sshload-balanced-backend
      • ゾーン: us-west1-a
      • ネットワーク: lb-network
      • サブネットワーク: backend-subnet
      • 画像: debian-11
      • 家族: debian-cloud
      • [詳細オプション] > [管理] > [自動化]:

        '#! /bin/bash
        apt-get update
        apt-get install apache2 -y
        a2ensite default-ssl
        a2enmod ssl
        echo "Page served from second backend service" | tee /var/www/html/index.html
        systemctl restart apache2'
        
    2. 非マネージド インスタンス グループを作成します。

      次のサンプル値を指定します。

      • 名前: l7-ilb-backend-service2-ig
      • ゾーン: us-west1-a
    3. 新しい VM をインスタンス グループに追加します

      [VM インスタンス] に l7-ilb-backend2-vm を指定します。

    4. Google Cloud コンソールで、[ロード バランシング] ページに移動します。

      [ロード バランシング] に移動

    5. バックエンド サービスを作成してバックエンドを追加し、ロードバランサを更新します。

      バックエンド サービスに、次のサンプル値を指定します。

      • 名前: l7-ilb-backend-service2
      • プロトコル: HTTP
      • [ヘルスチェック] > [名前]: l7-ilb-basic-check
      • [ヘルスチェック] > [リージョン]: us-west1

      バックエンドには、次のサンプル値を指定します。

      • インスタンス グループ: l7-ilb-backend-service2-ig
      • バランス モード: Utilization
    6. バックエンド サービスの URL マップにホストマッチャーを追加します

      次のサンプル値を指定します。

      • 名前: l7-ilb-map
      • ホスト: service-extensions.com
      • パス: callouts
      • プロトコル: HTTP
      • バックエンド: l7-ilb-backend-service2

    gcloud

    1. VM インスタンスを作成します。次のサンプル値を使用して、gcloud compute instances create コマンドを使用します。

      gcloud compute instances create l7-ilb-backend2-vm \
        --zone=us-west1-a \
        --network=lb-network \
        --subnet=backend-subnet \
        --tags=allow-ssh,load-balanced-backend \
        --image-family=debian-11 \
        --image-project=debian-cloud \
        --metadata=startup-script='#! /bin/bash
            apt-get update
            apt-get install apache2 -y
            a2ensite default-ssl
            a2enmod ssl
            echo "Page served from second backend service" | tee /var/www/html/index.html
            systemctl restart apache2'
      
    2. 非マネージド インスタンス グループを作成します。次のサンプル値を使用して、gcloud compute instance-groups unmanaged create コマンドを使用します。

      gcloud compute instance-groups unmanaged create l7-ilb-backend-service2-ig \
        --zone us-west1-a
      
    3. 新しい VM をインスタンス グループに追加します。次のサンプル値を使用して、gcloud compute instance-groups unmanaged add-instances コマンドを使用します。

      gcloud compute instance-groups unmanaged add-instances l7-ilb-backend-service2-ig \
        --zone=us-west1-a \
        --instances=l7-ilb-backend2-vm
      
    4. バックエンド サービスを作成します。次のサンプル値を使用して、gcloud compute backend-services create コマンドを使用します。

      gcloud compute backend-services create l7-ilb-backend-service2 \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --protocol=HTTP \
        --health-checks=l7-ilb-basic-check \
        --health-checks-region=us-west1 \
        --region=us-west1
      
    5. バックエンド サービスにバックエンドを追加します。次のサンプル値を使用して、gcloud compute backend-services add-backend コマンドを使用します。

      gcloud compute backend-services add-backend l7-ilb-backend-service2 \
        --balancing-mode=UTILIZATION \
        --instance-group=l7-ilb-backend-service2-ig \
        --instance-group-zone=us-west1-a \
        --region=us-west1
      
    6. バックエンド サービスの URL マップにホスト マッチャーを追加します。次のサンプル値を使用して、gcloud compute url-maps add-path-matcher コマンドを使用します。

      gcloud compute url-maps add-path-matcher l7-ilb-map \
        --path-matcher-name=callouts \
        --default-service=l7-ilb-backend-service2 \
        --new-hosts=service-extensions.com \
        --region=us-west1
        

コールアウト バックエンド サービスを設定する

この例では、Envoy の ext_proc gRPC API を実装する基本的な Python ベースの拡張サーバーを使用できます。このサーバーを含む Docker コンテナは、 Google Cloudの Service Extensions GitHub リポジトリus-docker.pkg.dev/service-extensions-samples/callouts/python-example-basic:main にあります。このリポジトリには、ヘッダーの変更や本文の変更などのタスクを行う ext_proc サーバーの Python と Go のサンプルが他にもいくつか含まれています。

コールアウト バックエンド サービスを作成して設定する手順は次のとおりです。

  1. サンプル Python 拡張機能サーバーを実行しているコールアウト バックエンド サービスの仮想マシン(VM)インスタンスを作成します。

    コンソール

    コンテナ イメージを使用してインスタンスを作成する

    1. Google Cloud コンソールで [インスタンスの作成] ページに移動します。

      [インスタンスの作成] に移動

    2. 次のサンプル値を指定します。

      • 名前: callouts-vm
      • ゾーン: us-west1-a
      • ネットワーク: lb-network
      • サブネットワーク: backend-subnet
      • タグ: allow-sshload-balanced-backend
      • コンテナ イメージ: us-docker.pkg.dev/service-extensions-samples/callouts/python-example-basic:main

    gcloud

    コンテナ イメージを使用してインスタンスを作成します。次のサンプル値を使用して、gcloud compute instances create-with-container コマンドを使用します。

    gcloud compute instances create-with-container callouts-vm \
      --container-image=us-docker.pkg.dev/service-extensions-samples/callouts/python-example-basic:main \
      --network=lb-network \
      --subnet=backend-subnet \
      --zone=us-west1-a \
      --tags=allow-ssh,load-balanced-backend
    
  2. 非マネージド インスタンス グループに VM を追加します。

    コンソール

    非マネージド インスタンス グループを作成します。

    1. Google Cloud コンソールで、[インスタンス グループ] ページに移動します。

      [インスタンス グループ] に移動

      次のサンプル値を指定します。

      • 名前: callouts-ig
      • ゾーン: us-west1-a
    2. インスタンス グループのポートを設定します

      [ポート マッピング] に、ポート名と値(http:80grpc:443)を指定します。

    3. 新しい VM をインスタンス グループに追加します

      [VM インスタンス] に callouts-vm を指定します。

    gcloud

    1. 非マネージド インスタンス グループを作成します。次のサンプル値を使用して、gcloud compute instance-groups unmanaged create コマンドを使用します。

      gcloud compute instance-groups unmanaged create callouts-ig \
        --zone=us-west1-a
      
    2. インスタンス グループのポートを設定します。次のサンプル値を使用して、gcloud compute instance-groups unmanaged set-named-ports コマンドを使用します。

      gcloud compute instance-groups unmanaged set-named-ports callouts-ig \
        --named-ports=http:80,grpc:443 \
        --zone=us-west1-a
      
    3. 新しい VM インスタンスを非マネージド インスタンス グループに追加します。次のサンプル値を使用して、gcloud compute instance-groups unmanaged add-instances コマンドを使用します。

      gcloud compute instance-groups unmanaged add-instances callouts-ig \
        --zone=us-west1-a \
        --instances=callouts-vm
      
  3. コールアウト バックエンド サービスを作成し、バックエンドを追加します。他のバックエンド サーバーと同様に、コールアウト サーバーでプロキシ トラフィックを許可するには、ファイアウォール ルールが必要になることがあります。

    コンソール

    HTTP/2 プロトコルを使用し、HTTP ヘルスチェックを行うコールアウト バックエンド サービスを作成します。

    1. Google Cloud コンソールで、Cloud Load Balancing の [バックエンド] ページに移動します。

      [バックエンド] に移動

    2. 次のサンプル値を使用してリージョン バックエンド サービスを追加します。

      • 名前: l7-ilb-callout-service
      • リージョン: us-west1
      • ロードバランサのタイプ: Regional external Application Load Balancer (EXTERNAL_MANAGED)
      • プロトコル: HTTP2
      • ポート名: grpc
      • [ヘルスチェック] > [名前]: callouts-hc
      • [ヘルスチェック] > [ポート番号]: 80
      • Cloud Armor バックエンド セキュリティ ポリシー: None
    3. 拡張サーバーを含むインスタンス グループをバックエンドとしてバックエンド サービスに追加します。インスタンス グループは ext_proc サービスを実行します。

      次のサンプル値を指定します。

      • インスタンス グループ: callouts-ig
      • バランス モード: Utilization

    gcloud

    1. インスタンスの基本的な HTTP ヘルスチェックを作成します。次のサンプル値を使用して、gcloud compute health-checks create http コマンドを使用します。

      gcloud compute health-checks create http callouts-hc \
        --region=us-west1 \
        --port=80
      
    2. HTTP/2 プロトコルを使用するコールアウト バックエンド サービスを作成します。gcloud compute backend-services create コマンドを使用します。

      gcloud compute backend-services create l7-ilb-callout-service \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --protocol=HTTP2 \
        --port-name=grpc \
        --health-checks=callouts-hc \
        --health-checks-region=us-west1 \
        --region=us-west1
      
    3. 拡張サーバーを含むインスタンス グループをバックエンドとしてバックエンド サービスに追加します。インスタンス グループは ext_proc サービスを実行します。次のサンプル値を使用して、gcloud compute backend-services add-backend コマンドを使用します。

      gcloud compute backend-services add-backend l7-ilb-callout-service \
        --balancing-mode=UTILIZATION \
        --instance-group=callouts-ig \
        --instance-group-zone=us-west1-a \
        --region=us-west1
      

バックエンド サービスを設定したら、ルート認証トラフィックの拡張機能を構成できます。

次のステップ