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
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