MSE Ingress ゲートウェイは NGINX Ingress ゲートウェイのコアおよび共通アノテーションをサポートしており、移行が容易です。また、高度なトラフィック管理のために 40 の追加アノテーションも提供しています。
標準の Kubernetes Ingress リソースは、Transport Layer Security (TLS) 暗号化と基本的なレイヤー 7 HTTP ルーティングのみを処理します。NGINX Ingress コントローラーだけで、実際のトラフィック管理とセキュリティ要件に対応するために 100 以上のカスタムアノテーションが定義されています。MSE Ingress ゲートウェイは、最も一般的な NGINX Ingress アノテーションと互換性があるため、既存のワークロードは Ingress 構成を書き換えることなく移行できます。
概要
次の表は、アノテーションのカバー率の概要です。
NGINX Ingress アノテーションのカバー率
| カテゴリ | 数 | 注意 |
|---|---|---|
| サポート対象 | 51 | ユースケースの 90% をカバー |
| 設定不要 | 15 | 明示的な設定なしで機能を利用可能 |
| 計画中 | 48 | 少数のユースケースに適用 |
| サポート対象外 | 5 | NGINX 固有のコードスニペットに関連 |
MSE は NGINX とは異なる方法で機能を実装しています。NGINX Ingress アノテーションやコードスニペットで使用される NGINX 変数は、NGINX の対応するものと互換性がありません。
large リクエストボディ: nginx.ingress.kubernetes.io/proxy-body-size アノテーションは、NGINX のリクエストボディの最大サイズを設定し、それを超えるリクエストを拒否します。 MSE では代わりにチャンク転送エンコーディングを使用し、large な本文をサイズ制限なく自動的に処理します。 アップストリーム接続のバッファー制限を設定するには、MSE ゲートウェイの [パラメーター設定] ペインで [DownstreamConnectionBufferLimits] パラメーターを設定します。
リダイレクトと NGINX 変数: リダイレクトアノテーション内の NGINX 変数 (例:$host や $request_uri) は、一部の NGINX Ingress バージョンで動作する場合がありますが、公式にはドキュメント化されていません。NGINX Ingress でのリダイレクトに NGINX 変数を使用することは避けてください。これらは MSE と互換性がありません。
MSE 専用アノテーション
| カテゴリ | 数 | 注意 |
|---|---|---|
| 拡張アノテーション | 40 | NGINX Ingress を超えるトラフィックガバナンスとセキュリティ保護機能を追加 |
アノテーションのスコープ
各アノテーションは、次の 3 つのスコープのいずれかに適用されます。
-
Ingress — Ingress リソースで定義されたルーティングルールに適用されます。
-
ドメイン — Ingress リソースで定義されたホスト名に適用され、他の Ingress リソースの同じホスト名にも効果があります。
-
サービス — Ingress リソースによって参照されるバックエンドサービスに適用され、他の Ingress リソースによって参照される同じサービスにも効果があります。
アノテーションのプレフィックス
MSE 互換のアノテーションは、nginx または mse のプレフィックスのいずれかを受け入れます。例えば、nginx.ingress.kubernetes.io/ssl-redirect と mse.ingress.kubernetes.io/ssl-redirect は同等です。
MSE 専用のアノテーションは mse プレフィックスのみを使用します。これらのアノテーションで mse を nginx に置き換えても効果はありません。
クイックリファレンスインデックス
次の表は、サポートされているすべてのアノテーションとその互換性ステータスおよびカテゴリを一覧表示しています。この表を使用して、以下の詳細を読む前に特定のアノテーションがサポートされているかどうかをすばやく確認してください。
| アノテーション | ステータス | カテゴリ |
|---|---|---|
nginx.ingress.kubernetes.io/canary |
互換性あり | カナリアリリース |
nginx.ingress.kubernetes.io/canary-by-header |
互換 | カナリアリリース |
nginx.ingress.kubernetes.io/canary-by-header-value |
対応 | カナリアリリース |
nginx.ingress.kubernetes.io/canary-by-header-pattern |
互換 | カナリアリリース |
mse.ingress.kubernetes.io/canary-by-query |
MSE 専用 | カナリアリリース |
mse.ingress.kubernetes.io/canary-by-query-value |
MSE 専用 | カナリアリリース |
mse.ingress.kubernetes.io/canary-by-query-pattern |
MSE 専用 | カナリアリリース |
nginx.ingress.kubernetes.io/canary-by-cookie |
互換 | カナリアリリース |
mse.ingress.kubernetes.io/canary-by-cookie-value |
MSE 専用 (V1.2.30 以降) | カナリアリリース |
nginx.ingress.kubernetes.io/canary-weight |
対応 | カナリアリリース |
nginx.ingress.kubernetes.io/canary-weight-total |
対応 | カナリアリリース |
mse.ingress.kubernetes.io/destination |
MSE 専用 | マルチサービスルーティング |
mse.ingress.kubernetes.io/service-subset |
MSE 専用 (V1.2.25 以降) | サービスサブセット |
mse.ingress.kubernetes.io/subset-labels |
MSE 専用 (V1.2.25 以降) | サービスサブセット |
nginx.ingress.kubernetes.io/default-backend |
互換 | フォールバックサービス |
nginx.ingress.kubernetes.io/custom-http-errors |
対応 | フォールバックサービス |
nginx.ingress.kubernetes.io/use-regex |
対応 | 正規表現パス照合 |
nginx.ingress.kubernetes.io/rewrite-target |
互換性あり | パス書き換え |
nginx.ingress.kubernetes.io/upstream-vhost |
互換 | パス書き換え |
nginx.ingress.kubernetes.io/ssl-redirect |
互換 | リダイレクト |
nginx.ingress.kubernetes.io/force-ssl-redirect |
互換性あり | リダイレクト |
nginx.ingress.kubernetes.io/permanent-redirect |
互換 | リダイレクト |
nginx.ingress.kubernetes.io/permanent-redirect-code |
対応 | リダイレクト |
nginx.ingress.kubernetes.io/temporal-redirect |
対応 | リダイレクト |
nginx.ingress.kubernetes.io/app-root |
互換 | リダイレクト |
nginx.ingress.kubernetes.io/enable-cors |
対応 | CORS |
nginx.ingress.kubernetes.io/cors-allow-origin |
対応 | CORS |
nginx.ingress.kubernetes.io/cors-allow-methods |
対応 | CORS |
nginx.ingress.kubernetes.io/cors-allow-headers |
対応 | CORS |
nginx.ingress.kubernetes.io/cors-expose-headers |
互換性あり | CORS |
nginx.ingress.kubernetes.io/cors-allow-credentials |
対応 | CORS |
nginx.ingress.kubernetes.io/cors-max-age |
対応 | CORS |
mse.ingress.kubernetes.io/request-header-control-add |
MSE 専用 | ヘッダー制御 |
mse.ingress.kubernetes.io/request-header-control-update |
MSE 専用 | ヘッダー制御 |
mse.ingress.kubernetes.io/request-header-control-remove |
MSE 専用 | ヘッダー制御 |
mse.ingress.kubernetes.io/response-header-control-add |
MSE 専用 | ヘッダー制御 |
mse.ingress.kubernetes.io/response-header-control-update |
MSE 専用 | ヘッダー制御 |
mse.ingress.kubernetes.io/response-header-control-remove |
MSE 専用 | ヘッダー制御 |
mse.ingress.kubernetes.io/timeout |
MSE 専用 | タイムアウト |
nginx.ingress.kubernetes.io/proxy-next-upstream-tries |
対応 | リトライ |
nginx.ingress.kubernetes.io/proxy-next-upstream-timeout |
対応 | リトライ |
nginx.ingress.kubernetes.io/proxy-next-upstream |
対応 | リトライ |
mse.ingress.kubernetes.io/mirror-target-service |
MSE 専用 | トラフィックミラーリング |
mse.ingress.kubernetes.io/mirror-percentage |
MSE 専用 (V1.2.32 以降) | トラフィックミラーリング |
nginx.ingress.kubernetes.io/server-alias |
部分的に互換 (V1.2.30 以降) | ドメインエイリアス |
mse.ingress.kubernetes.io/route-limit-rpm |
MSE 専用 | レート制限 (単一ゲートウェイ、非推奨予定) |
mse.ingress.kubernetes.io/route-limit-rps |
MSE 専用 | レート制限 (単一ゲートウェイ、非推奨予定) |
mse.ingress.kubernetes.io/route-limit-burst-multiplier |
MSE 専用 | レート制限 (単一ゲートウェイ、非推奨予定) |
mse.ingress.kubernetes.io/rate-limit |
MSE 専用 (V1.2.25 以降) | レート制限 (グローバル) |
mse.ingress.kubernetes.io/rate-limit-fallback-custom-response-code |
MSE 専用 (V1.2.25 以降) | レート制限 (グローバル) |
mse.ingress.kubernetes.io/rate-limit-fallback-custom-response-body-type |
MSE 専用 (V1.2.25 以降) | レート制限 (グローバル) |
mse.ingress.kubernetes.io/rate-limit-fallback-custom-response-body |
MSE 専用 (V1.2.25 以降) | レート制限 (グローバル) |
mse.ingress.kubernetes.io/rate-limit-fallback-redirect-url |
MSE 専用 (V1.2.25 以降) | レート制限 (グローバル) |
mse.ingress.kubernetes.io/concurrency-limit |
MSE 専用 (V1.2.25 以降) | 同時実行制御 |
mse.ingress.kubernetes.io/concurrency-limit-fallback-custom-response-code |
MSE 専用 (V1.2.25 以降) | 同時実行制御 |
mse.ingress.kubernetes.io/concurrency-limit-fallback-custom-response-body-type |
MSE 専用 (V1.2.25 以降) | 同時実行制御 |
mse.ingress.kubernetes.io/concurrency-limit-fallback-custom-response-body |
MSE 専用 (V1.2.25 以降) | 同時実行制御 |
mse.ingress.kubernetes.io/concurrency-limit-fallback-redirect-url |
MSE 専用 (V1.2.25 以降) | 同時実行制御 |
nginx.ingress.kubernetes.io/backend-protocol |
部分的に互換 | バックエンドプロトコル |
nginx.ingress.kubernetes.io/load-balance |
部分的に互換 | 負荷分散 |
nginx.ingress.kubernetes.io/upstream-hash-by |
部分的に互換 | 負荷分散 |
mse.ingress.kubernetes.io/warmup |
MSE 専用 | サービスウォームアップ |
nginx.ingress.kubernetes.io/affinity |
互換 | Cookie アフィニティ |
nginx.ingress.kubernetes.io/affinity-mode |
部分的に互換 | Cookie アフィニティ |
nginx.ingress.kubernetes.io/session-cookie-name |
対応 | Cookie アフィニティ |
nginx.ingress.kubernetes.io/session-cookie-path |
対応 | Cookie アフィニティ |
nginx.ingress.kubernetes.io/session-cookie-max-age |
対応 | Cookie アフィニティ |
nginx.ingress.kubernetes.io/session-cookie-expires |
対応 | Cookie アフィニティ |
nginx.ingress.kubernetes.io/whitelist-source-range |
対応 | IP アクセス制御 |
nginx.ingress.kubernetes.io/denylist-source-range |
互換 (V1.2.31 以降) | IP アクセス制御 |
mse.ingress.kubernetes.io/blacklist-source-range |
MSE 専用 | IP アクセス制御 |
mse.ingress.kubernetes.io/domain-whitelist-source-range |
MSE 専用 | IP アクセス制御 |
mse.ingress.kubernetes.io/domain-blacklist-source-range |
MSE 専用 | IP アクセス制御 |
mse.ingress.kubernetes.io/connection-policy-tcp-max-connection |
MSE 専用 | 接続プール |
mse.ingress.kubernetes.io/connection-policy-tcp-max-connection-per-endpoint |
MSE 専用 | 接続プール |
mse.ingress.kubernetes.io/connection-policy-http-max-request-per-connection |
MSE 専用 | 接続プール |
mse.ingress.kubernetes.io/tls-min-protocol-version |
MSE 専用 | TLS (クライアントからゲートウェイ) |
mse.ingress.kubernetes.io/tls-max-protocol-version |
MSE 専用 | TLS (クライアントからゲートウェイ) |
nginx.ingress.kubernetes.io/ssl-cipher |
対応 | TLS (クライアントからゲートウェイ) |
mse.ingress.kubernetes.io/auth-tls-secret |
部分的に互換 | TLS (クライアントからゲートウェイ) |
nginx.ingress.kubernetes.io/proxy-ssl-secret |
対応 | TLS (ゲートウェイからバックエンド) |
nginx.ingress.kubernetes.io/proxy-ssl-name |
対応 | TLS (ゲートウェイからバックエンド) |
nginx.ingress.kubernetes.io/proxy-ssl-server-name |
対応 | TLS (ゲートウェイからバックエンド) |
nginx.ingress.kubernetes.io/auth-type |
部分的に互換 | 認証 |
nginx.ingress.kubernetes.io/auth-secret |
互換 | 認証 |
nginx.ingress.kubernetes.io/auth-secret-type |
互換 | 認証 |
nginx.ingress.kubernetes.io/auth-realm |
互換 | 認証 |
サポートされるアノテーション
トラフィックガバナンス
カナリアリリース
| アノテーション | スコープ | サポートステータス | 説明 |
|---|---|---|---|
nginx.ingress.kubernetes.io/canary |
Ingress | 対応 | Ingress のカナリアリリースを有効にします。 |
nginx.ingress.kubernetes.io/canary-by-header |
Ingress | 互換 | リクエストヘッダーキーによってトラフィックを分割します。 |
nginx.ingress.kubernetes.io/canary-by-header-value |
Ingress | 互換 | リクエストヘッダー値によってトラフィックを分割します。完全一致をサポートします。 |
nginx.ingress.kubernetes.io/canary-by-header-pattern |
Ingress | 対応 | リクエストヘッダー値によってトラフィックを分割します。正規表現マッチングをサポートします。 |
mse.ingress.kubernetes.io/canary-by-query |
Ingress | MSE 専用 | URL クエリパラメーターキーによってトラフィックを分割します。 |
mse.ingress.kubernetes.io/canary-by-query-value |
Ingress | MSE 専用 | URL クエリパラメーター値によってトラフィックを分割します。完全一致をサポートします。 |
mse.ingress.kubernetes.io/canary-by-query-pattern |
Ingress | MSE 専用 | URL クエリパラメーター値によってトラフィックを分割します。正規表現マッチングをサポートします。 |
nginx.ingress.kubernetes.io/canary-by-cookie |
Ingress | 互換 | Cookie キーによってトラフィックを分割します。 |
mse.ingress.kubernetes.io/canary-by-cookie-value |
Ingress | MSE 専用 (ゲートウェイ V1.2.30 以降が必要) | Cookie 値によってトラフィックを分割します。完全一致をサポートします。 |
nginx.ingress.kubernetes.io/canary-weight |
Ingress | 互換 | カナリアサービスのトラフィックの重みを設定します。 |
nginx.ingress.kubernetes.io/canary-weight-total |
Ingress | 互換 | トラフィック分割計算に使用される合計の重みを設定します。 |
マルチサービスルーティング
| アノテーション | スコープ | サポートステータス | 説明 |
|---|---|---|---|
mse.ingress.kubernetes.io/destination |
Ingress | MSE 専用 | 重みに基づいて複数のサービスにトラフィックを分散します。 |
構文: {weight}% {serviceName}.{serviceNamespace}.svc.cluster.local:{port}
このアノテーションを設定すると、Ingress 上のすべてのルーティングルールの送信先サービスがオーバーライドされます。構文が無効な場合、アノテーションは無視され、元のルーティングルールが有効なままになります。
例:
annotations:
# トラフィックの 60% を foo に、40% を bar にルーティング
mse.ingress.kubernetes.io/destination: |
60% foo.default.svc.cluster.local:8080
40% bar.default.svc.cluster.local:9090
サービスサブセット
サービスサブセットは、単一の Kubernetes Service が複数のデプロイメント (例えば、安定版とカナリア版) を管理する場合に使用します。サブセットは、特定の Pod グループにリクエストを転送します。
| アノテーション | スコープ | サポートステータス | 説明 |
|---|---|---|---|
mse.ingress.kubernetes.io/service-subset |
Ingress | MSE 専用 (ゲートウェイ V1.2.25 以降が必要) | リクエストをターゲットサービスの Pod サブセットにルーティングします。mse.ingress.kubernetes.io/subset-labels が設定されていない場合、ルーティングの動作はこのアノテーションの値に依存します。"" または base に設定すると、opensergo.io/canary: "" の Pod または opensergo.io/canary ラベルプレフィックスのない Pod をターゲットにします。他の値 (例えば、gray) に設定すると、ラベル opensergo.io/canary-gray: gray を持つ Pod をターゲットにします。mse.ingress.kubernetes.io/subset-labels が設定されている場合、リクエストはそこで定義されたキーと値のペアに一致するラベルを持つ Pod にのみ転送されます。ラベルに一致する Pod がない場合、リクエストはサービスのすべての Pod にフォールバックします。 |
mse.ingress.kubernetes.io/subset-labels |
Ingress | MSE 専用 (ゲートウェイ V1.2.25 以降が必要) | オプション。mse.ingress.kubernetes.io/service-subset と一緒に使用して、Pod サブセットを定義するラベルを指定します。 |
フォールバックサービス
| アノテーション | スコープ | サポートステータス | 説明 |
|---|---|---|---|
nginx.ingress.kubernetes.io/default-backend |
Ingress | 対応 | フォールバックサービスを指定します。Ingress ルールで定義されたサービスに利用可能なノードがない場合、リクエストはこのサービスに転送されます。 |
nginx.ingress.kubernetes.io/custom-http-errors |
Ingress | 互換 | nginx.ingress.kubernetes.io/default-backend と連携します。バックエンドが指定された HTTP ステータスコードのいずれかを返した場合、リクエストはパスが / に書き換えられてフォールバックサービスに転送されます。 |
正規表現パス照合
| アノテーション | スコープ | サポートステータス | 説明 |
|---|---|---|---|
nginx.ingress.kubernetes.io/use-regex |
Ingress | 対応 | Ingress ルールで定義されたパスの正規表現マッチングを有効にします。RE2 構文を使用します。 |
パス書き換え
| アノテーション | スコープ | サポートステータス | 説明 |
|---|---|---|---|
nginx.ingress.kubernetes.io/rewrite-target |
Ingress | 対応 | バックエンドに転送する前にリクエストパスを書き換えます。キャプチャグループをサポートします。 |
nginx.ingress.kubernetes.io/upstream-vhost |
Ingress | 互換 | バックエンドにリクエストを転送する際に、Host ヘッダーを指定された値に書き換えます。 |
リダイレクト
| アノテーション | スコープ | サポートステータス | 説明 |
|---|---|---|---|
nginx.ingress.kubernetes.io/ssl-redirect |
Ingress | 対応 | HTTP リクエストを HTTPS にリダイレクトします。 |
nginx.ingress.kubernetes.io/force-ssl-redirect |
Ingress | 対応 | HTTP リクエストを強制的に HTTPS にリダイレクトします。 |
nginx.ingress.kubernetes.io/permanent-redirect |
Ingress | 対応 | リクエストを指定された URL に恒久的なリダイレクトでリダイレクトします。 |
nginx.ingress.kubernetes.io/permanent-redirect-code |
Ingress | 互換 | 恒久的なリダイレクトの HTTP ステータスコードを設定します。 |
nginx.ingress.kubernetes.io/temporal-redirect |
Ingress | 対応 | リクエストを指定された URL に一時的なリダイレクトでリダイレクトします。 |
nginx.ingress.kubernetes.io/app-root |
Ingress | 対応 | / からのリクエストを指定されたアプリケーションルートパスにリダイレクトします。 |
オリジン間リソース共有 (CORS)
| アノテーション | スコープ | サポートステータス | 説明 |
|---|---|---|---|
nginx.ingress.kubernetes.io/enable-cors |
Ingress | 対応 | オリジン間リソース共有 (CORS) を有効にします。 |
nginx.ingress.kubernetes.io/cors-allow-origin |
Ingress | 対応 | CORS リクエストで許可されるオリジンを設定します。 |
nginx.ingress.kubernetes.io/cors-allow-methods |
Ingress | 互換性あり | CORS リクエストで許可される HTTP メソッド (GET、POST、PUT など) を設定します。 |
nginx.ingress.kubernetes.io/cors-allow-headers |
Ingress | 対応 | CORS リクエストで許可されるリクエストヘッダーを設定します。 |
nginx.ingress.kubernetes.io/cors-expose-headers |
Ingress | 互換 | CORS レスポンスでブラウザに公開されるレスポンスヘッダーを設定します。 |
nginx.ingress.kubernetes.io/cors-allow-credentials |
Ingress | 互換 | CORS リクエストに認証情報を含めることができるかどうかを指定します。 |
nginx.ingress.kubernetes.io/cors-max-age |
Ingress | 互換 | プリフライトリクエストの結果がキャッシュされる期間を設定します。 |
ヘッダー制御
ベースルートとカナリアルートのヘッダー制御アノテーションは独立しており、個別に検証されます。必要に応じて、ベースルートトラフィックとカナリアルートトラフィックに異なるヘッダーポリシーを設定してください。
| アノテーション | スコープ | サポートステータス | 説明 |
|---|---|---|---|
mse.ingress.kubernetes.io/request-header-control-add |
Ingress | MSE 専用 | バックエンドに転送する前にリクエストにヘッダーを追加します。ヘッダーが既に存在する場合、新しい値が元の値に追加されます。単一のヘッダーには、キーと値のペアを使用します。複数のヘッダーには、YAML リテラルブロック (|) を使用し、1 行に 1 つのキーと値のペアを記述します。 |
mse.ingress.kubernetes.io/request-header-control-update |
Ingress | MSE 専用 | バックエンドに転送する前にリクエストのヘッダーを変更します。ヘッダーが存在する場合、新しい値が元の値を上書きします。request-header-control-add と同じ構文です。 |
mse.ingress.kubernetes.io/request-header-control-remove |
Ingress | MSE 専用 | バックエンドに転送する前にリクエストからヘッダーを削除します。単一のヘッダーには、キーを指定します。複数のヘッダーには、キーをカンマで区切ります。 |
mse.ingress.kubernetes.io/response-header-control-add |
Ingress | MSE 専用 | クライアントに転送する前にレスポンスにヘッダーを追加します。ヘッダーが既に存在する場合、新しい値が元の値に追加されます。request-header-control-add と同じ構文です。 |
mse.ingress.kubernetes.io/response-header-control-update |
Ingress | MSE 専用 | クライアントに転送する前にレスポンスのヘッダーを変更します。ヘッダーが存在する場合、新しい値が元の値を上書きします。request-header-control-add と同じ構文です。 |
mse.ingress.kubernetes.io/response-header-control-remove |
Ingress | MSE 専用 | クライアントに転送する前にレスポンスからヘッダーを削除します。単一のヘッダーには、キーを指定します。複数のヘッダーには、キーをカンマで区切ります。 |
タイムアウト
| アノテーション | スコープ | サポートステータス | 説明 |
|---|---|---|---|
mse.ingress.kubernetes.io/timeout |
Ingress | MSE 専用 | リクエストタイムアウトを秒単位で設定します。デフォルトではタイムアウトは適用されません。TCP トランスポート層ではなく、アプリケーション層で適用されます。 |
リトライ
| アノテーション | スコープ | サポートステータス | 説明 |
|---|---|---|---|
nginx.ingress.kubernetes.io/proxy-next-upstream-tries |
Ingress | 互換性あり | 最大リトライ試行回数を設定します。デフォルト:3。 |
nginx.ingress.kubernetes.io/proxy-next-upstream-timeout |
Ingress | 対応 | リトライ試行のタイムアウトを秒単位で設定します。デフォルトではタイムアウトは適用されません。 |
nginx.ingress.kubernetes.io/proxy-next-upstream |
Ingress | 対応 | リトライをトリガーする条件を設定します。サポートされている値については、「NGINX リトライメカニズム」をご参照ください。 |
トラフィックミラーリング
| アノテーション | スコープ | サポートステータス | 説明 |
|---|---|---|---|
mse.ingress.kubernetes.io/mirror-target-service |
Ingress | MSE 専用 | 受信トラフィックのコピーを指定されたサービスに転送します。フォーマット:namespace/name:port。namespace はデフォルトで Ingress ゲートウェイの名前空間になります。port はデフォルトでサービスの最初のポートになります。 |
mse.ingress.kubernetes.io/mirror-percentage |
Ingress | MSE 専用 (ゲートウェイ V1.2.32 以降が必要) | ミラーリングするトラフィックの割合を設定します。有効な値:0~100。デフォルト:100。 |
ドメインエイリアス
| アノテーション | スコープ | サポートステータス | 説明 |
|---|---|---|---|
nginx.ingress.kubernetes.io/server-alias |
ドメイン | 部分的に互換 — 完全一致ドメインとワイルドカードドメインのみ (ゲートウェイ V1.2.30 以降が必要) | Ingress 仕様のホスト名にドメインエイリアスを定義します。エイリアスは、ソースドメインの TLS、ルーティング、およびトラフィックガバナンスの構成を継承します。 |
レート制限 (単一ゲートウェイ、非推奨予定)
スロットリングがトリガーされると、レスポンスボディは local_rate_limited になります。レスポンスのステータスコードはゲートウェイのバージョンによって異なります。V1.2.23 より前のゲートウェイは 503 を返し、V1.2.23 以降は 429 を返します。
| アノテーション | スコープ | サポートステータス | 説明 |
|---|---|---|---|
mse.ingress.kubernetes.io/route-limit-rpm |
Ingress | MSE 専用 | ルート上の 1 分あたりの最大リクエスト数 (RPM) を設定します。バースト制限は、この値に mse.ingress.kubernetes.io/route-limit-burst-multiplier を乗じたものになります。 |
mse.ingress.kubernetes.io/route-limit-rps |
Ingress | MSE 専用 | ルート上の 1 秒あたりの最大リクエスト数 (RPS) を設定します。バースト制限は、この値に mse.ingress.kubernetes.io/route-limit-burst-multiplier を乗じたものになります。 |
mse.ingress.kubernetes.io/route-limit-burst-multiplier |
Ingress | MSE 専用 | バースト制限の乗数を設定します。デフォルト:5。 |
レート制限 (グローバル、推奨)
| アノテーション | スコープ | サポートステータス | 説明 |
|---|---|---|---|
mse.ingress.kubernetes.io/rate-limit |
Ingress | MSE 専用 (ゲートウェイ V1.2.25 以降が必要) | ルート上のグローバルレート制限の最大 RPS を設定します。 |
mse.ingress.kubernetes.io/rate-limit-fallback-custom-response-code |
Ingress | MSE 専用 (ゲートウェイ V1.2.25 以降が必要) | レート制限がトリガーされたときに返される HTTP レスポンスコードを設定します。デフォルト:429。mse.ingress.kubernetes.io/rate-limit-fallback-redirect-url とは排他的です。 |
mse.ingress.kubernetes.io/rate-limit-fallback-custom-response-body-type |
Ingress | MSE 専用 (ゲートウェイ V1.2.25 以降が必要) | レート制限レスポンスボディのフォーマットを設定します。デフォルト:text。text を設定すると Content-Type: text/plain; charset=UTF-8 が返されます。JSON を設定すると Content-Type: application/json; charset=UTF-8 が返されます。 |
mse.ingress.kubernetes.io/rate-limit-fallback-custom-response-body |
Ingress | MSE 専用 (ゲートウェイ V1.2.25 以降が必要) | レート制限レスポンスのボディコンテンツを設定します。デフォルト:sentinel rate limited。 |
mse.ingress.kubernetes.io/rate-limit-fallback-redirect-url |
Ingress | MSE 専用 (ゲートウェイ V1.2.25 以降が必要) | レート制限がトリガーされたときにリクエストを指定された URL にリダイレクトします。mse.ingress.kubernetes.io/rate-limit-fallback-custom-response-code とは排他的です。 |
同時実行制御 (グローバル)
| アノテーション | スコープ | サポートステータス | 説明 |
|---|---|---|---|
mse.ingress.kubernetes.io/concurrency-limit |
Ingress | MSE 専用 (ゲートウェイ V1.2.25 以降が必要) | ルート上の最大同時リクエスト数を設定します。 |
mse.ingress.kubernetes.io/concurrency-limit-fallback-custom-response-code |
Ingress | MSE 専用 (ゲートウェイ V1.2.25 以降が必要) | 同時実行制御がトリガーされたときの HTTP レスポンスコードを設定します。デフォルト:429。mse.ingress.kubernetes.io/concurrency-limit-fallback-redirect-url とは排他的です。 |
mse.ingress.kubernetes.io/concurrency-limit-fallback-custom-response-body-type |
Ingress | MSE 専用 (ゲートウェイ V1.2.25 以降が必要) | 同時実行制限レスポンスボディのフォーマットを設定します。デフォルト:text。text を設定すると Content-Type: text/plain; charset=UTF-8 が返されます。JSON を設定すると Content-Type: application/json; charset=UTF-8 が返されます。 |
mse.ingress.kubernetes.io/concurrency-limit-fallback-custom-response-body |
Ingress | MSE 専用 (ゲートウェイ V1.2.25 以降が必要) | 同時実行制限レスポンスのボディコンテンツを設定します。デフォルト:sentinel rate limited。 |
mse.ingress.kubernetes.io/concurrency-limit-fallback-redirect-url |
Ingress | MSE 専用 (ゲートウェイ V1.2.25 以降が必要) | 同時実行制御がトリガーされたときにリクエストを指定された URL にリダイレクトします。mse.ingress.kubernetes.io/concurrency-limit-fallback-custom-response-code とは排他的です。 |
バックエンドプロトコル
| アノテーション | スコープ | サポートステータス | 説明 |
|---|---|---|---|
nginx.ingress.kubernetes.io/backend-protocol |
サービス | 部分的に互換 — AJP と FCGI はサポートされていません | バックエンドサービスとの通信に使用するプロトコルを設定します。デフォルト:HTTP。サポートされている値:HTTP、HTTP2、HTTPS、gRPC、gRPCS。 |
負荷分散
| アノテーション | スコープ | サポートステータス | 説明 |
|---|---|---|---|
nginx.ingress.kubernetes.io/load-balance |
サービス | 部分的に互換 — 指数加重移動平均 (EWMA) アルゴリズムはサポートされておらず、ラウンドロビンにフォールバックします | 負荷分散アルゴリズムを設定します。デフォルト:round_robin。サポートされている値:round_robin、least_conn、random。 |
nginx.ingress.kubernetes.io/upstream-hash-by |
サービス | 部分的に互換 — NGINX 変数と定数の組み合わせはサポートされていません | 一貫性ハッシュを有効にします。サポートされているハッシュキーのタイプ:$request_uri (パスパラメーターを含むリクエストパス)、$host (リクエストホスト名)、$remote_addr (クライアント IP アドレス)、$http_<headerName> (リクエストヘッダー値)、$arg_<varName> (URL クエリパラメーター値)。 |
サービスウォームアップ (グレースフル起動)
| アノテーション | スコープ | サポートステータス | 説明 |
|---|---|---|---|
mse.ingress.kubernetes.io/warmup |
サービス | MSE 専用 | ウォームアップ期間を秒単位で設定します。デフォルトでは無効です。round_robin および least_conn 負荷分散アルゴリズムでのみサポートされます。 |
Cookie アフィニティ
| アノテーション | スコープ | サポートステータス | 説明 |
|---|---|---|---|
nginx.ingress.kubernetes.io/affinity |
サービス | 互換 | アフィニティタイプを設定します。唯一の有効な値は cookie です。 |
nginx.ingress.kubernetes.io/affinity-mode |
サービス | 部分的に互換 — persistent モードはサポートされていません |
アフィニティモードを設定します。唯一の有効な値は balanced です。 |
nginx.ingress.kubernetes.io/session-cookie-name |
サービス | 互換性あり | セッションアフィニティのハッシュキーとして使用される Cookie 名を設定します。 |
nginx.ingress.kubernetes.io/session-cookie-path |
サービス | 互換 | 生成されたセッションクッキーのパス属性を設定します。デフォルト:/。 |
nginx.ingress.kubernetes.io/session-cookie-max-age |
サービス | 互換性あり | 生成されたセッションクッキーの Max-Age を秒単位で設定します。デフォルトはセッションレベルの有効期限です。 |
nginx.ingress.kubernetes.io/session-cookie-expires |
サービス | 対応 | 生成されたセッションクッキーの Expires 属性を秒単位で設定します。デフォルトはセッションレベルの有効期限です。 |
IP アドレスベースのアクセス制御
ルートレベルの許可リストは、ドメインレベルの許可リストよりも優先されます。ルートレベルのブロックリストは、ドメインレベルのブロックリストよりも優先されます。
| アノテーション | スコープ | サポートステータス | 説明 |
|---|---|---|---|
nginx.ingress.kubernetes.io/whitelist-source-range |
Ingress | 対応 | ルートの IP 許可リストを設定します。IP アドレスと CIDR ブロックをカンマで区切って受け入れます。 |
nginx.ingress.kubernetes.io/denylist-source-range |
Ingress | 互換 (ゲートウェイ V1.2.31 以降が必要) | ルートの IP ブロックリストを設定します。IP アドレスと CIDR ブロックをカンマで区切って受け入れます。mse.ingress.kubernetes.io/blacklist-source-range よりも優先されます。 |
mse.ingress.kubernetes.io/blacklist-source-range |
Ingress | MSE 専用 | ルートの IP ブロックリストを設定します。IP アドレスと CIDR ブロックをカンマで区切って受け入れます。 |
mse.ingress.kubernetes.io/domain-whitelist-source-range |
Ingress | MSE 専用 | ドメインレベルで IP 許可リストを設定します。IP アドレスと CIDR ブロックをカンマで区切って受け入れます。 |
mse.ingress.kubernetes.io/domain-blacklist-source-range |
Ingress | MSE 専用 | ドメインレベルで IP ブロックリストを設定します。IP アドレスと CIDR ブロックをカンマで区切って受け入れます。 |
コネクションプール (ゲートウェイからバックエンド)
| アノテーション | スコープ | サポートステータス | 説明 |
|---|---|---|---|
mse.ingress.kubernetes.io/connection-policy-tcp-max-connection |
サービス | MSE 専用 | ゲートウェイとバックエンドサービス間の最大 TCP 接続数を設定します。 |
mse.ingress.kubernetes.io/connection-policy-tcp-max-connection-per-endpoint |
サービス | MSE 専用 | ゲートウェイと単一のバックエンド Pod 間の最大 TCP 接続数を設定します。 |
mse.ingress.kubernetes.io/connection-policy-http-max-request-per-connection |
サービス | MSE 専用 | ゲートウェイとバックエンドサービス間の接続ごとの最大 HTTP リクエスト数を設定します。 |
セキュリティ保護
クライアントとゲートウェイ間の TLS
| アノテーション | スコープ | サポートステータス | 説明 |
|---|---|---|---|
mse.ingress.kubernetes.io/tls-min-protocol-version |
ドメイン | MSE 専用 | 最小 TLS バージョンを設定します。デフォルト:TLSv1.0。有効な値:TLSv1.0、TLSv1.1、TLSv1.2、TLSv1.3。 |
mse.ingress.kubernetes.io/tls-max-protocol-version |
ドメイン | MSE 専用 | 最大 TLS バージョンを設定します。デフォルト:TLSv1.3。有効な値:TLSv1.0、TLSv1.1、TLSv1.2、TLSv1.3。 |
nginx.ingress.kubernetes.io/ssl-cipher |
ドメイン | 対応 | TLS 暗号スイートをカンマで区切って設定します。TLS 1.0–1.2 のハンドシェイクにのみ有効です。デフォルトの暗号スイート:ECDHE-ECDSA-AES128-GCM-SHA256、ECDHE-RSA-AES128-GCM-SHA256、ECDHE-ECDSA-AES128-SHA、ECDHE-RSA-AES128-SHA、AES128-GCM-SHA256、AES128-SHA、ECDHE-ECDSA-AES256-GCM-SHA384、ECDHE-RSA-AES256-GCM-SHA384、ECDHE-ECDSA-AES256-SHA、ECDHE-RSA-AES256-SHA、AES256-GCM-SHA384、AES256-SHA。 |
mse.ingress.kubernetes.io/auth-tls-secret |
ドメイン | 部分的に互換 — シークレット名は <domain-certificate-secret-name>-cacert |
相互 TLS (mTLS) ハンドシェイク中にゲートウェイがクライアント証明書を検証するために使用する CA 証明書を指定します。 |
ゲートウェイとバックエンドサービス間の TLS
| アノテーション | スコープ | サポートステータス | 説明 |
|---|---|---|---|
nginx.ingress.kubernetes.io/proxy-ssl-secret |
サービス | 対応 | TLS ハンドシェイク中にゲートウェイがバックエンドサービスに提示するクライアント証明書を指定します。 |
nginx.ingress.kubernetes.io/proxy-ssl-name |
サービス | 対応 | バックエンドとの TLS ハンドシェイク中に使用される Server Name Indication (SNI) の値を設定します。 |
nginx.ingress.kubernetes.io/proxy-ssl-server-name |
サービス | 互換 | バックエンドとの TLS ハンドシェイク中の SNI を有効または無効にします。 |
認証
Basic 認証
| アノテーション | スコープ | サポートステータス | 説明 |
|---|---|---|---|
nginx.ingress.kubernetes.io/auth-type |
Ingress | 部分的に互換 — basic 認証のみサポート |
認証タイプを設定します。 |
nginx.ingress.kubernetes.io/auth-secret |
Ingress | 互換 | ルートの認証情報を含むシークレットを指定します。フォーマット:<namespace>/<name>。 |
nginx.ingress.kubernetes.io/auth-secret-type |
Ingress | 対応 | シークレットデータのフォーマットを設定します。auth-file:auth キーは改行で区切られた username:password のペアを保持します。auth-map:各キーはユーザー名で、その値はパスワードです。 |
nginx.ingress.kubernetes.io/auth-realm |
Ingress | 互換 | 認証レルムを設定します。認証情報はレルム内で共有されます。 |
NGINX Ingress アノテーションの完全なリストについては、「アノテーション」をご参照ください。