Simple Gateway
Deploying a simple Gateway¶
Just like the official website describes here, a Gateway can be deployed as an ingress. In this page, we provide another version of a simple gateway deployment.
In this usecase, we will have a preliminary understanding of the definition methods of HTTPRoute and related resources, and understand how HTTPRoute achieves the routing and forwarding capability of requests.
To demo this simple HTTPRoute usecase, we will create an HTTPRoute resource that defines traffic forwarding rules, and we need to create the GatewayClass and Gateway resource on which it depends. To demonstrate the effect, we also need to create a Service resource.
When we access the ingress IP defined in the Gateway, the traffic is forwarded to the backend service by the rule defined in HTTPRoute.
gatewayclass.yaml
---
apiVersion: gateway.networking.k8s.io/v1beta1
kind: GatewayClass
metadata:
name: bigip
spec:
controllerName: f5.io/gateway-controller-name
gateway.yaml
---
apiVersion: gateway.networking.k8s.io/v1beta1
kind: Gateway
metadata:
name: mygateway
labels:
domain: k8s-gateway
spec:
gatewayClassName: bigip
listeners:
- name: http
port: 80
protocol: HTTP
addresses:
- value: 10.250.17.120
httproute.yaml
---
apiVersion: gateway.networking.k8s.io/v1beta1
kind: HTTPRoute
metadata:
name: myhttproute
spec:
parentRefs:
- name: mygateway
sectionName: http
hostnames:
- gateway.test.automation
rules:
- matches:
- path:
type: PathPrefix
value: /test
headers:
- name: svc
value: coffee
filters:
- type: RequestHeaderModifier
requestHeaderModifier:
add:
- name: tester
value: f5
backendRefs:
- name: coffee
port: 80
Refer here for coffee definition.
In the above demo, the rules in httproute.yaml contains two parts: matches and filters, matches defines route matching rules, and filters defines the customization process for requests.
- matches: /test path also contains svc==coffee in the header
- filters: Add a new header tester = f5
therefore,
$ curl 10.250.17.120/test -H "Host: gateway.test.automation" -H "svc: coffee"
{
"queries": {},
"headers": {
"Host": "gateway.test.automation",
"User-Agent": "curl/7.79.1","Accept":"*/*",
"svc": "coffee",
"tester": "f5"
},
"version": "1.1",
"method": "GET",
"remote-address": "10.42.7.0",
"uri": "/test",
"server_name": "COFFEE"
}
Created: February 6, 2023 16:16:03