istio
1apiVersion: gateway.networking.k8s.io/v1beta1
2kind: GatewayClass
3metadata:
4name: istio
5spec:
6controllerName: istio.io/gateway-controller
7---
8apiVersion: gateway.networking.k8s.io/v1beta1
9kind: Gateway
10metadata:
11name: gateway
12namespace: istio-system
13spec:
14addresses:
15- value: istio-ingressgateway
16type: Hostname
17gatewayClassName: istio
18listeners:
19- name: default
20hostname: "*.domain.example"
21port: 80
22protocol: HTTP
23allowedRoutes:
24namespaces:
25from: All
26---
27apiVersion: gateway.networking.k8s.io/v1beta1
28kind: HTTPRoute
29metadata:
30name: http
31namespace: default
32spec:
33parentRefs:
34- name: gateway
35namespace: istio-system
36hostnames: ["first.domain.example", "another.domain.example"]
37rules:
38- matches:
39- path:
40type: PathPrefix
41value: /get
42headers:
43- name: my-header
44value: some-value
45type: Exact
46filters:
47- type: RequestHeaderModifier
48requestHeaderModifier:
49add:
50- name: my-added-header
51value: added-value
52remove: [my-removed-header]
53- type: ResponseHeaderModifier
54responseHeaderModifier:
55add:
56- name: my-added-resp-header
57value: added-resp-value
58remove: [my-removed-header]
59backendRefs:
60- name: httpbin
61port: 80
62---
63apiVersion: gateway.networking.k8s.io/v1beta1
64kind: HTTPRoute
65metadata:
66name: http2
67namespace: default
68spec:
69parentRefs:
70- name: gateway
71namespace: istio-system
72hostnames: ["second.domain.example"]
73rules:
74- matches:
75- path:
76type: PathPrefix
77value: /second
78backendRefs:
79- name: httpbin-second
80port: 80
81- matches:
82- path:
83type: PathPrefix
84value: /
85backendRefs:
86- name: httpbin-wildcard
87port: 80
88---
89apiVersion: gateway.networking.k8s.io/v1beta1
90kind: HTTPRoute
91metadata:
92name: redirect
93namespace: default
94spec:
95parentRefs:
96- name: gateway
97namespace: istio-system
98rules:
99- filters:
100- type: RequestRedirect
101requestRedirect:
102port: 8080
103statusCode: 302
104scheme: https
105path:
106type: ReplaceFullPath
107replaceFullPath: /replace-full
108---
109apiVersion: gateway.networking.k8s.io/v1beta1
110kind: HTTPRoute
111metadata:
112name: redirect-prefix-replace
113namespace: default
114spec:
115parentRefs:
116- name: gateway
117namespace: istio-system
118hostnames: ["redirect.domain.example"]
119rules:
120- matches:
121- path:
122type: PathPrefix
123value: /original
124filters:
125- type: RequestRedirect
126requestRedirect:
127port: 8080
128statusCode: 302
129scheme: https
130path:
131type: ReplacePrefixMatch
132replacePrefixMatch: /replacement
133---
134apiVersion: gateway.networking.k8s.io/v1beta1
135kind: HTTPRoute
136metadata:
137name: rewrite
138namespace: default
139spec:
140parentRefs:
141- name: gateway
142namespace: istio-system
143rules:
144- matches:
145- path:
146type: PathPrefix
147value: /prefix-original
148name: prefix-path-rewrite
149filters:
150- type: URLRewrite
151urlRewrite:
152hostname: "new.example.com"
153path:
154type: ReplacePrefixMatch
155replacePrefixMatch: "/replacement"
156backendRefs:
157- name: httpbin
158port: 80
159- matches:
160- path:
161type: PathPrefix
162value: /prefix-to-be-removed
163name: prefix-to-be-removed
164filters:
165- type: URLRewrite
166urlRewrite:
167path:
168type: ReplacePrefixMatch
169replacePrefixMatch: ""
170backendRefs:
171- name: httpbin
172port: 80
173- matches:
174- path:
175type: PathPrefix
176value: /full-original
177name: full-path-rewrite
178filters:
179- type: URLRewrite
180urlRewrite:
181hostname: "new.example.com"
182path:
183type: ReplaceFullPath
184replaceFullPath: "/replacement"
185backendRefs:
186- name: httpbin
187port: 80
188---
189apiVersion: gateway.networking.k8s.io/v1beta1
190kind: HTTPRoute
191metadata:
192name: mirror
193namespace: default
194spec:
195parentRefs:
196- name: gateway
197namespace: istio-system
198rules:
199- filters:
200- type: RequestMirror
201requestMirror:
202backendRef:
203name: httpbin-mirror
204port: 80
205- type: RequestMirror
206requestMirror:
207backendRef:
208name: httpbin-second
209port: 80
210backendRefs:
211- name: httpbin
212port: 80
213---
214apiVersion: gateway.networking.k8s.io/v1beta1
215kind: HTTPRoute
216metadata:
217name: http-not-selected
218namespace: default
219spec:
220parentRefs:
221- name: gateway
222namespace: istio-system
223hostnames: ["should.not.select"]
224rules:
225- matches:
226- path:
227type: PathPrefix
228value: /get
229backendRefs:
230- name: httpbin-bad
231port: 80
232---
233apiVersion: gateway.networking.k8s.io/v1beta1
234kind: HTTPRoute
235metadata:
236name: http-timeout-request
237namespace: default
238spec:
239parentRefs:
240- name: gateway
241namespace: istio-system
242hostnames: ["timeout.domain.example"]
243rules:
244- matches:
245- path:
246type: PathPrefix
247value: /get
248backendRefs:
249- name: httpbin
250port: 80
251timeouts:
252request: 1ms
253---
254apiVersion: gateway.networking.k8s.io/v1beta1
255kind: HTTPRoute
256metadata:
257name: http-timeout-backend-request
258namespace: default
259spec:
260parentRefs:
261- name: gateway
262namespace: istio-system
263hostnames: ["timeout-backend.domain.example"]
264rules:
265- matches:
266- path:
267type: PathPrefix
268value: /get
269backendRefs:
270- name: httpbin
271port: 80
272timeouts:
273request: 2ms
274backendRequest: 1ms
275