次の方法で共有


VMware Spring Cloud Gateway を構成する

Note

BasicStandardEnterprise プランは、2025 年 3 月中旬以降非推奨になり、廃止期間は 3 年間です。 Azure Container Apps に移行することをお勧めします。 詳細については、「Azure Spring Apps の廃止のお知らせ」を参照してください。

Standard 従量課金と専用プランは、2024 年 9 月 30 日以降に非推奨になり、6 か月後に完全にシャットダウンされます。 Azure Container Apps に移行することをお勧めします。 詳細については、「Azure Spring Apps の Standard 従量課金および専用プランを Azure Container Apps に移行する」を参照してください。

この記事の適用対象: ❎ Basic/Stanadard ✅ Enterprise

この記事では、Azure Spring Apps Enterprise プランで VMware Spring Cloud Gateway for VMware Tanzu を構成する方法を示します。

VMware Spring Cloud Gateway は、オープンソースの Spring Cloud Gateway プロジェクトに基づく商用 VMware Tanzu コンポーネントです。 VMware Spring Cloud Gateway for Tanzu では、シングル サインオン (SSO)、アクセス制御、レート制限、回復性、セキュリティなど、API 開発チームにとっての分野横断的な懸念に対処しています。 最新のクラウドネイティブ パターンと、API 開発用の任意のプログラミング言語を使用して、より迅速に API を提供できます。

VMware Spring Cloud Gateway インスタンスは、規則に従ってトラフィックをルーティングします。 動的なトラフィック負荷に対応できるように、"スケールインとスケールアウト"、"スケールアップとスケールダウン" の両方をサポートします。

VMware Spring Cloud Gateway には、次のような機能があります。

  • 動的ルーティング構成。個々のアプリケーションに依存せず、再コンパイルなしで適用および変更できます
  • 承認された JSON Web トークン (JWT) 要求をアプリケーション サービスに転送する商用 API ルート フィルター
  • クライアント証明書の承認
  • レート制限のアプローチ
  • サーキット ブレーカーの構成
  • HTTP 基本認証の資格情報を使用したアプリケーション サービスへのアクセスのサポート

VMware Spring Cloud Gateway は、API portal for VMware Tanzu と統合するために、任意のルート構成への追加または変更の後に OpenAPI バージョン 3 のドキュメントを自動的に生成します。 詳細については、「API portal for VMware Tanzu を使用する」をご覧ください。

前提条件

VMware Spring Cloud Gateway の有効化または無効化

Azure portal または Azure CLI を使用して、サービス インスタンスの作成後に VMware Spring Cloud Gateway を有効または無効にすることができます。 VMware Spring Cloud Gateway を無効にする前に、エンドポイントの割り当てを解除し、すべてのルート構成を削除する必要があります。

Azure portal を使用して VMware Spring Cloud Gateway を有効または無効にするには、次の手順に従います。

  1. サービス リソースに移動し、[Spring Cloud Gateway] を選択します。
  2. [管理] を選択します。
  3. [Spring Cloud ゲートウェイの有効化] チェックボックスをオンまたはオフにし、[保存] を選択します。

これで、Spring Cloud Gateway の状態を Spring Cloud Gateway ページで確認できるようになりました。

Spring Cloud Gateway ページが示されている Azure portal のスクリーンショット。

VMware Spring Cloud Gateway の再起動

再起動アクションを完了すると、VMware Spring Cloud Gateway インスタンスはローリング ベースで再起動します。

Azure portal を使用して VMware Spring Cloud Gateway を再起動するには、次の手順に従います。

  1. サービス リソースに移動し、[Spring Cloud Gateway] を選択します。
  2. 再起動 を選択します。
  3. [OK] を選択して、再起動を確定します。

Spring Cloud Gateway ページが示されている Azure portal のスクリーンショット。ゲートウェイの再起動に関する確認メッセージが表示されています。

VMware Spring Cloud Gateway にパブリック エンドポイントを割り当てる

このセクションでは、パブリック エンドポイントを VMware Spring Cloud Gateway に割り当て、そのプロパティを構成する方法について説明します。

Azure portal でエンドポイントを割り当てるには、次の手順を使用します。

  1. Azure Spring Apps インスタンスを開きます。
  2. ナビゲーション ウィンドウで [Spring Cloud Gateway] を選択し、[概要] を選択します。
  3. [エンドポイントの割り当て][はい] に設定します。

数分後、URL に構成済みのエンドポイント URL が表示されます。 後で使用できるように、この URL を保存します。

Azure portal の Spring Cloud Gateway の概要ページのスクリーンショット。エンドポイントを割り当てるためのトグルが表示されています。

VMware Spring Cloud Gateway メタデータを構成する

VMware Spring Cloud Gateway メタデータによって、OpenAPI バージョン 3 のドキュメントが自動的に生成されます。 VMware Tanzu の API ポータルでルート グループを表示するように VMware Spring Cloud Gateway メタデータを構成できます。 詳細については、「API portal for VMware Tanzu を使用する」をご覧ください。

次の表に、使用可能なメタデータ オプションを示します。

プロパティ 説明
title VMware Spring Cloud Gateway インスタンスで使用可能な API のコンテキストを説明するタイトル。 既定値は Spring Cloud Gateway for K8S です。
description VMware Spring Cloud Gateway インスタンスで使用可能な API の詳細な説明。 既定値は Generated OpenAPI 3 document that describes the API routes configured for '[Gateway instance name]' Spring Cloud Gateway instance deployed under '[namespace]' namespace.*.
documentation VMware Spring Cloud Gateway インスタンスで使用できる API ドキュメントの場所。
version この VMware Spring Cloud Gateway インスタンスで使用可能な API のバージョン。 既定値は unspecified です。
serverUrl VMware Spring Cloud Gateway インスタンス上の API にアクセスするためのベース URL。 API ポータルと統合する場合、このプロパティは必須です。

Azure portal または Azure CLI を使用して、メタデータ プロパティを編集できます。

Azure portal でメタデータを編集するには、次の手順を使用します。

  1. Azure Spring Apps インスタンスを開きます。
  2. ナビゲーション ウィンドウで [Spring Cloud Gateway] を選択し、[構成] を選択します。
  3. API に表示されているプロパティの値を指定します。
  4. [保存] を選択します。

[API] セクションが強調表示されている Spring Cloud Gateway の [構成] タブを示す Azure portal のスクリーンショット。

シングル サインオンの構成

VMware Spring Cloud Gateway は、OpenID ID プロバイダーによるシングル サインオン (SSO) を介した認証と承認をサポートしています。 このプロバイダーは、OpenID Connect 検出プロトコルをサポートします。 次の表では、SSO プロパティについて説明します。

プロパティ 必須 説明
issuerUri はい 発行者の識別子としてアサートされる URI。 たとえば、issuerUrihttps://example.com の場合、OpenID プロバイダー構成要求は https://example.com/.well-known/openid-configuration に対して行われます。 結果は OpenID プロバイダー構成応答である必要があります。
clientId はい ID プロバイダー からの OpenID Connect クライアント ID。
clientSecret はい ID プロバイダー からの OpenID Connect クライアント シークレット。
scope はい JWT ID トークンに含めるスコープの一覧。 この一覧は、ID プロバイダーが許可するスコープに基づいている必要があります。

Microsoft Entra ID で SSO を設定するには、「Spring Cloud Gateway と API Portal のために Microsoft Entra ID を使用してシングル サインオンを設定する」をご覧ください。

Azure portal または Azure CLI を使用して、SSO プロパティを編集できます。

Azure portal で SSO プロパティを編集するには、次の手順を使用します。

  1. Azure Spring Apps インスタンスを開きます。
  2. ナビゲーション ウィンドウで [Spring Cloud Gateway] を選択し、[構成] を選択します。
  3. SSO に表示されているプロパティの値を指定します。
  4. [保存] を選択します。

シングル サインオンのセクションが強調表示されている Spring Cloud Gateway の [構成] タブを示す Azure portal のスクリーンショット。

VMware Spring Cloud Gateway では、OpenID Connect Discovery プロトコルをサポートする承認サーバーのみがサポートされます。 また必ず、外部承認サーバーがゲートウェイへのリダイレクトを許可するように構成してください。 承認サーバーのドキュメントを参照し、許可されるリダイレクト URI の一覧に https://<gateway-external-url>/login/oauth2/code/sso を追加します。

間違ったパスワードなど、SSO プロパティの構成が不適切な場合は、SSO プロパティ全体を削除した後、正しい構成を追加する必要があります。

SSO を構成した後は、VMware Spring Cloud Gateway のルート用に ssoEnabled: true を必ず設定してください。

SSO ログアウトの構成

VMware Spring Cloud Gateway サービス インスタンスは、現在の SSO セッションからログアウトするための既定の API エンドポイントを提供します。 このエンドポイントへのパスは /scg-logout です。 ログアウトの結果は、ログアウト エンドポイントの呼び出し方法に応じて、次のいずれかの結果になります。

  • セッションからログアウトし、ID プロバイダー (IdP) ログアウトにリダイレクトします。
  • サービス インスタンス セッションからログアウトします。

IdP と SSO セッションからログアウトする

GET 要求を /scg-logout エンドポイントに送信すると、エンドポイントは IdP ログアウト URL に 302 リダイレクト応答を送信します。 ゲートウェイ サービス インスタンスのパスにユーザーを返すエンドポイントを取得するには、/scg-logout エンドポイントを使用して GET 要求にリダイレクト パラメータを追加します。 たとえば、${server-url}/scg-logout?redirect=/home を使用できます。

リダイレクト パラメータの値は、VMware Spring Cloud Gateway サービス インスタンスの有効なパスである必要があります。 外部 URL にリダイレクトすることはできません。

次の手順では、マイクロサービスに関数を実装する方法の例について説明します。

  1. ログアウト要求をアプリケーションにルーティングするためのルート構成を取得します。 例については、GitHub の「animal-rescue」リポジトリのルート構成をご覧ください。

  2. 必要なログアウト ロジックをアプリケーションに追加します。 最後に、「animal-rescue」リポジトリの getActionButton メソッドの return 値に示すように、ゲートウェイの /scg-logout エンドポイントに対する GET 要求が必要です。

SSO セッションのみからログアウトする

XMLHttpRequest を使用して /scg-logout エンドポイントに GET 要求を送信すると、302 リダイレクトが飲み込まれ、応答ハンドラーで処理されない可能性があります。 この場合、ユーザーは VMware Spring Cloud Gateway サービス インスタンスの SSO セッションからのみログアウトされます。 ユーザーは引き続き有効な IdP セッションを使用します。 通常、ユーザーが再度ログインしようとすると、IdP から認証されたゲートウェイに自動的に戻されます。

次の例に示すように、ログアウト要求をアプリケーションにルーティングするためのルート構成が必要です。 このコードでは、ゲートウェイのみのログアウト SSO セッションを作成します。

const req = new XMLHttpRequest();
req.open("GET", "/scg-logout);
req.send();

クロスオリジン リソース共有の構成

クロスオリジン リソース共有 (CORS) を使用すると、Web ページ上の制限されたリソースを、最初のリソースが提供されたドメイン以外の別のドメインから要求できます。 次の表では、使用できる CORS 構成オプションについて説明します。

プロパティ 説明
allowedOrigins クロスサイト要求を行うことが許可されているオリジン
allowedOriginPatterns クロスサイト要求を行うことが許可されているオリジン パターン
allowedMethods クロスサイト要求で許可されている HTTP メソッド
allowedHeaders クロスサイト要求で許可されているヘッダー
maxAge クライアントがフライト前の要求からの応答をキャッシュする時間 (秒単位)
allowCredentials ユーザーの資格情報がクロスサイト要求でサポートされているかどうか
exposedHeaders クロスサイト要求のために公開する HTTP 応答ヘッダー

API portal と統合する場合は、CORS が適切に構成されていることをご確認ください。 詳細について、「VMware Spring Cloud Gateway にパブリック エンドポイントを割り当てる」のセクションをご覧ください。

サービス のスケーリングを使用する

VMware Spring Cloud Gateway のリソースの割り当て (vCPU、メモリ、インスタンス数など) をカスタマイズできます。

高可用性のため、単一レプリカは推奨されません。

次の表では、既定のリソース使用量について説明します。

コンポーネント名 インスタンス数 インスタンスあたりの vCPU インスタンスあたりのメモリ
VMware Spring Cloud Gateway 2 1 コア 2 GiB
VMware Spring Cloud Gateway オペレーター 2 1 コア 2 GiB

ゲートウェイとアプリケーションの間で TLS を構成する

セキュリティを強化し、承認されていないユーザーによる傍受から機密情報を保護するために、VMware Spring Cloud Gateway とアプリケーションの間でトランスポート層セキュリティ (TLS) を有効にすることができます。

TLS を構成する前に、TLS 対応アプリケーションと TLS 証明書が必要です。 TLS 証明書を準備するには、信頼された証明機関 (CA) から証明書を生成します。 証明書は、サーバーの ID を検証し、セキュリティで保護された接続を確立します。

Azure Spring Apps で TLS 対応アプリケーションを実行したら、証明書を Azure Spring Apps にアップロードします。 詳細については、「Azure Spring Apps のアプリケーションで TLS/SSL 証明書を使用する」の「証明書のインポート」セクションをご覧ください。

証明書が Azure Spring Apps に更新された状態で、ゲートウェイの TLS 証明書を構成し、証明書の検証を有効にすることができます。 Azure portal で、または Azure CLI を使用して、証明書を構成できます。

次の手順に従って、Azure portal で証明書を構成します。

  1. Azure Spring Apps インスタンスで、ナビゲーション ペインの [Spring Cloud Gateway] を選択します。
  2. Spring Cloud Gateway ページで、[証明書管理] を選択します。
  3. [証明書の検証を有効にする] を選択します。
  4. [証明書] で TLS 証明書を選択します。
  5. [保存] を選択します。

構成の更新に数分かかる場合があります。 構成が完了すると、通知が届きます。

ルート構成を準備する

ルート構成では、プロトコルを HTTPS として指定する必要があります。 次の JSON オブジェクトは、ゲートウェイとアプリの間のすべてのトラフィックに HTTPS プロトコルを使用するように VMware Spring Cloud Gateway に指示します。

  1. 次の内容を含む test-tls-route.json という名前のファイルを作成します。

    {
        "routes": [
          {
            "title": "Test TLS app",
            "predicates": [
              "Path=/path/to/your/app",
              "Method=GET"
            ]
          }
         ],
        "uri": "https://<app-custom-domain-name>"
    }
    
  2. 次のコマンドを使用して、アプリケーションに規則を適用します。

    az spring gateway route-config create \
        --resource-group <resource-group-name> \
        --service <Azure-Spring-Apps-instance-name> \
        --name test-tls-app \
        --routes-file test-tls-route.json
    

これで、ゲートウェイのエンドポイントでアプリケーションが TLS が有効になっているかどうかをテストできるようになりました。 詳細については、「Spring Cloud Gateway を使用する」の「ルートを構成する」のセクションをご覧ください。

証明書のローテーション

証明書の有効期限が切れると、次の手順を使用して、VMware Spring Cloud Gateway の証明書をローテーションする必要があります。

  1. 信頼できる CA からの新しい証明書を生成します。
  2. 証明書を Azure Spring Apps にインポートします。 詳細については、「Azure Spring Apps のアプリケーションで TLS/SSL 証明書を使用する」の「証明書のインポート」セクションをご覧ください。
  3. Azure portal または Azure CLI を使用して証明書を同期します。

VMware Spring Cloud Gateway が再起動し、ゲートウェイがすべての接続に新しい証明書を使用するようにします。

証明書を同期するには、次の手順を使用します。

  1. Azure Spring Apps インスタンスで、ナビゲーション ペインの [Spring Cloud Gateway] を選択します。
  2. Spring Cloud Gateway ページで [再起動] を選択し、操作を確定します。

自動スケーリング設定を設定する

VMware Spring Cloud Gateway の自動スケーリング モードを設定できます。

次のリストは、自動スケーリングの需要管理に使用できるオプションを示しています。

  • [手動スケーリング] オプションを使用すると、固定インスタンス数を維持できます。 最大 10 個のインスタンスまでスケールアウトできます。 この値によって、Spring Cloud Gateway の個別の実行インスタンスの数が変わります。
  • [カスタム自動スケーリング] オプションを使用すると、任意のメトリックに基づき、任意のスケジュールでスケーリングできます。

Azure portal でスケーリング方法を選択します。 次のスクリーンショットは、[カスタム自動スケーリング] オプションとモード設定を示しています。

Azure portal の [自動スケーリング設定] ページのスクリーンショット。[カスタム自動スケーリング] オプションが強調表示されています。

利用できるメトリックの詳細については、「Azure Spring Apps のメトリック」の「ユーザー メトリックのオプション」セクションをご覧ください。

応答キャッシュを構成する

応答キャッシュ構成では、グローバルまたはルート レベルで適用できる HTTP 応答キャッシュを定義する方法が提供されます。

応答キャッシュをグローバルに有効にする

応答キャッシュをグローバルに有効にすると、該当するすべてのルートに対して応答キャッシュが自動的に有効になります。

応答キャッシュをグローバルに有効にするには、次の手順を実行します。

  1. Azure Spring Apps インスタンスで、ナビゲーション ペインの [Spring Cloud Gateway] を選択します。
  2. [Spring Cloud Gateway] ページで、[構成] を選びます。
  3. [応答キャッシュ] セクションで、[応答キャッシュを有効にする] を選び、[スコープ][インスタンス] に設定します。
  4. 応答キャッシュの [サイズ][Time to Live] を設定します。
  5. [保存] を選択します。

応答キャッシュを無効にするには、次の手順を実行します。

  1. Azure Spring Apps インスタンスで、ナビゲーション ペインの [Spring Cloud Gateway] を選択します。
  2. [Spring Cloud Gateway] ページで、[構成] を選びます。
  3. [応答キャッシュ] セクションで、[応答キャッシュを有効にする] をオフにします。
  4. [保存] を選択します。

ルート レベルで応答キャッシュを有効にする

任意のルートの応答キャッシュを有効にするには、LocalResponseCache フィルターを使用します。 次の例は、ルーティング規則の構成で LocalResponseCache フィルターを使用する方法を示しています。

{
   "filters": [
      "<other-app-level-filter-of-route>",
   ],
   "routes": [
      {
        "predicates": [
            "Path=/api/**",
            "Method=GET"
         ],
         "filters": [
            "<other-filter-of-route>",
            "LocalResponseCache=3m, 1MB"
         ],
      }
   ]
}

詳細については、「Azure Spring Apps Enterprise プランで VMware Spring Cloud Gateway ルート フィルターを使用する方法」の「LocalResponseCache」セクションと VMware ドキュメントの「LocalResponseCache」 を参照してください。

LocalResponseCache フィルターごとに sizetimeToLive を個別に構成する代わりに、Spring Cloud Gateway レベルでこれらのパラメータを設定できます。 このオプションを使用すると、最初にこれらの値を指定せずに、後でオーバーライドする柔軟性を維持したまま、LocalResponseCache フィルターを使用できるようになります。

ルート レベルで応答キャッシュを有効にし、sizetimeToLive を設定するには、次の手順を実行します。

  1. Azure Spring Apps インスタンスで、ナビゲーション ペインの [Spring Cloud Gateway] を選択します。
  2. [Spring Cloud Gateway] ページで、[構成] を選びます。
  3. [応答キャッシュ] セクションで、[応答キャッシュを有効にする] を選び、[スコープ][ルート] に設定します。
  4. 応答キャッシュの [サイズ][Time to Live] を設定します。
  5. [保存] を選択します。

ルート レベルで応答キャッシュを無効にし、sizetimeToLive をオフにするには、次の手順を実行します。

  1. Azure Spring Apps インスタンスで、ナビゲーション ペインの [Spring Cloud Gateway] を選択します。
  2. [Spring Cloud Gateway] ページで、[構成] を選びます。
  3. [応答キャッシュ] セクションで、[応答キャッシュを有効にする] をオフにします。
  4. [保存] を選択します。

次の例では、Spring Cloud Gateway レベルで sizetimeToLive が設定されている場合に LocalResponseCache フィルターを使用する方法を示します。

{
   "filters": [
      "<other-app-level-filter-of-route>",
   ],
   "routes": [
      {
        "predicates": [
            "Path=/api/path1/**",
            "Method=GET"
         ],
         "filters": [
            "<other-filter-of-route>",
            "LocalResponseCache"
         ],
      },
      {
        "predicates": [
            "Path=/api/path2/**",
            "Method=GET"
         ],
         "filters": [
            "<other-filter-of-route>",
            "LocalResponseCache=3m, 1MB"
         ],
      }
   ]
}

環境変数を構成する

Azure Spring Apps サービスは、VMware Spring Cloud Gateway を管理および調整します。 アプリケーション パフォーマンス監視 (APM) とログ レベルを構成するユース ケースを除き、通常は環境変数を使用して VMware Spring Cloud Gateway を構成する必要はありません。

この記事で説明する他の構成では満たすことができない要件がある場合は、「共通アプリケーション プロパティ」の一覧に示されている環境変数を構成してみることができます。 運用環境に適用する前に、必ずテスト環境で構成をご確認ください。

Azure portal で環境変数を構成するには、次の手順を使用します。

  1. Azure Spring Apps インスタンスで、ナビゲーション ペインの [Spring Cloud Gateway] を選択し、[構成] を選択します。
  2. [プロパティ] セクションと [シークレット] セクションで、環境変数のキーと値のペアを入力します。 機密情報を含む変数は、[シークレット] セクションに含めることができます。
  3. 保存を選択して、変更を保存します。

環境変数を更新すると、VMware Spring Cloud Gateway が再起動します。

APM を構成する

APM を構成して、VMware Spring Cloud Gateway を監視できます。 次の表に、VMware Spring Cloud Gateway で提供される 5 種類の APM Java エージェントと、必要な環境変数を示します。

Java エージェント 必要な環境変数
Application Insights APPLICATIONINSIGHTS_CONNECTION_STRING
Dynatrace DT_TENANT
DT_TENANTTOKEN
DT_CONNECTION_POINT
New Relic NEW_RELIC_LICENSE_KEY
NEW_RELIC_APP_NAME
AppDynamics APPDYNAMICS_AGENT_APPLICATION_NAME
APPDYNAMICS_AGENT_TIER_NAME
APPDYNAMICS_AGENT_NODE_NAME
APPDYNAMICS_AGENT_ACCOUNT_NAME
APPDYNAMICS_AGENT_ACCOUNT_ACCESS_KEY
APPDYNAMICS_CONTROLLER_HOST_NAME
APPDYNAMICS_CONTROLLER_SSL_ENABLED
APPDYNAMICS_CONTROLLER_PORT
エラスティック APM ELASTIC_APM_SERVICE_NAME
ELASTIC_APM_APPLICATION_PACKAGES
ELASTIC_APM_SERVER_URL

サポートされている他の環境変数については、次の資料をご覧ください。

VMware Spring Cloud Gateway で APM 監視を有効にするには、サービス インスタンス レベルで APM 構成を作成し、Spring Cloud Gateway にバインドします。 この方法では、APM を 1 回だけ便利に構成し、同じ APM を Spring Cloud Gateway とアプリにバインドできます。

Azure portal を使用して APM を設定するには、次の手順を使用します。

  1. APM の名前、型、およびプロパティを使用して、サービス インスタンス レベルで APM を構成します。 詳細については、「 APM 統合と CA 証明書 を構成する方法」の「サービス インスタンス レベルでの API の管理 (推奨)」セクションを参照してください。

    Azure Spring Apps APM エディター ページが表示されている Azure portal のスクリーンショット。

  2. ナビゲーション ウィンドウ Spring Cloud Gateway を選択し、APM を選択します。

  3. APM 参照名のリストで APM 名 選択します。 このリストには、ステップ 1 で構成したすべての APM 名が含まれています。

  4. [ 保存] を選択して、APM 参照名を Spring Cloud Gateway にバインドします。 ゲートウェイが再起動して、APM 監視が有効になります。

VMware Spring Cloud Gateway での APM の管理 (非推奨)

Azure portal または Azure CLI を使用して、VMware Spring Cloud Gateway の APM を設定できます。 使用する APM Java エージェントの種類と、それらがサポートする対応する APM 環境変数を指定することもできます。

Azure portal を使用して APM を設定するには、次の手順を使用します。

  1. Azure Spring Apps インスタンスで、ナビゲーション ペインの [Spring Cloud Gateway] を選択し、[構成] を選択します。
  2. ゲートウェイを監視するには、APM の一覧で APM の種類を選択します。
  3. [プロパティ] セクションと [シークレット] セクションで、APM 環境変数のキーと値のペアを入力します。 機密情報を含む変数は、[シークレット] に入力することができます。
  4. 保存を選択して、変更を保存します。

構成の更新に数分かかる場合があります。 構成が完了すると、通知が届きます。

Note

Azure Spring Apps は、VMware Spring Cloud Gateway と Azure Spring Apps の間のエージェントの互換性を維持するために、APM エージェントとデプロイされたアプリを同じ間隔でアップグレードします。

Azure Spring Apps では、既定で APM Java エージェントのログを STDOUT に出力します。 これらのログは、VMware Spring Cloud Gateway ログに含まれています。 ログで使用されている APM エージェントのバージョンを確認できます。 Log Analytics でこれらのログに対してクエリを実行して、トラブルシューティングを行うことができます。

APM エージェントを正常に動作させるには、VMware Spring Cloud Gateway の CPU とメモリを増やします。

ログ レベルを構成する

VMware Spring Cloud Gateway のログ レベルを次の方法で構成することで、詳細を取得したり、ログを減らしたりできます。

  • ログ レベルは、TRACEDEBUGINFOWARNERROR、または OFF に設定できます。 VMware Spring Cloud Gateway の既定のログ レベルは INFO です。
  • ログ レベルを OFF に設定すると、ログをオフにできます。
  • ログ レベルが WARNERROR、または OFF に設定されている場合は、Azure Spring Apps チームにサポートを要求するときに、INFO に調整する必要がある場合があります。 この変更により、VMware Spring Cloud Gateway が再起動されます。
  • ログ レベルが TRACE または DEBUG に設定されている場合、VMware Spring Cloud Gateway のパフォーマンスに影響する可能性があります。 運用環境では、これらの設定を避けてください。
  • root ロガーまたは io.pivotal.spring.cloud.gateway などの特定のロガーのログ レベルを設定できます。

次のロガーには、TRACE レベルと DEBUG レベルの重要なトラブルシューティング情報が含まれている場合があります。

ロガー 説明
io.pivotal.spring.cloud.gateway カスタム拡張機能を含むフィルターと述語
org.springframework.cloud.gateway API ゲートウェイ
org.springframework.http.server.reactive HTTP サーバーの操作
org.springframework.web.reactive API ゲートウェイのリアクティブ フロー
org.springframework.boot.autoconfigure.web API ゲートウェイの自動構成
org.springframework.security.web 認証と承認の情報
reactor.netty Reactor Netty

環境変数キーを取得するには、logging.level. プレフィックスを追加し、環境 logging.level.{loggerName}={logLevel} を構成してログ レベルを設定します。 次の例は、Azure portal と Azure CLI の手順を示しています。

Azure portal でログ レベルを構成するには、次の手順を使用します。

  1. Azure Spring Apps インスタンスで、ナビゲーション ペインの [Spring Cloud Gateway] を選択し、[構成] を選択します。
  2. [プロパティ] セクションと [シークレット] セクションで、ログ レベルの環境変数のキーと値のペアを入力します。 ログ レベルが機密情報である場合は、[シークレット] セクションを使用してログ レベルを含めることができます。
  3. [保存] を選択して変更を保存します。

ログ レベルを構成するための Spring Cloud Gateway 環境変数を示す Azure portal のスクリーンショット。

アドオンの構成を更新する

アドオンの構成機能を使用すると、JSON 形式の文字列を使用して、VMware Spring Cloud Gateway の特定のプロパティをカスタマイズできます。 この機能は、REST API を介して公開されないプロパティを構成する必要がある場合に便利です。

アドオンの構成は、目的の構成を表すキーと値のペアを持つ JSON オブジェクトです。 次の例は、JSON 形式の構造を示しています。

{
    "<addon-key-name>": {
        "<addon-key-name>": "<addon-value>"
        ...
    },
    "<addon-key-name>": "<addon-value>",
    ...
}

次の一覧は、アドオンのキー名と値の種類でサポートされているアドオンの構成を示しています。 この一覧は、VMware Spring Cloud Gateway のバージョンをアップグレードする場合に変更される可能性があります。

  • SSO 構成:

    • キー名: sso

    • 値の型: object

    • プロパティ​​:

      • RolesAttributeName (文字列): SSO セッションに関連付けられているロールを含む属性の名前を指定します。
      • InactiveSessionExpirationInMinutes (整数): 非アクティブな SSO セッションの有効期限を分単位で指定します。 0 の値は、セッションの有効期限が切れないことを意味します。
    • 例:

      {
          "sso": {
              "rolesAttributeName": "roles",
              "inactiveSessionExpirationInMinutes": 1
          }
      }
      
  • メタデータの構成:

    • キー名: api

    • 値の型: object

    • プロパティ

      • groupId (文字列): VMware Spring Cloud Gateway インスタンスで使用できる API のグループの一意識別子。 値に使用できるのは、小文字と数字だけです。
    • 例:

      {
          "api": {
              "groupId": "id1"
          }
      }
      
  • ポッドの構成

    • キー名: PodOverrides。既定のポッド構成のオーバーライドを指定するために使用されます。

    • 値の型: object

    • プロパティ

      • Containers: この配列には、ポッド内の個々のコンテナーの構成が含まれます。 現在、gateway という名前のコンテナーのみがサポートされています。
        • Name: コンテナーの名前を指定します。 コンテナーには gateway という名前を付ける必要があります。
        • Lifecycle: PreStop は、コンテナーが終了しようとしているときに実行されるライフサイクル フックです。 このフックを使用すると、コンテナーが停止する前に、必要なクリーンアップを実行できます。
      • TerminationGracePeriodSeconds: Kubernetes が、ポッドが正常に終了するのを待つ時間を指定します。この時間が経過した後、ポッドは強制終了されます。
    • 例:

      {
          "PodOverrides": {
              "Containers": [
                  {
                      "Name": "gateway",
                      "Lifecycle": {
                          "PreStop": {
                              "Exec": {
                                  "Command": [
                                      "/bin/sh",
                                      "-c",
                                      "sleep 20"
                                  ]
                              }
                          }
                      }
                  }
              ],
              "TerminationGracePeriodSeconds": 120
          }
      }
      

      このコンテナーを含むポッドが終了すると、PreStop フックによってコマンド /bin/sh -c 'sleep 20' が実行され、コンテナーは 20 秒間スリープ状態になります。 この一時停止によって提供される時間で、コンテナーは、実際に停止する前に、進行中のタスクまたはクリーンアップを完了することができます。

      TerminationGracePeriodSeconds 設定では、ポッドが正常に終了するための時間として、PreStop などのライフサイクル フックにかかる時間を含め、合計 120 秒が提供されます。

アドオンの構成を更新するには、次の手順を実行します。

  1. Azure Spring Apps インスタンスで、ナビゲーション ペインの [Spring Cloud Gateway] を選択し、[構成] を選択します。
  2. [アドオンの構成] の JSON 値を指定します。
  3. [保存] を選択します。

次のステップ