controlplane ~ ➜ k get ingress ingress-app -o yaml -n app-space
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
creationTimestamp: "2023-02-21T08:24:49Z"
generation: 1
name: ingress-app
namespace: app-space
resourceVersion: "2489"
uid: 84e4eba1-3b79-4d41-88ea-f4e8262ae9b5
spec:
rules:
- http:
paths:
- backend:
service:
name: wear-service
port:
number: 8080
path: /wear
pathType: Exact
- backend:
service:
name: video-service
port:
number: 8080
path: /watch
pathType: Exact
status:
loadBalancer:
ingress:
- ip: 10.106.101.255
controlplane ~ ➜
Ingressのそれぞれのパスは対応するパスのタイプを持ちます。
pathType
が明示的に指定されていないパスはバリデーションに通りません。サポートされているパスのタイプは3種類あります。
ImplementationSpecific
(実装に特有): このパスタイプでは、パスとの一致はIngressClassに依存します。Ingressの実装はこれを独立したpathType
と扱うことも、Prefix
やExact
と同一のパスタイプと扱うこともできます。Exact
: 大文字小文字を区別して完全に一致するURLパスと一致します。Prefix
:/
で分割されたURLと前方一致で一致します。大文字小文字は区別され、パスの要素対要素で比較されます。パス要素は/
で分割されたパスの中のラベルのリストを参照します。リクエストがパス p に一致するのは、Ingressのパス p がリクエストパス p と要素単位で前方一致する場合です。
Exactになっていれば、前方一致ではなく完全一致になるはずだが…
Lab環境でテストしたところ 前方一致でアクセスできた。