Microservices Engine (MSE) Ingress ゲートウェイは、ほとんどの NGINX Ingress アノテーションと互換性があり、トラフィックガバナンスとセキュリティのために 40 の追加アノテーションを提供します。NGINX Ingress から移行する場合、ほとんどのアノテーションは変更なしで機能します。
互換性の概要
| カテゴリ | 数 | 詳細 |
|---|---|---|
| サポートされている NGINX Ingress アノテーション | 51 | 一般的なユースケースの 90% をカバー |
| No-op アノテーション | 15 | 設定不要 |
| 今後サポート予定のアノテーション | 48 | 将来のリリースで計画中 |
| サポートされていないアノテーション | 5 | NGINX 固有のコードスニペットに関連 |
| MSE 専用アノテーション | 40 | 拡張されたトラフィックガバナンスとセキュリティ |
アノテーションの基本
スコープ
各アノテーションは、以下の 3 つのレベルのいずれかで適用されます:
| スコープ | 適用対象 | Ingress 横断時の動作 |
|---|---|---|
| Ingress | Ingress リソース内のルーティングルール | 現在 の Ingress のみにスコープが限定されます |
| ドメイン名 | Ingress リソースで定義されたホスト | 他の Ingress リソース内の同じホストにも効果があります |
| サービス | Ingress リソースで定義されたバックエンドサービス | 他の Ingress リソース内の同じサービスにも効果があります |
プレフィックス
MSE Ingress ゲートウェイは、互換性のあるアノテーションに対して nginx.ingress.kubernetes.io/ と mse.ingress.kubernetes.io/ の両方のプレフィックスを受け入れます。お好みに応じていずれかのプレフィックスを使用してください。
MSE 専用のアノテーションは mse.ingress.kubernetes.io/ プレフィックスのみをサポートします。アノテーション値のフォーマット
Kubernetes のアノテーションは常に文字列です。以下のエンコーディング規則が適用されます:
| タイプ | フォーマット | 例 |
|---|---|---|
| ブール値 | "true" または "false" | "true" |
| 整数 | 見積番号 | "3" |
| 期間 | 引用値 (秒) | "30" |
| パーセンテージ | 引用数 (0~100) | "80" |
| 文字列リスト | カンマ区切り | "192.168.0.1,10.0.0.0/8" |
| 複数行 | YAML パイプ (|) | ヘッダー制御の例をご参照ください |
優先順位とインタラクションルール
| ルール | 詳細 |
|---|---|
| プレフィックスの等価性 | nginx.ingress.kubernetes.io/xxx と mse.ingress.kubernetes.io/xxx は、互換性のあるアノテーションに対して同一の動作をします |
| ドメイン間経路 | ルートレベルの IP リストはドメインレベルの IP リストより優先されます |
| NGINX デニーリスト > MSE ブラックリスト | nginx.ingress.kubernetes.io/denylist-source-range は mse.ingress.kubernetes.io/blacklist-source-range |
| 排他的なレート制限フォールバック | rate-limit-fallback-custom-response-code と rate-limit-fallback-redirect-url は同時に使用できません |
| 相互排他的な同時実行フォールバック | concurrency-limit-fallback-custom-response-code と concurrency-limit-fallback-redirect-url は同時に使用できません |
| 独立したヘッダー制御 | ベースルートとカナリアルートのヘッダー制御アノテーションは独立して検証されます |
互換性に関する注意事項
NGINX 変数:MSE は NGINX とは異なる方法で機能を実装しています。アノテーションやコードスニペットで設定された NGINX 変数は、MSE と互換性がありません。
proxy-body-sizeの動作:MSE クラウドネイティブゲートウェイはチャンク転送エンコーディングを使用しており、大きなリクエストボディを自動的にチャンクに分割します。大きなファイルの転送を処理するには、ご利用の MSE ゲートウェイの [パラメーター設定] で DownstreamConnectionBufferLimits パラメーターを調整してください。
トラフィックガバナンス
カナリアリリース
| アノテーション | スコープ | ステータス | 説明 |
|---|---|---|---|
nginx.ingress.kubernetes.io/canary | 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 | 互換性あり | トラフィック分割用のリクエストヘッダー値を設定します。正規表現一致をサポートします。 |
nginx.ingress.kubernetes.io/canary-by-cookie | Ingress | 互換性あり | トラフィック分割用のリクエスト Cookie キーを設定します。 |
nginx.ingress.kubernetes.io/canary-weight | Ingress | 対応 | トラフィック分割用のサービス重みを設定します。 |
nginx.ingress.kubernetes.io/canary-weight-total | 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 クエリパラメーター値を設定します。正規表現一致をサポートします。 |
mse.ingress.kubernetes.io/canary-by-cookie-value | Ingress | MSE 専用 (V1.2.30+) | トラフィック分割用のリクエスト Cookie 値を設定します。完全一致をサポートします。 |
# カナリアリリース:ヘッダー値に基づいてトラフィックをルーティング
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: canary-ingress
annotations:
nginx.ingress.kubernetes.io/canary: "true"
nginx.ingress.kubernetes.io/canary-by-header: "x-canary"
nginx.ingress.kubernetes.io/canary-by-header-value: "true"
spec:
rules:
- host: example.com
http:
paths:
- path: /api
pathType: Prefix
backend:
service:
name: my-service-canary
port:
number: 80複数サービスへのルーティング
重み付けディストリビューションを使用して、複数のバックエンドサービスにトラフィックをルーティングします。
| アノテーション | スコープ | ステータス | 説明 |
|---|---|---|---|
mse.ingress.kubernetes.io/destination | Ingress | MSE 専用 | ルートに対して重み付けに基づくサービスディストリビューションを定義します。 |
構文: {weight}% {serviceName}.{serviceNamespace}.svc.cluster.local:{port}
annotations:
# トラフィックの 60% を foo に、40% を bar にルーティング
mse.ingress.kubernetes.io/destination: |
60% foo.default.svc.cluster.local:8080
40% bar.default.svc.cluster.local:9090このアノテーションを設定すると、Ingress 上のすべてのルーティングルールが指定されたサービスに向けられます。構文が無効な場合、アノテーションは無視され、元のルーティングルールは変更されません。
サービスサブセット
1 つのサービスが複数のデプロイメントを管理する場合に便利な、サービス内の Pod のサブセットにトラフィックをルーティングします。
| アノテーション | スコープ | ステータス | 説明 |
|---|---|---|---|
mse.ingress.kubernetes.io/service-subset | Ingress | MSE 専用 (V1.2.25+) | ターゲット Pod ルーティング用のサービスサブセットを設定します。 |
mse.ingress.kubernetes.io/subset-labels | Ingress | MSE 専用 (V1.2.25+) | オプション。Pod をサブセットに分類するために使用されるラベルを設定します。 |
service-subset がトラフィックをルーティングする方法:
subset-labelsが設定されていない場合:""またはbaseに設定:opensergo.io/canary: ""というラベルが付いた Pod、またはopensergo.io/canaryラベルキーがない Pod にルーティングします。その他の値 (例:
gray) に設定:opensergo.io/canary-gray: grayというラベルが付いた Pod にルーティングします。
subset-labelsが設定されている場合:subset-labelsで定義されたキーと値のペアに一致するラベルを持つ Pod にのみルーティングします。
指定されたラベルに一致する Pod がない場合、トラフィックは自動的にサービス内のすべての Pod にルーティングされます。
annotations:
# "gray" サブセットとしてラベル付けされた Pod にトラフィックをルーティング
mse.ingress.kubernetes.io/service-subset: "gray"フォールバック
| アノテーション | スコープ | ステータス | 説明 |
|---|---|---|---|
nginx.ingress.kubernetes.io/default-backend | Ingress | 互換性あり | フォールバックサービスを設定します。プライマリサービスに利用可能なヘルシーノードがない場合、リクエストはこのサービスに転送されます。 |
nginx.ingress.kubernetes.io/custom-http-errors | Ingress | 対応 | default-backend と共に使用します。バックエンドが指定された HTTP ステータスコードを返した場合に、リクエストをフォールバックサービスに転送します。 |
リクエストがフォールバックサービスに転送されると、リクエストパスは / に書き換えられます。この動作は NGINX Ingress ゲートウェイと一致します。
正規表現一致
| アノテーション | スコープ | ステータス | 説明 |
|---|---|---|---|
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 | 対応 | 恒久的なリダイレクトのステータスコードを設定します。 |
nginx.ingress.kubernetes.io/temporal-redirect | Ingress | 互換性あり | 一時的なリダイレクト URL を設定します。 |
nginx.ingress.kubernetes.io/app-root | Ingress | 対応 | / からのリクエストを指定されたアプリケーションルートパスにリダイレクトします。 |
一部の NGINX Ingress バージョンではリダイレクトに NGINX 変数をサポートしていますが、これは公式の アノテーションリファレンスには記載されておらず、互換性の問題を引き起こす可能性があります。リダイレクトに NGINX 変数を使用しないでください。
CORS
| アノテーション | スコープ | ステータス | 説明 |
|---|---|---|---|
nginx.ingress.kubernetes.io/enable-cors | Ingress | 対応 | オリジン間リソース共有 (CORS) を有効にします。 |
nginx.ingress.kubernetes.io/cors-allow-origin | Ingress | 互換性あり | 許可されたオリジンを設定します。 |
nginx.ingress.kubernetes.io/cors-allow-methods | Ingress | 対応 | 許可された HTTP メソッド (GET、POST、PUT など) を設定します。 |
nginx.ingress.kubernetes.io/cors-allow-headers | Ingress | 互換性あり | 許可されたリクエストヘッダーを設定します。 |
nginx.ingress.kubernetes.io/cors-expose-headers | Ingress | 対応 | ブラウザに公開されるレスポンスヘッダーを設定します。 |
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 専用 | バックエンドに転送されるリクエストにヘッダーを追加します。ヘッダーが既に存在する場合、新しい値が元の値に追加されます。 |
mse.ingress.kubernetes.io/request-header-control-update | Ingress | MSE 専用 | バックエンドに転送されるリクエストのヘッダーを上書きします。ヘッダーが既に存在する場合、元の値は置き換えられます。 |
mse.ingress.kubernetes.io/request-header-control-remove | Ingress | MSE 専用 | バックエンドに転送されるリクエストからヘッダーを削除します。 |
レスポンスヘッダー:
| アノテーション | スコープ | ステータス | 説明 |
|---|---|---|---|
mse.ingress.kubernetes.io/response-header-control-add | Ingress | MSE 専用 | クライアントに転送する前にレスポンスにヘッダーを追加します。ヘッダーが既に存在する場合、新しい値が追加されます。 |
mse.ingress.kubernetes.io/response-header-control-update | Ingress | MSE 専用 | クライアントに転送する前にレスポンスのヘッダーを上書きします。ヘッダーが既に存在する場合、元の値は置き換えられます。 |
mse.ingress.kubernetes.io/response-header-control-remove | Ingress | MSE 専用 | クライアントに転送する前にレスポンスからヘッダーを削除します。 |
追加および更新アノテーションの構文:
単一ヘッダー:
key value複数ヘッダー:YAML パイプ (
|) を使用し、1 行に 1 つのキーと値のペアを記述します。
削除アノテーションの構文:
単一ヘッダー:
key複数ヘッダー:カンマ (
,) で区切ります。
annotations:
# リクエストにカスタムヘッダーを追加
mse.ingress.kubernetes.io/request-header-control-add: "x-request-id 12345"
# レスポンスに複数のヘッダーを追加
mse.ingress.kubernetes.io/response-header-control-add: |
x-custom-header value1
x-another-header value2
# レスポンスからヘッダーを削除
mse.ingress.kubernetes.io/response-header-control-remove: "x-powered-by,server"タイムアウト
| アノテーション | スコープ | ステータス | 説明 |
|---|---|---|---|
mse.ingress.kubernetes.io/timeout | Ingress | MSE 専用 | リクエストのタイムアウトを秒単位で設定します。デフォルトではタイムアウトは設定されていません。 |
このタイムアウトは TCP トランスポート層ではなく、アプリケーション層で適用されます。
annotations:
mse.ingress.kubernetes.io/timeout: "30"リトライ
| アノテーション | スコープ | ステータス | 説明 |
|---|---|---|---|
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。 |
mse.ingress.kubernetes.io/mirror-percentage | Ingress | MSE 専用 (V1.2.32+) | ミラーリングするトラフィックのパーセンテージを設定します。有効な値:0~100。デフォルト:100。 |
mirror-target-service パラメーター:
| パラメーター | 必須 | 説明 |
|---|---|---|
namespace | いいえ | Kubernetes Service の名前空間。デフォルトは Ingress ゲートウェイの名前空間です。 |
name | はい | Kubernetes Service の名前。 |
port | いいえ | ミラーリングされたトラフィック用のサービスポート。デフォルトは最初のポートです。 |
annotations:
# トラフィックの 50% をシャドウサービスにミラーリング
mse.ingress.kubernetes.io/mirror-target-service: "default/shadow-service:8080"
mse.ingress.kubernetes.io/mirror-percentage: "50"ドメインエイリアス
| アノテーション | スコープ | ステータス | 説明 |
|---|---|---|---|
nginx.ingress.kubernetes.io/server-alias | ドメイン名 | 部分的に互換 (V1.2.30+) | Ingress spec で定義されたドメインのドメインエイリアスを設定します。ドメインエイリアスは、ソースドメインの TLS、ルーティング、およびトラフィックガバナンス設定を共有します。完全一致ドメインとワイルドカードドメインのみがサポートされています。 |
レート制限
グローバルレート制限 (推奨)
すべてのゲートウェイインスタンスで一貫したトラフィック制御を行うには、グローバルレート制限を使用してください。
| アノテーション | スコープ | ステータス | 説明 |
|---|---|---|---|
mse.ingress.kubernetes.io/rate-limit | Ingress | MSE 専用 (V1.2.25+) | ルートの 1 秒あたりの最大リクエスト数 (RPS) を設定します。 |
mse.ingress.kubernetes.io/rate-limit-fallback-custom-response-code | Ingress | MSE 専用 (V1.2.25+) | レート制限がトリガーされたときのレスポンスコードを設定します。デフォルト:429。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 は 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 にリダイレクトします。rate-limit-fallback-custom-response-code とは排他的です。 |
annotations:
# 100 RPS に制限し、カスタム JSON レスポンスを返す
mse.ingress.kubernetes.io/rate-limit: "100"
mse.ingress.kubernetes.io/rate-limit-fallback-custom-response-code: "429"
mse.ingress.kubernetes.io/rate-limit-fallback-custom-response-body-type: "JSON"
mse.ingress.kubernetes.io/rate-limit-fallback-custom-response-body: '{"error":"rate limit exceeded"}'単一ゲートウェイのレート制限 (非推奨予定)
単一ゲートウェイのレート制限は非推奨になる予定です。代わりにグローバルレート制限を使用してください。
| アノテーション | スコープ | ステータス | 説明 |
|---|---|---|---|
mse.ingress.kubernetes.io/route-limit-rpm | Ingress | MSE 専用 | 単一ゲートウェイ上のルートの 1 分あたりの最大リクエスト数 (RPM) を設定します。バースト制限 = RPM x route-limit-burst-multiplier。 |
mse.ingress.kubernetes.io/route-limit-rps | Ingress | MSE 専用 | 単一ゲートウェイ上のルートの 1 秒あたりの最大リクエスト数 (RPS) を設定します。バースト制限 = RPS x route-limit-burst-multiplier。 |
mse.ingress.kubernetes.io/route-limit-burst-multiplier | Ingress | MSE 専用 | バースト制限の乗数を設定します。デフォルト:5。 |
レート制限がトリガーされた場合:
レスポンスボディ:
local_rate_limitedV1.2.23 より前のゲートウェイバージョン:ステータスコード
503を返しますゲートウェイバージョン V1.2.23 以降:ステータスコード
429を返します
同時実行制御
グローバル同時実行制御は、ルートで同時に処理されるリクエストの数を制限します。
| アノテーション | スコープ | ステータス | 説明 |
|---|---|---|---|
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+) | 同時実行制御がトリガーされたときのレスポンスコードを設定します。デフォルト:429。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 は 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 にリダイレクトします。concurrency-limit-fallback-custom-response-code とは排他的です。 |
annotations:
# 50 の同時リクエストに制限し、オーバーフロー時にリダイレクト
mse.ingress.kubernetes.io/concurrency-limit: "50"
mse.ingress.kubernetes.io/concurrency-limit-fallback-redirect-url: "https://example.com/busy"バックエンドプロトコル
| アノテーション | スコープ | ステータス | 説明 |
|---|---|---|---|
nginx.ingress.kubernetes.io/backend-protocol | サービス | 一部互換 | バックエンドサービスのプロトコルを設定します。デフォルト:HTTP。有効な値:HTTP、HTTP2、HTTPS、gRPC、gRPCS。AJP と FCGI はサポートされていません。 |
負荷分散
| アノテーション | スコープ | ステータス | 説明 |
|---|---|---|---|
nginx.ingress.kubernetes.io/load-balance | サービス | 部分的に互換 | 負荷分散アルゴリズムを設定します。デフォルト:round_robin。有効な値:round_robin、least_conn、random。指数加重移動平均 (EWMA) アルゴリズムはサポートされていません。EWMA が設定されている場合、アルゴリズムは round_robin にフォールバックします。 |
nginx.ingress.kubernetes.io/upstream-hash-by | サービス | 部分的に互換 | 一貫性ハッシュを有効にします。NGINX 変数と定数の組み合わせはサポートされていません。 |
サポートされている一貫性ハッシュメソッド:
NGINX 変数:
$request_uri(パラメーターを含むリクエストパス)、$host(リクエストホスト)、$remote_addr(クライアント IP アドレス)リクエストヘッダー:
$http_headerNameリクエストパスパラメーター:
$arg_varName
グレースフルスタート (サービスプリフェッチ)
| アノテーション | スコープ | ステータス | 説明 |
|---|---|---|---|
mse.ingress.kubernetes.io/warmup | サービス | MSE 専用 | ウォームアップ期間を秒単位で設定します。デフォルトでは無効です。 |
グレースフルスタートは、round_robin および least_conn 負荷分散アルゴリズムでのみ機能します。
annotations:
# 新しい Pod を 60 秒かけてウォームアップ
mse.ingress.kubernetes.io/warmup: "60"Cookie アフィニティ
| アノテーション | スコープ | ステータス | 説明 |
|---|---|---|---|
nginx.ingress.kubernetes.io/affinity | サービス | 互換性あり | アフィニティタイプを設定します。唯一の有効な値は cookie です。 |
nginx.ingress.kubernetes.io/affinity-mode | サービス | 部分的に互換 | アフィニティモードを設定します。唯一の有効な値は balanced です。persistent モードはサポートされていません。 |
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 の有効期限を秒単位で設定します。デフォルトはセッションレベルの有効期限です。 |
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 | 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 ブロックをサポートし、カンマで区切ります。 |
優先順位ルール:
ルートレベルの IP リストはドメインレベルの IP リストより優先されます。
nginx.ingress.kubernetes.io/denylist-source-rangeはmse.ingress.kubernetes.io/blacklist-source-rangeより優先されます。
annotations:
# ルートレベルで特定の IP のみを許可
nginx.ingress.kubernetes.io/whitelist-source-range: "10.0.0.0/8,192.168.1.100"ゲートウェイとバックエンド間の接続プール
| アノテーション | スコープ | ステータス | 説明 |
|---|---|---|---|
mse.ingress.kubernetes.io/connection-policy-tcp-max-connection | サービス | MSE 専用 | ゲートウェイとバックエンドサービス間の最大 TCP 接続数を設定します。 |
mse.ingress.kubernetes.io/connection-policy-tcp-max-connection-per-endpoint | サービス | MSE 専用 | ゲートウェイと各バックエンドエンドポイント間の最大 TCP 接続数を設定します。 |
mse.ingress.kubernetes.io/connection-policy-http-max-request-per-connection | サービス | MSE 専用 | ゲートウェイとバックエンドサービス間の接続あたりの最大 HTTP リクエスト数を設定します。 |
annotations:
# バックエンドへの接続プールを制限
mse.ingress.kubernetes.io/connection-policy-tcp-max-connection: "1024"
mse.ingress.kubernetes.io/connection-policy-tcp-max-connection-per-endpoint: "100"
mse.ingress.kubernetes.io/connection-policy-http-max-request-per-connection: "500"セキュリティ保護
クライアントとゲートウェイ間の TLS
| アノテーション | スコープ | ステータス | 説明 |
|---|---|---|---|
mse.ingress.kubernetes.io/tls-min-protocol-version | ドメイン名 | MSE 専用 | 最小 TLS バージョンを設定します。デフォルト:TLSv1.0。有効な値:TLSv1.0、TLSv1.1、TLSv1.2。 |
mse.ingress.kubernetes.io/tls-max-protocol-version | ドメイン名 | MSE 専用 | 最大 TLS バージョンを設定します。推奨:TLSv1.2。有効な値:TLSv1.0、TLSv1.1、TLSv1.2。 |
nginx.ingress.kubernetes.io/ssl-cipher | ドメイン名 | 互換性あり | TLS 暗号スイートをカンマで区切って設定します。TLS 1.0 から 1.2 のハンドシェイクにのみ効果があります。 |
mse.ingress.kubernetes.io/auth-tls-secret | ドメイン名 | 部分的に互換 | mTLS ハンドシェイク中のクライアント証明書検証用の CA 証明書を設定します。シークレット名は、{domain-cert-secret-name}-cacert というフォーマットに従う必要があります。 |
デフォルトの暗号スイート:
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
annotations:
# 最小 TLS 1.2 を強制
mse.ingress.kubernetes.io/tls-min-protocol-version: "TLSv1.2"
mse.ingress.kubernetes.io/tls-max-protocol-version: "TLSv1.2"ゲートウェイとバックエンド間の TLS
| アノテーション | スコープ | ステータス | 説明 |
|---|---|---|---|
nginx.ingress.kubernetes.io/proxy-ssl-secret | サービス | 互換性あり | ゲートウェイが使用するクライアント証明書を設定し、バックエンドサービスがゲートウェイを認証できるようにします。 |
nginx.ingress.kubernetes.io/proxy-ssl-name | サービス | 互換性あり | TLS ハンドシェイクのサーバー名表示 (SNI) を設定します。 |
nginx.ingress.kubernetes.io/proxy-ssl-server-name | サービス | 互換性あり | TLS ハンドシェイク中に SNI を有効にします。 |
認証
| アノテーション | スコープ | ステータス | 説明 |
|---|---|---|---|
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 のペア (1 行に 1 つ) が含まれます。auth-map:データキーはユーザー名、値はパスワードです。 |
nginx.ingress.kubernetes.io/auth-realm | Ingress | 互換性あり | 認証レルムを設定します。同じレルム内では認証情報が共有されます。 |
annotations:
# Kubernetes シークレットによる基本認証
nginx.ingress.kubernetes.io/auth-type: "basic"
nginx.ingress.kubernetes.io/auth-secret: "default/my-auth-secret"
nginx.ingress.kubernetes.io/auth-secret-type: "auth-file"
nginx.ingress.kubernetes.io/auth-realm: "Protected Area"