Azure Spring Apps でイングレス構成をカスタマイズする
Note
Basic、Standard、Enterprise プランは、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/Standard ✅ Enterprise
この記事では、Azure portal と Azure CLI を使用して、Azure Spring Apps でアプリケーションのイングレス構成を設定および更新する方法について説明します。
Azure Spring Apps サービスは、基になるイングレス コントローラーを使用してアプリケーション トラフィック管理を処理します。 カスタマイズでは、次のイングレス設定がサポートされています。
Name | イングレス設定 | 規定値 | 有効な範囲 | 説明 |
---|---|---|---|---|
ingress-read-timeout |
proxy-read-timeout |
300 | [1,1800] | プロキシ処理されたサーバーからの応答読み取りのタイムアウト (秒)。 |
ingress-send-timeout |
proxy-send-timeout |
60 | [1,1800] | プロキシされたサーバーに要求を送信するためのタイムアウト (秒単位)。 |
session-affinity |
affinity |
なし | Session 、None |
前の要求に応答していたのと同じポッド レプリカに要求を送信するアフィニティの種類。 セッション アフィニティを有効にするには、session-affinity を Cookie に設定 します。 ポータルでのみ、[セッション アフィニティを有効にする] ボックスを選択する必要があります。 |
session-max-age |
session-cookie-max-age |
0 | [0, 604800] | Max-Age Cookie ディレクティブに対応する Cookie の有効期限が切れるまでの時間 (秒)。 session-max-age を 0 に設定した場合、有効期限はブラウザー セッション期間と同じです。 |
backend-protocol |
backend-protocol |
既定値 | 既定値、GRPC |
バックエンド プロトコルを設定し、NGINX がバックエンド サービスと通信する方法を指定します。 デフォルトは HTTP/HTTPS/WebSocket を意味します。 backend-protocol の設定は、クライアントからアプリへのトラフィックにのみ適用されます。 同じサービス インスタンス内のアプリ間トラフィックの場合は、backend-protocol の設定を変更せずに、アプリ間トラフィックの任意のプロトコルを選択します。 このプロトコルでは、同じサービス インスタンス内のアプリ間トラフィックに対するプロトコルの選択は制限されません。 |
client-auth |
client-auth |
0 件選択済み | - | TLS/SSL 設定でアップロードした公開キーを含む証明書を選択します。 イングレスはこれらの証明書を 1 つに連結し、クライアント認証に使用します。 |
前提条件
Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
Azure Spring Apps 拡張機能を使用した Azure CLI。 次のコマンドを使用して、以前のバージョンを削除し、最新の拡張機能をインストールします。 以前に spring-cloud 拡張機能をインストールした場合は、構成とバージョンの不一致を回避するために、それをアンインストールしてください。
az extension remove --name spring az extension add --name spring az extension remove --name spring-cloud
イングレスの構成をセットする
次の Azure CLI コマンドを使用して、作成時にイングレス構成を設定します。
az spring app create \
--resource-group <resource-group-name> \
--service <service-name> \
--name <app-name> \
--ingress-read-timeout 300 \
--ingress-send-timeout 60 \
--session-affinity Cookie \
--session-max-age 1800 \
--backend-protocol Default \
--client-auth-certs <cert-id>
Note
cert-id
値の形式は /subscriptions/<your-sub-id>/resourceGroups/<resource-group-name>/providers/Microsoft.AppPlatform/Spring/<service-name>/certificates/<cert-name>
です。 cert-id
値を取得するには、コマンド az spring certificate show --service <service-instance-name> --resource-group <resource-group-name> --name <certificate-name> --query id
を使用します
このコマンドは、次の設定でアプリを作成します。
- イングレス読み取りタイムアウト: 300 秒
- イングレス送信タイムアウト: 60 秒
- セッション アフィニティ: Cookie
- セッション Cookie の最大有効期間: 1800 秒
- バックエンド プロトコル: デフォルト
- クライアント認証: cert-name
既存アプリのイングレス設定を更新する
既存のサービス インスタンスによってホストされているアプリケーションのイングレス設定を更新するには、次の手順に従います。
よく寄せられる質問
gRPC を可能にするにはどうすればよいでしょうか?
バックエンド プロトコルを GRPC に設定します。
WebSocket を可能にするにはどうすればよいでしょうか?
バックエンド プロトコルを Default に設定した場合、WebSocket は既定で有効になります。 WebSocket 接続の制限は 20000 です。 この制限に達すると、接続は失敗します。
WebSocket に基づいて RSocket を使用することもできます。
イングレス構成とイングレス設定の違いは何ですか?
イングレス構成は引き続き Azure CLI と SDK で使用でき、その設定はサービス インスタンス内のすべてのアプリに適用されます。 イングレス設定でアプリを構成した後は、イングレス構成で影響を与えることはできなくなります。 今後サポートを停止する予定であるため、新しいスクリプトではイングレス構成を使用しないことをお勧めします。
イングレス設定を App Gateway/APIM と共に使用する場合、Azure Spring Apps イングレスと App Gateway/APIM の両方でタイムアウトを設定するとどうなりますか?
短い方のタイムアウトが使用されます。
gRPC または WebSocket をエンド ツー エンドでサポートする必要がある場合は、App Gateway/APIM で追加の構成が必要ですか?
App Gateway で gRPC がサポートされている限り、追加の構成は必要ありません。
構成可能なポートはサポートされていますか?
構成可能なポートは現在サポートされていません (80/443)。