Skip to content

Commit 57b8e77

Browse files
committed
TEST/MEDIUM: more examples and tests for combinations of hostname and match type
1 parent 33aba2f commit 57b8e77

206 files changed

Lines changed: 4741 additions & 1 deletion

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Echo Deployment
2+
3+
This example contains an example with:
4+
- Gateway Listeners:
5+
- Exact: `offload.haproxy`
6+
- Route:
7+
- Empty
8+
- MatchType:
9+
- Prefix: `/api/`
10+
11+
## How to deploy
12+
13+
```sh
14+
kubectl apply -f .
15+
```
16+
17+
## How to test e2e curls from your computer
18+
19+
### Success
20+
21+
22+
```sh
23+
curl --header "Host: offload.haproxy" http://127.0.0.1:31081/api/foo
24+
curl --header "Host: offload.haproxy" https://127.0.0.1:31444/api/foo -k
25+
26+
```
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
kind: Deployment
2+
apiVersion: apps/v1
3+
metadata:
4+
name: http-echo
5+
spec:
6+
replicas: 1
7+
selector:
8+
matchLabels:
9+
app: http-echo
10+
template:
11+
metadata:
12+
labels:
13+
app: http-echo
14+
spec:
15+
containers:
16+
- name: http-echo
17+
image: "haproxytech/http-echo:latest"
18+
imagePullPolicy: Never
19+
ports:
20+
- name: http
21+
containerPort: 8888
22+
protocol: TCP
23+
- name: https
24+
containerPort: 8443
25+
protocol: TCP
26+
---
27+
kind: Service
28+
apiVersion: v1
29+
metadata:
30+
name: http-echo
31+
spec:
32+
ports:
33+
- name: http
34+
protocol: TCP
35+
port: 80
36+
targetPort: http
37+
- name: https
38+
protocol: TCP
39+
port: 443
40+
targetPort: https
41+
selector:
42+
app: http-echo
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
apiVersion: gateway.networking.k8s.io/v1
2+
kind: Gateway
3+
metadata:
4+
name: hug-gateway
5+
spec:
6+
gatewayClassName: haproxy
7+
listeners:
8+
- name: http
9+
port: 31081
10+
protocol: HTTP
11+
allowedRoutes:
12+
kinds:
13+
- group: gateway.networking.k8s.io
14+
kind: HTTPRoute
15+
hostname: "offload.haproxy"
16+
- name: https
17+
protocol: HTTPS
18+
port: 31444
19+
tls:
20+
certificateRefs:
21+
- kind: Secret
22+
group: ""
23+
name: offload
24+
allowedRoutes:
25+
kinds:
26+
- group: gateway.networking.k8s.io
27+
kind: HTTPRoute
28+
hostname: "offload.haproxy"
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
apiVersion: gateway.networking.k8s.io/v1
2+
kind: GatewayClass
3+
metadata:
4+
name: haproxy
5+
spec:
6+
controllerName: gate.haproxy.org/hug
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
apiVersion: v1
2+
data:
3+
tls.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURGVENDQWYyZ0F3SUJBZ0lVWVhhTVN4QXAyVFVUY1FzVFBjVHFWUW1kNmpZd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0dqRVlNQllHQTFVRUF3d1BiMlptYkc5aFpDNW9ZWEJ5YjNoNU1CNFhEVEkxTURneU1URTFNamMxTjFvWApEVEkyTURneU1URTFNamMxTjFvd0dqRVlNQllHQTFVRUF3d1BiMlptYkc5aFpDNW9ZWEJ5YjNoNU1JSUJJakFOCkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXlLRHloS1BlTjh6V2pKdTFUdkhDcDA5ZzBDc1gKVWNvYzAyd0tKOVZqdW9VN0djRmRnWUx3UitRU1JJUWhrZEFYV25jdHpES25zNVVhblBEM0Y3SG5DM1krandNTgpZNFFOV0k0a0Z1Uk55RlRhTzV0cTRYSDk3WXRObmtFa1dOWGdUd0I5WFY0Y1duUWc3NmkrbDZkSDFBczI5aWtQClZVMzZqMVdVS3lINFlhbzlWNDZBWklCbE1IenltdW1HUzYyRVIrY0M4TTdsMlNwS1NHajl4TzROd0hzU1U5Z3AKQmhPTjFOY0NmSXN0elNHRFRBTjdxa2p0U0RpTjZXWGFobHRVM1RvYjZvZkI4Ukc0bVA3UGt1YzZIOHl4R3JwbQpLSUhRQkdsVHVUeHNSd3NiaktDSTY3dG1DY2VkYWlKemllS0JPbStaUExhQ002M2lpSVh6bTVlazR3SURBUUFCCm8xTXdVVEFkQmdOVkhRNEVGZ1FVY2NSNmtRMEJmc3NVUVUxdXFtS2x0eVdjVkRnd0h3WURWUjBqQkJnd0ZvQVUKY2NSNmtRMEJmc3NVUVUxdXFtS2x0eVdjVkRnd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBTkJna3Foa2lHOXcwQgpBUXNGQUFPQ0FRRUF4T3lCdUk1ZGxNdUZqQ2NIa2VySzZjcUY1T2NaY2p4eTRqM0J6NmtBZnV0Um1EYkNqU25rCjEvZUpISllhZWVmbnpYbWZXVXdyYzlFVWNWWVp3UDVWUXhnM3BEMklPbEE1RTNtZFc4OWkvM2tGUER6MUZOc2oKN0NVZUoyR3o3ZHBIbzh6UGcvcVV0bE9pbkdSV1BsN1lldTlHQjUxTTZYOEFRci9JVGxEa2dnRDF1T3pmakEvcgo0aE0rdG9KN2gvejd2ZnNjWWYvN2dlQWFFUVNRMVFiOVNDSjRFOGxsb1RiRnI3ZFZWMGFxV2J2b1ZSN3g0bUJyCkdDSTVSSmxFUGZZTDNyM21uSHFJZnJHdFBvN2lIa20xcisyRUQ4cnZvU3JhUGJSbmpSSStvcEhLSHBwTlpSMmkKMDQ0U01xcWZDMGNienRmVndRV1NIcnpqcmVaL1JHWmxZUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
4+
tls.key: LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV2d0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktrd2dnU2xBZ0VBQW9JQkFRRElvUEtFbzk0M3pOYU0KbTdWTzhjS25UMkRRS3hkUnloelRiQW9uMVdPNmhUc1p3VjJCZ3ZCSDVCSkVoQ0dSMEJkYWR5M01NcWV6bFJxYwo4UGNYc2VjTGRqNlBBdzFqaEExWWppUVc1RTNJVk5vN20ycmhjZjN0aTAyZVFTUlkxZUJQQUgxZFhoeGFkQ0R2CnFMNlhwMGZVQ3piMktROVZUZnFQVlpRcklmaGhxajFYam9Ca2dHVXdmUEthNllaTHJZUkg1d0x3enVYWktrcEkKYVAzRTdnM0FleEpUMkNrR0U0M1Uxd0o4aXkzTklZTk1BM3VxU08xSU9JM3BaZHFHVzFUZE9odnFoOEh4RWJpWQovcytTNXpvZnpMRWF1bVlvZ2RBRWFWTzVQR3hIQ3h1TW9JanJ1MllKeDUxcUluT0o0b0U2YjVrOHRvSXpyZUtJCmhmT2JsNlRqQWdNQkFBRUNnZ0VBT3VQcmEvM0J5N1ZId093dnN5V0owcHlkT1YxOHNkaFd6OFJsMHIxelVadXIKOW1wbzdRd25SYUx2cmNidko2TGlSLzYxcGJ1MHVDVHJNK2dUVDVRNzBvUjU1bmFwNW0wcmtiUGZhZ3pIdkNjVQpDKzBaMldVaGVTbXJ0ZWsvSndoWW1EZjNsSUY4Wnh5eFVrZkE4amo2LzRYdk15Qm9UTXpmNEZUcGNpTzlpY1R0CjRxbVZzRUY1VDdzaGZEOThYTEdwOUttYmdsczlWekI0aVBOcFF4ckgwakMzYmYvK3lyS1BHZStIa3dVR1BmdEMKQVRUTkpLQWF1QURScStHK1NWMDYrOXNheWgzYTNIS2d6dTRGaDM0RmRxTTZRTmkwSktwd04rM0JtQm1YUmRIMwpxYXB5Vmo0V2o5ZlJmNHpSSVB5RVkyV3oxZ2NyVm4yWTUrMlhPeFprMlFLQmdRRCtKMEZ5N2J2Z1BqUW00ZUpaCmxQNWM4bHptVHo2OE1Dc2M3QVJJUVU2VlBXb1JDV3NqR1JPYVIzckZrejNJdVp1ekNvN2ZUbldHVjkxTXRGeWwKR2gxYVFxQXlCcFNoUmhoaFFNOTlSblFNRVlTdjNidG9SQnBtNVdQeTJWM2Y1V3lPOXpJVUdlS0xqYUFVdnM4cQpicWZvTUdNenptb3VyNEtXLzZLckExeHFOd0tCZ1FES0ZpRytwUVhrZDE1Z3c0cWVzUXFZYm96cTM4ZW82blcyClluTDQyQnpsampsendRRkpjSlRoWVcvQTV5cEZ1U2duZDlWVGoxbVF6YTdLbVllMWxuWGtxSXZueFlVUFhTVGsKMHdzdlcrN0lSUks0NlBWbHBiZU5FdHV0c0Rtd0VTdlJNSkl2KzdHeENFNVNQR05rWThZWTZmbkdrVGVxOXpPZQowZzlvNVkzVXRRS0JnUURFVHhRSnJzRm9nd09MYVB5S0QwQ3VFSEpiWHFocGVaZERmcllNRFkyaVRzNm5uQ3ZKCjcydXB4ajU1YjdMUVlUVjNoTmM0ZXdUaUlPb0pmbUwxRUFmT0dScGRxYUdTTkc5T1oxNGRPSmNZWDB1cS84enEKeTNmTk5MQVArMys4R2h6UkRQVDhlOFgxM3czZ0dFWXlVMGlVV3hPMUIySVM3M1FpS0JEQW9SYjMzd0tCZ1FDbwppQUtHV2x0cXFENFdGcDFCTU1aMFR5WElMdTMwcWV1WE9jMUdSL3o1V0Q0RGtmOC92dHI2aHViTENqM1B2ZFdGCjdNTUVsN1VMTk8xRFd2eTViSXhQTUZ6VTRuM1FUVTZhWW9LZWNWM1d1UHdmSjNDWDM3Y091SjVwNEdDTHZCWTkKcy9NR2Z6STJRSVlJd1FIbTArcCtGb3JPbFliR1ZyZy9DRkgvbWdsSlRRS0JnUURRc2NtN0ZQVGo3RFh2QzYraQpxQVNadUZNcWQxVjlYVFBtdDFxZmlDekgrODFqTVZnOHE2eE5lQVhMTVhCV0pjSjRKcXJMTnlBSUx4M1ZZeWUzCmtWcDJsVFUzUFVyZUZBL0UvbWxLZk45cUszblVUZDhibjF1aExSZFRkYmZpOE9URzArQ2ZxSTN1WjUrWnJwWjMKU3BSRys3Mnc5TWV2cFdNcU90UFVObWpBWWc9PQotLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tCg==
5+
kind: Secret
6+
metadata:
7+
name: offload
8+
type: kubernetes.io/tls
9+
10+
11+
## CN offload.haproxy
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
apiVersion: gateway.networking.k8s.io/v1
2+
kind: HTTPRoute
3+
metadata:
4+
name: route-echo-http
5+
spec:
6+
parentRefs:
7+
- name: hug-gateway
8+
sectionName: http
9+
- name: hug-gateway
10+
sectionName: https
11+
rules:
12+
- matches:
13+
- path:
14+
type: PathPrefix
15+
value: /api/
16+
backendRefs:
17+
- name: http-echo
18+
port: 80
19+
---
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Echo Deployment
2+
3+
This example contains an example with:
4+
- Gateway Listeners:
5+
- Exact: `offload.haproxy`
6+
- Route:
7+
- Empty
8+
- MatchType:
9+
- Regex: `^/api/.*`
10+
11+
## How to deploy
12+
13+
```sh
14+
kubectl apply -f .
15+
```
16+
17+
## How to test e2e curls from your computer
18+
19+
### Success
20+
21+
22+
```sh
23+
curl --header "Host: offload.haproxy" http://127.0.0.1:31081/api/foo
24+
curl --header "Host: offload.haproxy" https://127.0.0.1:31444/api/foo -k
25+
26+
```
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
kind: Deployment
2+
apiVersion: apps/v1
3+
metadata:
4+
name: http-echo
5+
spec:
6+
replicas: 1
7+
selector:
8+
matchLabels:
9+
app: http-echo
10+
template:
11+
metadata:
12+
labels:
13+
app: http-echo
14+
spec:
15+
containers:
16+
- name: http-echo
17+
image: "haproxytech/http-echo:latest"
18+
imagePullPolicy: Never
19+
ports:
20+
- name: http
21+
containerPort: 8888
22+
protocol: TCP
23+
- name: https
24+
containerPort: 8443
25+
protocol: TCP
26+
---
27+
kind: Service
28+
apiVersion: v1
29+
metadata:
30+
name: http-echo
31+
spec:
32+
ports:
33+
- name: http
34+
protocol: TCP
35+
port: 80
36+
targetPort: http
37+
- name: https
38+
protocol: TCP
39+
port: 443
40+
targetPort: https
41+
selector:
42+
app: http-echo
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
apiVersion: gateway.networking.k8s.io/v1
2+
kind: Gateway
3+
metadata:
4+
name: hug-gateway
5+
spec:
6+
gatewayClassName: haproxy
7+
listeners:
8+
- name: http
9+
port: 31081
10+
protocol: HTTP
11+
allowedRoutes:
12+
kinds:
13+
- group: gateway.networking.k8s.io
14+
kind: HTTPRoute
15+
hostname: "offload.haproxy"
16+
- name: https
17+
protocol: HTTPS
18+
port: 31444
19+
tls:
20+
certificateRefs:
21+
- kind: Secret
22+
group: ""
23+
name: offload
24+
allowedRoutes:
25+
kinds:
26+
- group: gateway.networking.k8s.io
27+
kind: HTTPRoute
28+
hostname: "offload.haproxy"
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
apiVersion: gateway.networking.k8s.io/v1
2+
kind: GatewayClass
3+
metadata:
4+
name: haproxy
5+
spec:
6+
controllerName: gate.haproxy.org/hug

0 commit comments

Comments
 (0)