Gateway health checks
Enable a health check plugin on your gateway proxy to respond with common HTTP codes.
About
Gloo Gateway includes an HTTP health checking plug-in that you can enable for a gateway proxy listener. This plug-in responds to health check requests directly with either a 200 OK or 503 Service Unavailable message, depending on the current draining state of Envoy.
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.
Configure a health check on a gateway
Create an HTTPListenerOption resource to configure a health check path for the HTTP or HTTPS listener on the gateway. You can define any path, such as
/check/healthz.kubectl apply -f- <<EOF apiVersion: gateway.solo.io/v1 kind: HttpListenerOption metadata: name: healthcheck namespace: gloo-system spec: targetRefs: - group: gateway.networking.k8s.io kind: Gateway name: http options: healthCheck: path: <path> EOFTo test the health check, drain the Envoy connections by sending an
HTTP POSTrequest to the/healthcheck/failendpoint of the Envoy admin port.- Port-forward the
gloo-gateway-httpdeployment on port 19000.kubectl port-forward deploy/gloo-proxy-http -n gloo-system 19000 & - Send an
HTTP POSTrequest to the/healthcheck/failendpoint. This causes Envoy connections to begin draining.curl -X POST 127.0.0.1:19000/healthcheck/fail
- Port-forward the
Send a request to the health check path. Because Envoy is in a draining state, the
503 Service Unavailablemessage is returned.After you finish testing, resume Envoy connections by sending an
HTTP POSTrequest to the/healthcheck/okendpoint of the Envoy admin port.curl -X POST 127.0.0.1:19000/healthcheck/okSend another request to the health check path. Because Envoy is operating normally, the
200 OKmessage is returned.Stop port-forwarding the
gloo-gateway-httpdeployment.lsof -ti:19000 | xargs kill -9
Cleanup
You can optionally remove the resources that you set up as part of this guide.
kubectl delete HttpListenerOption healthcheck -n gloo-system