NGINX Ingress の動作は、グローバル設定用の nginx-configuration ConfigMap と、リソースレベルでのオーバーライド用の Ingress ごとのアノテーションという 2 つのメカニズムを通じて構成します。
詳細については、「NGINX Ingress ConfigMap ドキュメント」または「NGINX Ingress アノテーション ドキュメント」をご参照ください。
ConfigMap
nginx-configuration ConfigMap は、NGINX Ingress コントローラーによって管理されるすべての Ingress のグローバルデフォルトを制御します。
ConfigMap の編集
kubectl edit cm -n kube-system nginx-configuration
デフォルト構成
以下の ConfigMap は ACK のデフォルトを反映しています。ここに記載されていないフィールドは、上流の ingress-nginx のデフォルトを継承します。
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-configuration
namespace: <namespace> # デフォルト: kube-system
labels:
app: ingress-nginx
data:
log-format-upstream: '$remote_addr - [$remote_addr] - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" $request_length $request_time [$proxy_upstream_name] $upstream_addr $upstream_response_length $upstream_response_time $upstream_status $req_id $host [$proxy_alternative_upstream_name]'
proxy-body-size: 20m
proxy-connect-timeout: "10"
max-worker-connections: "65536"
enable-underscores-in-headers: "true"
reuse-port: "true"
worker-cpu-affinity: "auto"
server-tokens: "false"
ssl-redirect: "false"
allow-backend-server-header: "true"
ignore-invalid-headers: "true"
generate-request-id: "true"
upstream-keepalive-timeout: "900"
フィールドの説明
| フィールド | デフォルト | 説明 |
|---|---|---|
log-format-upstream |
(上記参照) | アップストリームリクエストのログフォーマット。このフィールドを変更する場合は、kube-system/k8s-nginx-ingress AliyunLogConfig および Simple Log Service のログ収集フォーマットも更新してください。詳細については、「Simple Log Service での NGINX Ingress コントローラーのアクセスログの診断」をご参照ください。 |
proxy-body-size |
20m |
クライアントリクエストボディの最大サイズです。client_max_body_size に対応します。 |
proxy-connect-timeout |
10 |
プロキシサーバーとの接続確立タイムアウト(秒単位)です。最大値は 75 です。gRPC 接続の場合、grpc_connect_timeout も設定してください。「proxy_connect_timeout」をご参照ください。 |
max-worker-connections |
65536 |
ワーカープロセス あたりの最大同時接続数です。0 を設定すると、代わりに max-worker-open-files の値が使用されます。 |
enable-underscores-in-headers |
true |
リクエストヘッダー名にアンダースコア (_) を含めることを許可するかどうかを指定します。 |
reuse-port |
true |
SO_REUSEPORT ソケットオプションを使用して、ワーカープロセスごとに個別のリスニングソケットを作成し、OS が受信接続を各ワーカー間で分散できるようにします。 |
worker-cpu-affinity |
auto |
各ワーカープロセスを利用可能な CPU コアに自動的にバインドします。パフォーマンス専有型ワークロードに役立ちます。 |
server-tokens |
false |
true の場合、Server レスポンスヘッダーやエラーページに NGINX のバージョン情報を含めます。false を設定すると、バージョン情報の公開を抑制します。 |
ssl-redirect |
false |
true の場合、TLS 証明書を持つすべてのサーバーに対して HTTP から HTTPS へのグローバルなリダイレクト(301)を実行します。 |
allow-backend-server-header |
true |
true の場合、バックエンドサービスから送信された Server ヘッダーを置き換えずにそのまま通過させます(汎用的な NGINX 文字列への置き換えを行いません)。 |
ignore-invalid-headers |
true |
リクエスト内の無効なヘッダーフィールドを無視するかどうかを指定します。 |
generate-request-id |
true |
truetrue の場合、X-Request-ID ヘッダーがまだ含まれていないリクエストに対して、ランダムな 値を生成します。 |
upstream-keepalive-timeout |
900 (ACK) / 60 (オープンソース) |
アップストリームサーバーへのキープアライブ接続のアイドルタイムアウト(秒単位)です。NGINX の keepalive_timeout ディレクティブに対応します。 |
アノテーション
個々の Ingress リソースにアノテーションを追加して、グローバルな ConfigMap 設定をオーバーライドまたは拡張できます。アノテーションは、設定された Ingress リソースにのみ適用されます。
全一覧については、「NGINX Ingress アノテーションドキュメント」をご参照ください。
ロードバランシング
| アノテーション | タイプ | 説明 |
|---|---|---|
nginx.ingress.kubernetes.io/load-balance |
round_robin | ewma |
バックエンドサービスのロードバランシングアルゴリズムです。round_robin(デフォルト)はほとんどのワークロードに適しています。ewma(ピーク指数加重移動平均)は遅延の影響を受けやすいアプリケーションに適しています。 |
nginx.ingress.kubernetes.io/upstream-hash-by |
string | 一貫したハッシュを有効にします。値はハッシュキーとして使用される変数です。例:$request_uri、$request_uri$host、${request_uri}-text-value。一貫したハッシュは循環ハッシュ空間を使用するため、ノードの追加または削除時にルートの一部のみを移行する必要があります。 |
例:リクエスト URI による一貫したハッシュ
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-test
namespace: default
annotations:
nginx.ingress.kubernetes.io/upstream-hash-by: "$request_uri"
spec:
ingressClassName: nginx
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: <your-service-name>
port:
number: <your-service-port>
Kubernetes バージョン 1.22 より前のクラスターでは、apiVersion: networking.k8s.io/v1beta1を使用し、backend配下にserviceName/servicePortフィールドを指定してください。
Cookie アフィニティ
| アノテーション | タイプ | デフォルト | 説明 |
|---|---|---|---|
nginx.ingress.kubernetes.io/affinity |
cookie |
— | アフィニティタイプです。cookie のみがサポートされています。 |
nginx.ingress.kubernetes.io/affinity-mode |
balanced | persistent |
balanced |
balanced はインスタンス間でリクエストを分散します。persistent はクライアントを常に同じバックエンドインスタンスにルーティングし、セッションの一貫性を保証します。 |
nginx.ingress.kubernetes.io/session-cookie-name |
string | — | セッションルーティングのハッシュキーとして使用されるクッキー名です。 |
nginx.ingress.kubernetes.io/session-cookie-path |
string | / |
セッションクッキーに設定されるパス属性です。nginx.ingress.kubernetes.io/use-regex が true の場合、正規表現はサポートされません。 |
nginx.ingress.kubernetes.io/session-cookie-max-age |
integer (秒) | — | Max-Age 属性(秒単位)です。 |
nginx.ingress.kubernetes.io/session-cookie-expires |
integer (秒) | — | クッキー作成時からの有効期限(秒単位)です。Expires 属性を設定します。 |
例:クッキーに基づくセッション保持
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-test
annotations:
nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/session-cookie-name: "route"
nginx.ingress.kubernetes.io/session-cookie-expires: "172800"
nginx.ingress.kubernetes.io/session-cookie-max-age: "172800"
spec:
ingressClassName: nginx
rules:
- host: stickyingress.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: http-svc
port:
number: 80
リダイレクト
| アノテーション | タイプ | デフォルト | 説明 |
|---|---|---|---|
nginx.ingress.kubernetes.io/ssl-redirect |
"true" | "false" |
— | このIngressにTLS証明書がある場合、HTTPをHTTPSにリダイレクトします。HTTP-to-HTTPS リダイレクト」をご参照ください。 |
nginx.ingress.kubernetes.io/force-ssl-redirect |
"true" | "false" |
"false" |
TLS 証明書が設定されているかどうかに関係なく、HTTP から HTTPS へのリダイレクトを強制します。 |
nginx.ingress.kubernetes.io/permanent-redirect |
URL | — | 恒久的なリダイレクトの送信先 URL です。スキーム(http:// または https://)を含める必要があります。 |
nginx.ingress.kubernetes.io/permanent-redirect-code |
integer | 301 |
恒久的なリダイレクトの HTTP ステータスコードです。 |
nginx.ingress.kubernetes.io/temporal-redirect |
URL | — | 一時的なリダイレクトの送信先 URL です。スキーム(http:// または https://)を含める必要があります。 |
nginx.ingress.kubernetes.io/app-root |
path | — | / へのリクエストを指定されたアプリケーションルートパスにリダイレクトします。 |
例:`foo.com` から `bar.com` への恒久的なリダイレクト
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-nginx
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/permanent-redirect: "https://bar.com"
spec:
ingressClassName: nginx
rules:
- host: foo.com
http:
paths:
- path: "/"
pathType: ImplementationSpecific
backend:
service:
name: httpbin
port:
number: 8000
書き換え
| アノテーション | タイプ | 説明 |
|---|---|---|
nginx.ingress.kubernetes.io/rewrite-target |
string | 書き換えの宛先パスです。キャプチャグループをサポートしています。詳細については、「URL リダイレクトを設定する」をご参照ください。 |
nginx.ingress.kubernetes.io/upstream-vhost |
string | アップストリームサービスに送信される Host ヘッダーを書き換えます。 |
例:`example.com/test` へのリクエストの `Host` ヘッダーを `test.com` に書き換える
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: demo
annotations:
nginx.ingress.kubernetes.io/upstream-vhost: "test.com"
spec:
ingressClassName: nginx
rules:
- host: example.com
http:
paths:
- path: /test
pathType: ImplementationSpecific
backend:
service:
name: demo-service
port:
number: 80
速度制限
速度制限アノテーションを使用して、クライアント IP アドレスごとのリクエストレートおよび同時接続数を制限し、トラフィックスパイクからバックエンドサービスを保護します。
| アノテーション | タイプ | デフォルト | 説明 |
|---|---|---|---|
nginx.ingress.kubernetes.io/limit-connections |
integer | — | IP アドレスあたりの最大同時接続数です。この制限を超えたリクエストは 503 応答を受け取ります。 |
nginx.ingress.kubernetes.io/limit-rate |
integer (KB) | — | 接続あたり 1 秒間に転送されるデータの最大量(KB 単位)です。0 を設定すると無効になります。有効にするにはプロキシバッファリングを有効にする必要があります。 |
nginx.ingress.kubernetes.io/limit-rps |
integer | — | IP アドレスあたりの最大リクエスト数(秒単位)です。バースト制限(レート × limit-burst-multiplier)を超えたリクエストは、limit-req-status-code エラー(デフォルトでは 503)を返します。 |
nginx.ingress.kubernetes.io/limit-rpm |
integer | — | IP アドレスあたりの最大リクエスト数(分単位)です。limit-rps と同じバースト動作をします。 |
nginx.ingress.kubernetes.io/limit-burst-multiplier |
integer | 5 |
バーストレート制限を計算するための乗数です。 |
nginx.ingress.kubernetes.io/limit-whitelist |
CIDR リスト | — | 速度制限から除外される CIDR ブロックのカンマ区切りリストです。 |
例:IP ホワイトリスト付きのレート制限
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-nginx
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/limit-rate: "100K"
nginx.ingress.kubernetes.io/limit-rps: "1"
nginx.ingress.kubernetes.io/limit-rpm: "30"
nginx.ingress.kubernetes.io/limit-whitelist: "10.1.10.100"
spec:
ingressClassName: nginx
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: backend-svc
port:
number: 80
フォールバック
フォールバックアノテーションを使用して、プライマリバックエンドが利用できない場合にトラフィックをバックアップサービスにルーティングします。
| アノテーション | タイプ | 説明 |
|---|---|---|
nginx.ingress.kubernetes.io/default-backend |
string | バックエンドノードが利用できない場合にリクエストを受信するフォールバックサービスです。ACK コンソールの アドオン ページからグローバルに構成できます。 |
nginx.ingress.kubernetes.io/custom-http-errors |
HTTP ステータスコード | default-backend と連携して動作します。バックエンドが指定されたステータスコードのいずれかを返す場合、NGINX はリクエストをフォールバックサービスに転送します。転送時にはリクエストパスが / に書き換えられます(上流の ingress-nginx の動作と一致します)。この Ingress 内のパスについて、グローバルな custom-http-errors ConfigMap 設定をオーバーライドします。 |
カナリアリリース
カナリアアノテーションを使用して、カナリアリリースおよびブルーグリーンリリースを実装する。詳細については、「NGINX Ingress コントローラーを使用してカナリアリリースおよびブルーグリーンリリースを実装する」をご参照ください。
| アノテーション | タイプ | 説明 |
|---|---|---|
nginx.ingress.kubernetes.io/canary |
"true" | "false" |
カナリアリリース機能を有効にするかどうかを指定します。 |
nginx.ingress.kubernetes.io/canary-by-header |
string | トラフィック分割に使用するリクエストヘッダーのキーです。 |
nginx.ingress.kubernetes.io/canary-by-header-value |
string | ヘッダーキーの完全一致値です。一致するリクエストをカナリアにルーティングします。 |
nginx.ingress.kubernetes.io/canary-by-header-pattern |
regex | ヘッダー値の正規表現マッチです。 |
nginx.ingress.kubernetes.io/canary-by-cookie |
string | トラフィック分割に使用するクッキーのキーです。 |
nginx.ingress.kubernetes.io/canary-weight |
integer | カナリアにルーティングされるトラフィックの割合(0~canary-weight-total)です。 |
nginx.ingress.kubernetes.io/canary-weight-total |
integer | canary-weight の分母として使用される総重量です。 |
タイムアウト
グローバルタイムアウト設定
グローバルにタイムアウトを設定するには、nginx-configuration ConfigMap を編集します:
kubectl edit cm -n kube-system nginx-configuration
| フィールド | デフォルト | 説明 |
|---|---|---|
proxy-connect-timeout |
5s |
プロキシサーバーとの接続確立タイムアウトです。最大値は 75s です。 |
proxy-read-timeout |
60s |
プロキシサーバーからの 2 回の連続読み取り間のタイムアウトです(合計応答時間ではありません)。 |
proxy-send-timeout |
60s |
プロキシサーバーへの 2 回の連続書き込み間のタイムアウトです(合計リクエスト送信時間ではありません)。 |
proxy-stream-next-upstream-timeout |
600s |
次のアップストリームサーバーへの接続引き渡しに許容される最大時間です。0 を設定すると制限なしになります。 |
proxy-stream-timeout |
600s |
クライアントまたはプロキシ接続における連続した読み取りまたは書き込み間のタイムアウトです。この期間内にデータ転送がない場合、接続は閉じられます。 |
upstream-keepalive-timeout |
900s (ACK) / 60s (オープンソース) |
アップストリームサーバーへのキープアライブ接続のアイドルタイムアウトです。 |
worker-shutdown-timeout |
240s |
グレースフルシャットダウンのタイムアウトです。 |
proxy-protocol-header-timeout |
5s |
PROXY プロトコルヘッダーの受信タイムアウトです。これにより、壊れた接続上で TLS パススルーハンドラーが無限に待機することを防ぎます。 |
ssl-session-timeout |
10m |
セッションキャッシュ内の SSL セッションパラメーターの有効期間です。各セッションキャッシュエントリーは約 0.25 MB を使用します。 |
client-body-timeout |
60s |
クライアントリクエストボディの読み取りタイムアウトです。 |
client-header-timeout |
60s |
クライアントリクエストヘッダーの読み取りタイムアウトです。 |
Ingress ごとのタイムアウト設定
特定の Ingress に対してグローバルタイムアウトをオーバーライドするには、以下のアノテーションを使用します:
| アノテーション | 説明 |
|---|---|
nginx.ingress.kubernetes.io/proxy-connect-timeout |
プロキシサーバーとの接続確立タイムアウトです。 |
nginx.ingress.kubernetes.io/proxy-send-timeout |
プロキシサーバーへのデータ送信タイムアウトです。 |
nginx.ingress.kubernetes.io/proxy-read-timeout |
プロキシサーバーからのデータ読み取りタイムアウトです。 |
nginx.ingress.kubernetes.io/proxy-request-buffering |
リクエストバッファリングモードです。on:転送前にリクエスト全体をバッファリングします(HTTP/1.1 のチャンク化リクエストは常にバッファリングされます)。off:リクエストデータを直接ストリーミングします。送信エラー時のリトライは行われません。 |
CORS
オリジン間リソース共有 (CORS) を設定して、ブラウザクライアントが異なるオリジンからリソースにアクセスできるようにします。 詳細については、「NGINX Ingress で CORS を設定する」をご参照ください。
| アノテーション | 説明 |
|---|---|
nginx.ingress.kubernetes.io/enable-cors |
この Ingress の CORS を有効にします。 |
nginx.ingress.kubernetes.io/cors-allow-origin |
CORS で許可されるサードパーティサイトを指定します。 |
nginx.ingress.kubernetes.io/cors-allow-methods |
CORS で許可されるリクエストメソッドを指定します。許可されるリクエストメソッドには GET、POST、PUT が含まれます。 |
nginx.ingress.kubernetes.io/cors-allow-headers |
許可されるリクエストヘッダーです。 |
nginx.ingress.kubernetes.io/cors-expose-headers |
ブラウザに公開されるレスポンスヘッダーです。 |
nginx.ingress.kubernetes.io/cors-allow-credentials |
CORS リクエストで認証情報(クッキー、認証ヘッダー)を許可するかどうかを指定します。 |
nginx.ingress.kubernetes.io/cors-max-age |
ブラウザが CORS プリフライト結果をキャッシュできる期間(秒単位)です。 |
リトライポリシー
| アノテーション | デフォルト | 説明 |
|---|---|---|
nginx.ingress.kubernetes.io/proxy-next-upstream-tries |
3 |
リトライ条件が満たされた場合のリトライ回数です。 |
nginx.ingress.kubernetes.io/proxy-next-upstream-timeout |
— | リトライシーケンス全体のタイムアウト(秒単位)です。デフォルト値はありません(無制限)。 |
nginx.ingress.kubernetes.io/proxy-next-upstream |
— | リトライ条件です。複数の値をスペースで区切って指定します。有効な値:error(接続失敗)、timeout(タイムアウト)、invalid_response(無効なステータスコード)、http_500、http_502、http_503、http_504、http_403、http_404、http_429、off(リトライを無効化)。 |
IP アドレスベースのアクセス制御
| アノテーション | タイプ | 説明 |
|---|---|---|
nginx.ingress.kubernetes.io/whitelist-source-range |
CIDR リスト | IP ホワイトリストです。リストに記載された IP アドレスまたは CIDR ブロックからのリクエストのみを許可します。複数のエントリーはカンマで区切ります。 |
nginx.ingress.kubernetes.io/denylist-source-range |
CIDR リスト | IP ブロックリストです。リストに記載された IP アドレスまたは CIDR ブロックからのリクエストを拒否します。複数のエントリーはカンマで区切ります。 |
例:特定の IP アドレスのみを許可
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-nginx
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/whitelist-source-range: "10.1.10.2"
spec:
ingressClassName: nginx
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: backend-svc
port:
number: 80
IP ホワイトリストをグローバルに適用するには、nginx-configuration ConfigMap を編集し、whitelist-source-range を設定してください。
トラフィックミラーリング
トラフィックミラーリングでは、本番環境のリクエストをシャドウ環境に複製し、実際のトラフィックに影響を与えることなく新しいバージョンまたは構成をテストできます。詳細な手順については、「Ingress コントローラーを使用してネットワークトラフィックをミラーリングする」をご参照ください。
| アノテーション | タイプ | 説明 |
|---|---|---|
nginx.ingress.kubernetes.io/mirror-target |
URL | ミラー送信先です。Service IP アドレスまたは外部 URL を受け入れます。元のリクエスト URI を追加するには $request_uri を使用します。例:https://test.env.com/$request_uri。 |
nginx.ingress.kubernetes.io/mirror-request-body |
"true" | "false" |
リクエストボディをミラーするかどうかを指定します。 |
nginx.ingress.kubernetes.io/mirror-host |
string | Host ヘッダーは、ミラーされたリクエストとともに送信されます。 |
セキュリティ保護
TLS を設定して、クライアントと NGINX Ingress コントローラー間、およびコントローラーとバックエンドサービス間の通信を暗号化します。詳細については、「NGINX Ingress コントローラーの暗号化」をご参照ください。
クライアントからゲートウェイへの暗号化
| アノテーション | スコープ | 説明 |
|---|---|---|
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。 |
nginx.ingress.kubernetes.io/auth-tls-secret |
ドメイン | 相互 TLS (mTLS) ハンドシェイク中にクライアント証明書を検証するために使用される認証局 (CA) 証明書を含むシークレットです。シークレットには、完全な CA チェーンを含む ca.crt ファイルが含まれている必要があります。 |
ゲートウェイからバックエンドへの暗号化
| アノテーション | スコープ | 説明 |
|---|---|---|
nginx.ingress.kubernetes.io/proxy-ssl-secret |
サービス | ゲートウェイがバックエンドサービスに提示するクライアント証明書を含むシークレットです。Privacy Enhanced Mail (PEM) 形式で、tls.crt(クライアント証明書)、tls.key(秘密鍵)、および ca.crt(信頼された CA 証明書)を含んでいる必要があります。"namespace/secretName" として指定します。 |
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/secretName 形式で、認証情報を含むシークレットの名前です。 |
nginx.ingress.kubernetes.io/auth-secret-type |
Ingress | シークレットデータの形式です。auth-file:auth キーに改行区切りの username:password エントリーが含まれます。auth-map:各キーがユーザー名で、対応する値がパスワードです。 |
nginx.ingress.kubernetes.io/auth-realm |
Ingress | 認証情報の入力を求める際にクライアントに表示される認証レルムです。 |
ベーシック認証の設定
-
htpasswdを使用してパスワードファイルを生成します:htpasswd -c auth jokerファイルを確認します:
cat auth # 期待される出力: joker:$apr1$R.G4krs/$hh0mX8xe4A3lYKMjvlVs1/ -
パスワードファイルからシークレットを作成します:
kubectl create secret generic basic-auth --from-file=auth -
Ingress にアノテーションを追加します:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress-nginx annotations: kubernetes.io/ingress.class: "nginx" nginx.ingress.kubernetes.io/auth-type: basic nginx.ingress.kubernetes.io/auth-secret: basic-auth spec: ingressClassName: nginx rules: - host: example.com http: paths: - path: / pathType: Prefix backend: service: name: backend-svc port: number: 80