Path
Match the targeted path of an incoming request against specific path criteria.
For more information, see the Kubernetes Gateway API documentation.
Before you begin
Follow the Get started guide to install Gloo Gateway, set up a gateway resource, and deploy the httpbin sample app.
Get the external address of the gateway and save it in an environment variable.
Set up URI path matching
Create an HTTPRoute resource for the
match.example
domain that matches incoming requests on the/status/200
path.kubectl apply -f- <<EOF apiVersion: gateway.networking.k8s.io/v1beta1 kind: HTTPRoute metadata: name: httpbin-match namespace: httpbin spec: parentRefs: - name: http namespace: gloo-system hostnames: - match.example rules: - matches: - path: type: Exact value: /status/200 backendRefs: - name: httpbin port: 8000 EOF
Send a request to the
/status/200
path of the httpbin app on thematch.example
domain. Verify that you get back a 200 HTTP response code.Example output:
* Mark bundle as not supporting multiuse < HTTP/1.1 200 OK HTTP/1.1 200 OK < access-control-allow-credentials: true access-control-allow-credentials: true < access-control-allow-origin: * access-control-allow-origin: * < date: Sat, 04 Nov 2023 03:19:26 GMT date: Sat, 04 Nov 2023 03:19:26 GMT < content-length: 0 content-length: 0 < x-envoy-upstream-service-time: 1 x-envoy-upstream-service-time: 1 < server: envoy server: envoy
Send another request to the httpbin app. This time, use the
/headers
path. Because this path is not specified in the HTTPRoute, the request fails and a 404 HTTP response code is returned.Example output:
* Mark bundle as not supporting multiuse < HTTP/1.1 404 Not Found HTTP/1.1 404 Not Found < date: Tue, 23 Apr 2024 18:52:01 GMT date: Tue, 23 Apr 2024 18:52:01 GMT < server: envoy server: envoy < content-length: 0 content-length: 0
Cleanup
You can optionally delete the HTTP route that you created as part of this guide.
kubectl delete httproute httpbin-match -n httpbin