apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: path-rules
spec:
rules:
- host: "exact-path-rules"
http:
paths:
- path: /foo
pathType: Exact
backend:
service:
name: foo-exact
port:
number: 8080
- host: "prefix-path-rules"
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-prefix
port:
number: 8080
- path: /aaa/bbb
pathType: Prefix
backend:
service:
name: aaa-slash-bbb-prefix
port:
number: 8080
- path: /aaa
pathType: Prefix
backend:
service:
name: aaa-prefix
port:
number: 8080
- host: "mixed-path-rules"
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-prefix
port:
number: 8080
- path: /foo
pathType: Exact
backend:
service:
name: foo-exact
port:
number: 8080
- host: "trailing-slash-path-rules"
http:
paths:
- path: /aaa/bbb/
pathType: Prefix
backend:
service:
name: aaa-slash-bbb-slash-prefix
port:
number: 8080
- path: /foo/
pathType: Exact
backend:
service:
name: foo-slash-exact
port:
number: 8080
Feature: Path rules
An Ingress may define routing rules based on the request path. If the HTTP request path matches one of the paths in the Ingress objects, the traffic is routed to its backend service.
Scenarios
Status | Progress |
---|---|
Passed |
100.00% |
Failed |
0.00% |
(exact /foo matches request /foo)
(exact /foo does not match request /foo/)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: path-rules
spec:
rules:
- host: "exact-path-rules"
http:
paths:
- path: /foo
pathType: Exact
backend:
service:
name: foo-exact
port:
number: 8080
- host: "prefix-path-rules"
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-prefix
port:
number: 8080
- path: /aaa/bbb
pathType: Prefix
backend:
service:
name: aaa-slash-bbb-prefix
port:
number: 8080
- path: /aaa
pathType: Prefix
backend:
service:
name: aaa-prefix
port:
number: 8080
- host: "mixed-path-rules"
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-prefix
port:
number: 8080
- path: /foo
pathType: Exact
backend:
service:
name: foo-exact
port:
number: 8080
- host: "trailing-slash-path-rules"
http:
paths:
- path: /aaa/bbb/
pathType: Prefix
backend:
service:
name: aaa-slash-bbb-slash-prefix
port:
number: 8080
- path: /foo/
pathType: Exact
backend:
service:
name: foo-slash-exact
port:
number: 8080
(exact /foo does not match request /FOO)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: path-rules
spec:
rules:
- host: "exact-path-rules"
http:
paths:
- path: /foo
pathType: Exact
backend:
service:
name: foo-exact
port:
number: 8080
- host: "prefix-path-rules"
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-prefix
port:
number: 8080
- path: /aaa/bbb
pathType: Prefix
backend:
service:
name: aaa-slash-bbb-prefix
port:
number: 8080
- path: /aaa
pathType: Prefix
backend:
service:
name: aaa-prefix
port:
number: 8080
- host: "mixed-path-rules"
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-prefix
port:
number: 8080
- path: /foo
pathType: Exact
backend:
service:
name: foo-exact
port:
number: 8080
- host: "trailing-slash-path-rules"
http:
paths:
- path: /aaa/bbb/
pathType: Prefix
backend:
service:
name: aaa-slash-bbb-slash-prefix
port:
number: 8080
- path: /foo/
pathType: Exact
backend:
service:
name: foo-slash-exact
port:
number: 8080
(exact /foo does not match request /bar)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: path-rules
spec:
rules:
- host: "exact-path-rules"
http:
paths:
- path: /foo
pathType: Exact
backend:
service:
name: foo-exact
port:
number: 8080
- host: "prefix-path-rules"
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-prefix
port:
number: 8080
- path: /aaa/bbb
pathType: Prefix
backend:
service:
name: aaa-slash-bbb-prefix
port:
number: 8080
- path: /aaa
pathType: Prefix
backend:
service:
name: aaa-prefix
port:
number: 8080
- host: "mixed-path-rules"
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-prefix
port:
number: 8080
- path: /foo
pathType: Exact
backend:
service:
name: foo-exact
port:
number: 8080
- host: "trailing-slash-path-rules"
http:
paths:
- path: /aaa/bbb/
pathType: Prefix
backend:
service:
name: aaa-slash-bbb-slash-prefix
port:
number: 8080
- path: /foo/
pathType: Exact
backend:
service:
name: foo-slash-exact
port:
number: 8080
(prefix /foo matches request /foo)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: path-rules
spec:
rules:
- host: "exact-path-rules"
http:
paths:
- path: /foo
pathType: Exact
backend:
service:
name: foo-exact
port:
number: 8080
- host: "prefix-path-rules"
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-prefix
port:
number: 8080
- path: /aaa/bbb
pathType: Prefix
backend:
service:
name: aaa-slash-bbb-prefix
port:
number: 8080
- path: /aaa
pathType: Prefix
backend:
service:
name: aaa-prefix
port:
number: 8080
- host: "mixed-path-rules"
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-prefix
port:
number: 8080
- path: /foo
pathType: Exact
backend:
service:
name: foo-exact
port:
number: 8080
- host: "trailing-slash-path-rules"
http:
paths:
- path: /aaa/bbb/
pathType: Prefix
backend:
service:
name: aaa-slash-bbb-slash-prefix
port:
number: 8080
- path: /foo/
pathType: Exact
backend:
service:
name: foo-slash-exact
port:
number: 8080
(prefix /foo matches request /foo/)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: path-rules
spec:
rules:
- host: "exact-path-rules"
http:
paths:
- path: /foo
pathType: Exact
backend:
service:
name: foo-exact
port:
number: 8080
- host: "prefix-path-rules"
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-prefix
port:
number: 8080
- path: /aaa/bbb
pathType: Prefix
backend:
service:
name: aaa-slash-bbb-prefix
port:
number: 8080
- path: /aaa
pathType: Prefix
backend:
service:
name: aaa-prefix
port:
number: 8080
- host: "mixed-path-rules"
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-prefix
port:
number: 8080
- path: /foo
pathType: Exact
backend:
service:
name: foo-exact
port:
number: 8080
- host: "trailing-slash-path-rules"
http:
paths:
- path: /aaa/bbb/
pathType: Prefix
backend:
service:
name: aaa-slash-bbb-slash-prefix
port:
number: 8080
- path: /foo/
pathType: Exact
backend:
service:
name: foo-slash-exact
port:
number: 8080
(prefix /foo does not match request /FOO)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: path-rules
spec:
rules:
- host: "exact-path-rules"
http:
paths:
- path: /foo
pathType: Exact
backend:
service:
name: foo-exact
port:
number: 8080
- host: "prefix-path-rules"
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-prefix
port:
number: 8080
- path: /aaa/bbb
pathType: Prefix
backend:
service:
name: aaa-slash-bbb-prefix
port:
number: 8080
- path: /aaa
pathType: Prefix
backend:
service:
name: aaa-prefix
port:
number: 8080
- host: "mixed-path-rules"
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-prefix
port:
number: 8080
- path: /foo
pathType: Exact
backend:
service:
name: foo-exact
port:
number: 8080
- host: "trailing-slash-path-rules"
http:
paths:
- path: /aaa/bbb/
pathType: Prefix
backend:
service:
name: aaa-slash-bbb-slash-prefix
port:
number: 8080
- path: /foo/
pathType: Exact
backend:
service:
name: foo-slash-exact
port:
number: 8080
(prefix /aaa/bbb matches request /aaa/bbb)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: path-rules
spec:
rules:
- host: "exact-path-rules"
http:
paths:
- path: /foo
pathType: Exact
backend:
service:
name: foo-exact
port:
number: 8080
- host: "prefix-path-rules"
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-prefix
port:
number: 8080
- path: /aaa/bbb
pathType: Prefix
backend:
service:
name: aaa-slash-bbb-prefix
port:
number: 8080
- path: /aaa
pathType: Prefix
backend:
service:
name: aaa-prefix
port:
number: 8080
- host: "mixed-path-rules"
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-prefix
port:
number: 8080
- path: /foo
pathType: Exact
backend:
service:
name: foo-exact
port:
number: 8080
- host: "trailing-slash-path-rules"
http:
paths:
- path: /aaa/bbb/
pathType: Prefix
backend:
service:
name: aaa-slash-bbb-slash-prefix
port:
number: 8080
- path: /foo/
pathType: Exact
backend:
service:
name: foo-slash-exact
port:
number: 8080
(prefix /aaa/bbb matches request /aaa/bbb/ccc)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: path-rules
spec:
rules:
- host: "exact-path-rules"
http:
paths:
- path: /foo
pathType: Exact
backend:
service:
name: foo-exact
port:
number: 8080
- host: "prefix-path-rules"
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-prefix
port:
number: 8080
- path: /aaa/bbb
pathType: Prefix
backend:
service:
name: aaa-slash-bbb-prefix
port:
number: 8080
- path: /aaa
pathType: Prefix
backend:
service:
name: aaa-prefix
port:
number: 8080
- host: "mixed-path-rules"
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-prefix
port:
number: 8080
- path: /foo
pathType: Exact
backend:
service:
name: foo-exact
port:
number: 8080
- host: "trailing-slash-path-rules"
http:
paths:
- path: /aaa/bbb/
pathType: Prefix
backend:
service:
name: aaa-slash-bbb-slash-prefix
port:
number: 8080
- path: /foo/
pathType: Exact
backend:
service:
name: foo-slash-exact
port:
number: 8080
(prefix /aaa matches request /aaa/ccc)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: path-rules
spec:
rules:
- host: "exact-path-rules"
http:
paths:
- path: /foo
pathType: Exact
backend:
service:
name: foo-exact
port:
number: 8080
- host: "prefix-path-rules"
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-prefix
port:
number: 8080
- path: /aaa/bbb
pathType: Prefix
backend:
service:
name: aaa-slash-bbb-prefix
port:
number: 8080
- path: /aaa
pathType: Prefix
backend:
service:
name: aaa-prefix
port:
number: 8080
- host: "mixed-path-rules"
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-prefix
port:
number: 8080
- path: /foo
pathType: Exact
backend:
service:
name: foo-exact
port:
number: 8080
- host: "trailing-slash-path-rules"
http:
paths:
- path: /aaa/bbb/
pathType: Prefix
backend:
service:
name: aaa-slash-bbb-slash-prefix
port:
number: 8080
- path: /foo/
pathType: Exact
backend:
service:
name: foo-slash-exact
port:
number: 8080
(prefix /aaa does not match request /aaaccc)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: path-rules
spec:
rules:
- host: "exact-path-rules"
http:
paths:
- path: /foo
pathType: Exact
backend:
service:
name: foo-exact
port:
number: 8080
- host: "prefix-path-rules"
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-prefix
port:
number: 8080
- path: /aaa/bbb
pathType: Prefix
backend:
service:
name: aaa-slash-bbb-prefix
port:
number: 8080
- path: /aaa
pathType: Prefix
backend:
service:
name: aaa-prefix
port:
number: 8080
- host: "mixed-path-rules"
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-prefix
port:
number: 8080
- path: /foo
pathType: Exact
backend:
service:
name: foo-exact
port:
number: 8080
- host: "trailing-slash-path-rules"
http:
paths:
- path: /aaa/bbb/
pathType: Prefix
backend:
service:
name: aaa-slash-bbb-slash-prefix
port:
number: 8080
- path: /foo/
pathType: Exact
backend:
service:
name: foo-slash-exact
port:
number: 8080
(prefix /foo matches request /foo/)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: path-rules
spec:
rules:
- host: "exact-path-rules"
http:
paths:
- path: /foo
pathType: Exact
backend:
service:
name: foo-exact
port:
number: 8080
- host: "prefix-path-rules"
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-prefix
port:
number: 8080
- path: /aaa/bbb
pathType: Prefix
backend:
service:
name: aaa-slash-bbb-prefix
port:
number: 8080
- path: /aaa
pathType: Prefix
backend:
service:
name: aaa-prefix
port:
number: 8080
- host: "mixed-path-rules"
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-prefix
port:
number: 8080
- path: /foo
pathType: Exact
backend:
service:
name: foo-exact
port:
number: 8080
- host: "trailing-slash-path-rules"
http:
paths:
- path: /aaa/bbb/
pathType: Prefix
backend:
service:
name: aaa-slash-bbb-slash-prefix
port:
number: 8080
- path: /foo/
pathType: Exact
backend:
service:
name: foo-slash-exact
port:
number: 8080
(exact /foo matches request /foo)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: path-rules
spec:
rules:
- host: "exact-path-rules"
http:
paths:
- path: /foo
pathType: Exact
backend:
service:
name: foo-exact
port:
number: 8080
- host: "prefix-path-rules"
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-prefix
port:
number: 8080
- path: /aaa/bbb
pathType: Prefix
backend:
service:
name: aaa-slash-bbb-prefix
port:
number: 8080
- path: /aaa
pathType: Prefix
backend:
service:
name: aaa-prefix
port:
number: 8080
- host: "mixed-path-rules"
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-prefix
port:
number: 8080
- path: /foo
pathType: Exact
backend:
service:
name: foo-exact
port:
number: 8080
- host: "trailing-slash-path-rules"
http:
paths:
- path: /aaa/bbb/
pathType: Prefix
backend:
service:
name: aaa-slash-bbb-slash-prefix
port:
number: 8080
- path: /foo/
pathType: Exact
backend:
service:
name: foo-slash-exact
port:
number: 8080
(prefix /aaa/bbb/ matches request /aaa/bbb)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: path-rules
spec:
rules:
- host: "exact-path-rules"
http:
paths:
- path: /foo
pathType: Exact
backend:
service:
name: foo-exact
port:
number: 8080
- host: "prefix-path-rules"
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-prefix
port:
number: 8080
- path: /aaa/bbb
pathType: Prefix
backend:
service:
name: aaa-slash-bbb-prefix
port:
number: 8080
- path: /aaa
pathType: Prefix
backend:
service:
name: aaa-prefix
port:
number: 8080
- host: "mixed-path-rules"
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-prefix
port:
number: 8080
- path: /foo
pathType: Exact
backend:
service:
name: foo-exact
port:
number: 8080
- host: "trailing-slash-path-rules"
http:
paths:
- path: /aaa/bbb/
pathType: Prefix
backend:
service:
name: aaa-slash-bbb-slash-prefix
port:
number: 8080
- path: /foo/
pathType: Exact
backend:
service:
name: foo-slash-exact
port:
number: 8080
(prefix /aaa/bbb/ matches request /aaa/bbb/)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: path-rules
spec:
rules:
- host: "exact-path-rules"
http:
paths:
- path: /foo
pathType: Exact
backend:
service:
name: foo-exact
port:
number: 8080
- host: "prefix-path-rules"
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-prefix
port:
number: 8080
- path: /aaa/bbb
pathType: Prefix
backend:
service:
name: aaa-slash-bbb-prefix
port:
number: 8080
- path: /aaa
pathType: Prefix
backend:
service:
name: aaa-prefix
port:
number: 8080
- host: "mixed-path-rules"
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-prefix
port:
number: 8080
- path: /foo
pathType: Exact
backend:
service:
name: foo-exact
port:
number: 8080
- host: "trailing-slash-path-rules"
http:
paths:
- path: /aaa/bbb/
pathType: Prefix
backend:
service:
name: aaa-slash-bbb-slash-prefix
port:
number: 8080
- path: /foo/
pathType: Exact
backend:
service:
name: foo-slash-exact
port:
number: 8080
(exact /foo/ does not match request /foo)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: path-rules
spec:
rules:
- host: "exact-path-rules"
http:
paths:
- path: /foo
pathType: Exact
backend:
service:
name: foo-exact
port:
number: 8080
- host: "prefix-path-rules"
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-prefix
port:
number: 8080
- path: /aaa/bbb
pathType: Prefix
backend:
service:
name: aaa-slash-bbb-prefix
port:
number: 8080
- path: /aaa
pathType: Prefix
backend:
service:
name: aaa-prefix
port:
number: 8080
- host: "mixed-path-rules"
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-prefix
port:
number: 8080
- path: /foo
pathType: Exact
backend:
service:
name: foo-exact
port:
number: 8080
- host: "trailing-slash-path-rules"
http:
paths:
- path: /aaa/bbb/
pathType: Prefix
backend:
service:
name: aaa-slash-bbb-slash-prefix
port:
number: 8080
- path: /foo/
pathType: Exact
backend:
service:
name: foo-slash-exact
port:
number: 8080